feat: add release workflow #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | ||
on: | ||
push: | ||
branches: | ||
- master | ||
pull_request: | ||
env: | ||
DEMO_APP_ARTIFACT_NAME: demo | ||
DEMO_APP_PATH: dist/apps/demo/browser | ||
NODE_OPTIONS: '--max-old-space-size=6144' | ||
# cancel in-progress runs on new commits to same PR (gitub.event.number) | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.event.number || github.sha }} | ||
cancel-in-progress: true | ||
jobs: | ||
Prettier: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
- uses: actions/setup-node@v3 | ||
with: | ||
node-version-file: .node-version | ||
- run: corepack enable | ||
- uses: actions/setup-node@v3 | ||
with: | ||
cache: npm | ||
cache-dependency-path: '**/package-lock.json' | ||
- name: Install | ||
run: npm ci | ||
- name: Validate | ||
run: npx prettier --check . | ||
Build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-node@v3 | ||
with: | ||
node-version-file: .node-version | ||
- run: corepack enable | ||
- uses: actions/setup-node@v3 | ||
with: | ||
cache: npm | ||
cache-dependency-path: '**/package-lock.json' | ||
- name: Install | ||
run: npm ci | ||
- name: Build | ||
run: npm run build | ||
Tests: | ||
runs-on: ubuntu-latest | ||
needs: | ||
- build | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-node@v3 | ||
with: | ||
node-version-file: .node-version | ||
- run: corepack enable | ||
- uses: actions/setup-node@v3 | ||
with: | ||
cache: npm | ||
cache-dependency-path: '**/package-lock.json' | ||
- name: Install | ||
run: npm ci | ||
- name: Test | ||
run: npm run tests:ci | ||
Build-demo: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-node@v3 | ||
with: | ||
node-version-file: .node-version | ||
- run: corepack enable | ||
- uses: actions/setup-node@v3 | ||
with: | ||
cache: npm | ||
cache-dependency-path: '**/package-lock.json' | ||
- name: Install | ||
run: npm ci | ||
- name: Build | ||
run: npx nx build demo --base-href=/ngx-mode-watcher/ | ||
- name: Upload demo website | ||
if: github.event_name == 'push' && github.ref_name == 'master' | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
if-no-files-found: error | ||
name: '${{ env.DEMO_APP_ARTIFACT_NAME }}' | ||
path: '${{ env.DEMO_APP_PATH }}' | ||
retention-days: 1 | ||
Deploy-demo: | ||
name: '[Merge] Deploy demo website' | ||
needs: | ||
- build | ||
- tests | ||
- demo | ||
if: github.event_name == 'push' && github.ref_name == 'master' | ||
runs-on: ubuntu-latest | ||
environment: | ||
name: github-pages | ||
url: '${{ steps.deploy.outputs.page_url }}' | ||
permissions: | ||
contents: read | ||
pages: write | ||
id-token: write | ||
concurrency: | ||
group: |- | ||
${{ github.workflow }}-deploy-demo-${{ | ||
github.event_name == 'push' | ||
&& github.ref | ||
|| github.head_ref | ||
}} | ||
cancel-in-progress: "${{ github.event_name != 'push' }}" | ||
steps: | ||
- name: Download demo website | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: '${{ env.DEMO_APP_ARTIFACT_NAME }}' | ||
path: '${{ env.DEMO_APP_PATH }}' | ||
- name: Set up GitHub Pages | ||
uses: actions/configure-pages@v1 | ||
- name: Upload GitHub Pages-compatible tarball | ||
uses: actions/upload-pages-artifact@v1 | ||
with: | ||
path: '${{ env.DEMO_APP_PATH }}' | ||
- name: Deploy demo website tarball | ||
id: deploy | ||
uses: actions/deploy-pages@v1 |