Skip to content

ci(gh-actions): change release workflow (#962) #2659

ci(gh-actions): change release workflow (#962)

ci(gh-actions): change release workflow (#962) #2659

Workflow file for this run

name: Node.js CI/CD
on:
push:
branches:
- main
pull_request:
jobs:
lint:
name: Check Format
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Use Node.js ${{ vars.NODE_VERSION }}
uses: actions/setup-node@v4.0.2
with:
node-version: ${{ vars.NODE_VERSION }}
cache: npm
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Lint
run: npm run lint
build:
name: Build Action Assets
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Use Node.js ${{ vars.NODE_VERSION }}
uses: actions/setup-node@v4.0.2
with:
node-version: ${{ vars.NODE_VERSION }}
cache: npm
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Build
run: npm run build
- name: Upload Action Assets
uses: actions/upload-artifact@v4.3.3
with:
name: dist
path: dist
unit-test:
name: Unit Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Use Node.js ${{ vars.NODE_VERSION }}
uses: actions/setup-node@v4.0.2
with:
node-version: ${{ vars.NODE_VERSION }}
cache: npm
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Test
run: npm test -- --coverage
- name: Report Code Coverage to codecov
uses: codecov/codecov-action@v4.3.1
with:
token: ${{ secrets.CODECOV_TOKEN }}
integration-test:
name: Integration Test
needs: [build]
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- ubuntu-20.04
- macos-12
- macos-11
- windows-2022
- windows-2019
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
- name: Download Action Assets
uses: actions/download-artifact@v4.1.7
with:
name: dist
path: dist
- name: Execute GitHub Action
uses: ./
with:
image-url: ${{ vars.LGTM_IMAGE_URI }}
diff:
name: Compare Build Assets
if: github.event_name == 'pull_request'
needs: [build]
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4.1.4
with:
ref: main
- name: Use Node.js ${{ vars.NODE_VERSION }}
uses: actions/setup-node@v4.0.2
with:
node-version: ${{ vars.NODE_VERSION }}
cache: npm
- name: Install Dependencies
run: npm ci --ignore-scripts
- name: Build Action Assets on main
run: npm run build
- name: Download Current Action Assets
uses: actions/download-artifact@v4.1.7
with:
name: dist
path: current
- name: Setup js-beautify to compare minified js files
run: |
npm install --global js-beautify
git config --local diff.minjs.textconv js-beautify
echo "index.js diff=minjs" > .gitattributes
- name: Compare
id: compare
continue-on-error: true
run: |
echo '# Compare ${{ github.sha }} to main' >> $GITHUB_STEP_SUMMARY
echo '```diff' >> $GITHUB_STEP_SUMMARY
git diff --no-index ./dist/ ./current/ >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
git diff --no-index --exit-code ./dist/ ./current/
- name: Report diff
if: steps.compare.outcome == 'failure'
uses: actions/github-script@v7
with:
script: |
const message = 'There is a difference in the build results.'
core.warning(message)
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `${message} [Show More](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})`
})
deploy:
name: Deploy to Release branch
if: github.event_name == 'push'
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Checkout Release Branch
uses: actions/checkout@v4.1.4
with:
ref: ${{ vars.RELEASE_BRANCH }}
- name: Checkout Documents from main
uses: actions/checkout@v4.1.4
with:
sparse-checkout: ${{ vars.RELEASE_ASSETS }}
sparse-checkout-cone-mode: false
- name: Download Build Assets
uses: actions/download-artifact@v4.1.7
with:
name: dist
path: dist
- name: Commit and Push
continue-on-error: true
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git add .
git commit -m "build: deploy via ${{ github.sha }}"
git push