Skip to content

fix: fixed release workflow [WTEL-5425](https://webitel.atlassian.net… #2

fix: fixed release workflow [WTEL-5425](https://webitel.atlassian.net…

fix: fixed release workflow [WTEL-5425](https://webitel.atlassian.net… #2

Workflow file for this run

# NOTES:
# generating changelog for release is performed twice because first changelog generates for release notes,
# so it runs before release step, and second changelog generates for updating CHANGELOG.md file, so it runs after release step.
# if i'd try to generate changelog once, changes will be marked as "master" branch changes, cause there's no new tag yet.
name: webitel ui release
on:
push:
branches: [ release ]
jobs:
install_deps:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache node_modules
uses: actions/cache@v4
id: cache_node_modules
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-lock.json') }}
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
if: steps.cache_node_modules.outputs.cache-hit != 'true'
run: npm ci
test:
needs: [install_deps]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-lock.json') }}
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- run: npm run test:unit
release:
needs: [install_deps, test]
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: get prevTag
id: prevTag
uses: "WyriHaximus/github-action-get-previous-tag@v1"
# for release notes // why 2 changelogs? see NOTES
- name: generate Release Changelog
id: changelog
uses: requarks/changelog-action@v1
continue-on-error: true
with:
writeToFile: false
reverseOrder: true
excludeTypes:
token: ${{ github.token }}
fromTag: ${{ github.ref_name }}
toTag: ${{ steps.prevTag.outputs.tag }}
- name: get-npm-version
id: package-version
uses: martinbeentjes/[email protected]
- name: Create release
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: "v${{ steps.package-version.outputs.current-version}}"
name: "@webitel/client v${{ steps.package-version.outputs.current-version}}"
body: ${{ steps.changelog.outputs.changes }}
# update tags list after prev step release, so that we fetch new tag, created by prev step
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: get newTag
id: newTag
uses: "WyriHaximus/github-action-get-previous-tag@v1"
# update CHANGELOG.md file // why 2 changelogs? see NOTES
- name: update Release Changelog
id: update-changelog
uses: requarks/changelog-action@v1
continue-on-error: true
with:
reverseOrder: true
excludeTypes: build
token: ${{ github.token }}
fromTag: ${{ steps.newTag.outputs.tag }}
toTag: ${{ steps.prevTag.outputs.tag }}
- name: commit changelog
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: autoupdate changelog
file_pattern: 'CHANGELOG.md'
push_options: --force
build_docs:
needs: [release]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-lock.json') }}
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Build docs
run: npm run docs:build
- name: Upload Artifact
uses: actions/upload-pages-artifact@v3
with:
name: docs
path: docs/.vitepress/dist
deploy:
needs: [build_docs]
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
runs-on: ubuntu-latest
steps:
- name: setup Github Pages
id: setup_pages
uses: actions/configure-pages@v4
- name: deploy to Github Pages
id: deploy_pages
uses: actions/deploy-pages@v4
with:
artifact_name: docs