Add component template for candidate #4539
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: Continuous Delivery | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
continuous-integration: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout branch | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: Install pnpm package manager | |
uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 | |
- name: Set up Node.js version | |
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 | |
with: | |
node-version-file: .nvmrc | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: "Continuous Integration: lint" | |
run: pnpm run --if-present lint | |
- name: "Continuous Integration: build" | |
run: pnpm run --if-present build | |
- name: "Continuous Integration: test" | |
run: pnpm run --if-present test | |
- name: "Retain build artifact: website" | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
include-hidden-files: true | |
name: website | |
path: build/ | |
retention-days: 1 | |
e2e-test: | |
runs-on: ubuntu-latest | |
needs: [continuous-integration] | |
steps: | |
- name: Checkout branch | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: Install pnpm package manager | |
uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 | |
- name: Set up Node.js version | |
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 | |
with: | |
node-version-file: .nvmrc | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: "Install headless browsers for end-to-end testing" | |
run: pnpm run --if-present install-test-browsers | |
- name: "Restore build artifact: website" | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: website | |
path: build/ | |
- name: "Continuous Integration: end-to-end tests" | |
run: pnpm run --if-present test-e2e | |
- name: "Continuous Integration: make screenshots" | |
if: ${{ github.ref_name == 'main' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'visual regression test')) }} | |
run: pnpm run --if-present test-visual | |
- name: "Continuous Integration: publish screenshots to Argos" | |
if: ${{ github.ref_name == 'main' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'visual regression test')) }} | |
env: | |
ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }} | |
run: pnpm run --if-present publish:argos | |
- name: "Retain build artifact: test report" | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: playwright-report | |
path: tmp/playwright-html-report/ | |
retention-days: 7 | |
- name: "Retain build artifact: screenshots" | |
if: ${{ github.ref_name == 'main' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'visual regression test')) }} | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: screenshots | |
path: tmp/screenshots/ | |
retention-days: 7 | |
publish-website: | |
runs-on: ubuntu-latest | |
needs: continuous-integration | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Checkout release branch | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: "Restore build artifact: website" | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: website | |
path: build/ | |
- name: Continuous Deployment to GitHub Pages | |
uses: JamesIves/github-pages-deploy-action@dc18a3c6b46d56484cb63f291becd7ed4f0269b9 # v4.7.1 | |
with: | |
branch: gh-pages | |
folder: build/ | |
publish-npm: | |
runs-on: ubuntu-latest | |
needs: [continuous-integration] | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Checkout release branch | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
token: ${{ secrets.GH_TOKEN }} | |
- name: Install pnpm | |
uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 | |
- name: Set up Node.js version | |
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 | |
with: | |
node-version-file: .nvmrc | |
cache: pnpm | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Publish to GitHub repository | |
uses: changesets/action@c8bada60c408975afd1a20b3db81d6eee6789308 # v1.4.9 | |
id: changeset | |
env: | |
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} | |
GIT_AUTHOR_EMAIL: ${{ secrets.GIT_AUTHOR_EMAIL }} | |
GIT_AUTHOR_NAME: "NL Design System" | |
GIT_COMMITTER_EMAIL: ${{ secrets.GIT_COMMITTER_EMAIL }} | |
GIT_COMMITTER_NAME: "NL Design System" | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
with: | |
commit: "docs(release): design system packages" | |
setupGitUser: false | |
title: "docs(release): design system packages" | |
publish: "pnpm run publish" |