Skip to content

Commit

Permalink
feat: added client workflows for docs and release [WTEL-5425](https:/…
Browse files Browse the repository at this point in the history
  • Loading branch information
dlohvinov committed Nov 2, 2024
1 parent 696fcd6 commit bd84946
Show file tree
Hide file tree
Showing 4 changed files with 428 additions and 10 deletions.
93 changes: 83 additions & 10 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,93 @@
name: Admin CI
# 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 tests and docs

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

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

build_docs:
needs: [test]
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:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '18.x'
- run: npm ci
- run: npm run test:unit
- 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

160 changes: 160 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# 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

Loading

0 comments on commit bd84946

Please sign in to comment.