Skip to content

🩺 Quality assurance checks on 🌱 main #56

🩺 Quality assurance checks on 🌱 main

🩺 Quality assurance checks on 🌱 main #56

Workflow file for this run

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:
- main
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 != 'main' }}
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@v3
- 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@v3
- 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@v3
- 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
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@v3
- 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