🩺 Quality assurance checks on PR 23 #128
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: Checks | |
run-name: 🩺 Quality assurance checks on ${{ github.event_name == 'pull_request' && 'PR' || '🌱' }} ${{ github.event_name == 'pull_request' && github.event.number || github.ref_name }} | |
env: | |
NODE_VERSION: 18.16.1 | |
TEST_HIDE_CONSOLE: true | |
# This workflow runs for Pull Requests which are not draft, | |
# as well as commits going to the default branch | |
on: | |
push: | |
branches: | |
- geocat | |
pull_request: | |
types: [opened, synchronize, ready_for_review] | |
# Only allow concurrent checks on the main branch to keep history | |
# on QA checks | |
concurrency: | |
group: checks-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref_name != 'geocat' }} | |
jobs: | |
format-lint-test: | |
if: github.event.pull_request.draft == false | |
name: Format check, lint, unit tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'npm' | |
- name: Derive appropriate SHAs for base and head for `nx affected` commands | |
uses: nrwl/nx-set-shas@v4 | |
with: | |
main-branch-name: 'geocat' | |
fallback-sha: b5fac1a33b5c4df0f5db183ae09e956f3a327f51 | |
- run: npm ci | |
- run: npx nx format:check | |
- run: npx nx affected -t lint --parallel=3 | |
- run: npx nx affected -t test --parallel=3 --configuration=ci --ci --codeCoverage --coverageReporters=lcov | |
# - name: Coveralls | |
# uses: coverallsapp/github-action@v2 | |
# with: | |
# allow-empty: true | |
# - name: Archive Code Coverage Results (on main) | |
# if: github.event_name != 'pull_request' | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# name: code-coverage-report | |
# path: ./coverage/**/coverage-summary.json | |
# if-no-files-found: error | |
# | |
# - name: Create Code Coverage Badge (on PR) | |
# if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' | |
# uses: dkhunt27/nx-code-coverage@v1 | |
# with: | |
# github-token: ${{ secrets.GITHUB_TOKEN }} | |
# coverage-folder: ./coverage | |
# coverage-base-folder: ./coverage-base | |
# gist-token: ${{ secrets.COVERAGE_GIST_TOKEN }} | |
# gist-id: c759fcfd4e71c8853beedbe1785fc081 | |
# color: green | |
# named-logo: jest | |
# no-coverage-ran: false | |
build-affected: | |
if: github.event.pull_request.draft == false | |
name: Attempt to build affected apps | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'npm' | |
- name: Derive appropriate SHAs for base and head for `nx affected` commands | |
uses: nrwl/nx-set-shas@v4 | |
with: | |
main-branch-name: 'geocat' | |
fallback-sha: b5fac1a33b5c4df0f5db183ae09e956f3a327f51 | |
- run: npm ci | |
- run: npx nx affected -t build --parallel=3 | |
affected-recap: | |
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' | |
name: Print affected libs and apps | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout branch | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'npm' | |
- name: Derive appropriate SHAs for base and head for `nx affected` commands | |
uses: nrwl/nx-set-shas@v4 | |
with: | |
main-branch-name: 'geocat' | |
fallback-sha: b5fac1a33b5c4df0f5db183ae09e956f3a327f51 | |
- name: Install dependencies | |
run: npm ci | |
- name: Compute affected projects | |
run: | | |
echo "AFFECTED_LIBS=$(npx nx print-affected --type=lib --select=projects | awk 'BEGIN {RS = ", "; ORS = ", "} \ | |
{ print "`"$1"`" }')" >> $GITHUB_ENV | |
- name: Compute affected apps | |
run: | | |
echo "AFFECTED_APPS=$(npx nx print-affected --type=app --select=projects | awk 'BEGIN {RS = ", "; ORS = ", "} \ | |
{ print "`"$1"`" }')" >> $GITHUB_ENV | |
- name: add PR comment | |
uses: thollander/actions-comment-pull-request@v2 | |
with: | |
message: 'Affected libs: ${{ env.AFFECTED_LIBS }} | |
Affected apps: ${{ env.AFFECTED_APPS }} | |
- [ ] 🚀 Build and deploy storybook and demo on GitHub Pages | |
- [ ] 📦 Build and push affected docker images' | |
comment_tag: build-options | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
e2e-run: | |
name: E2E tests / ${{ matrix.app }} / GN v${{ matrix.gn_version }} | |
runs-on: ubuntu-latest | |
if: false # skip for geocat | |
strategy: | |
fail-fast: false | |
matrix: | |
gn_version: [4.2.2, 4.2.8, 4.4.0] | |
app: [datahub, metadata-editor] | |
exclude: | |
- gn_version: 4.2.2 # metadata-editor requires v4.2.5+ | |
app: metadata-editor | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'npm' | |
- name: Derive appropriate SHAs for base and head for `nx affected` commands | |
uses: nrwl/nx-set-shas@v4 | |
with: | |
main-branch-name: 'geocat' | |
fallback-sha: b5fac1a33b5c4df0f5db183ae09e956f3a327f51 | |
- name: Create pipeline docker image | |
working-directory: tools | |
run: docker build . -f pipelines/Dockerfile -t geonetwork/geonetwork-ui-tools-pipelines:latest | |
- name: Start up backend support services | |
env: | |
GEONETWORK_VERSION: ${{ matrix.gn_version }} | |
working-directory: support-services | |
run: docker compose up --quiet-pull init | |
- run: npm ci | |
- name: Run e2e tests for ${{ matrix.app }} | |
env: | |
APP: ${{ matrix.app }} | |
run: npx nx e2e "$APP-e2e" | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
id: upload-screenshots | |
with: | |
name: cypress-screenshots-app-${{ matrix.app }}-gn-${{ matrix.gn_version }} | |
path: | | |
apps/datahub-e2e/cypress/screenshots/**/* | |
apps/metadata-editor-e2e/cypress/screenshots/**/* | |
- uses: thollander/actions-comment-pull-request@v2 | |
if: always() && github.event_name == 'pull_request' && steps.upload-screenshots.outputs.artifact-url | |
with: | |
message: '📷 Screenshots are [here](${{ steps.upload-screenshots.outputs.artifact-url }})!' | |
comment_tag: screenshots-url | |
pr_number: ${{ github.event.number }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
build-npm-package: | |
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' | |
name: Attempt to build the NPM package | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout branch | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'npm' | |
- name: Install dependencies | |
run: npm ci | |
- name: Build NPM package | |
working-directory: package | |
run: node generate-package.js |