chore(deps): update container image node to 22-alpine #10872
Workflow file for this run
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: Node.js CI | |
on: | |
push: | |
pull_request: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
name: Build Next.JS Webapp | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v3 | |
- name: Use Node.js 21 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 21 | |
cache: "pnpm" | |
- run: pnpm i --frozen-lockfile | |
- run: pnpm lint | |
- run: pnpm build | |
env: | |
SENTRY_ENVIRONMENT: ${{ github.ref_name == 'main' && 'production' || 'staging' }} | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_RELEASE: ${{ github.sha }} | |
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
NEXT_PUBLIC_EAB_HOST: 'https://eab.api.hm.edu' | |
NEXT_PUBLIC_ACME_HOST: 'https://acme.hm.edu' | |
NEXT_PUBLIC_PKI_HOST: 'https://pki.api.hm.edu' | |
NEXT_PUBLIC_DOMAIN_HOST: 'https://domain.api.hm.edu' | |
NEXT_PUBLIC_AUTH_IDP: 'https://sso.hm.edu' | |
NEXT_PUBLIC_ORGANIZATION_NAME: 'Hochschule München' | |
NEXT_PUBLIC_DOCS_URL: 'https://collab.dvb.bayern/x/sQ0kRg' | |
e2e: | |
runs-on: ubuntu-24.04 | |
name: Run E2E Cypress tests | |
container: | |
image: cypress/browsers:node-20.9.0-chrome-118.0.5993.88-1-ff-118.0.2-edge-118.0.2088.46-1 | |
options: --user 1001 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v3 | |
- name: Use Node.js 20 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: "pnpm" | |
- run: pnpm i --frozen-lockfile | |
- name: Cypress run | |
id: cypress | |
uses: cypress-io/github-action@v6 | |
with: | |
build: pnpm build | |
start: pnpm start | |
record: true | |
env: | |
# pass the Cypress Cloud record key as an environment variable | |
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} | |
# pass GitHub token to allow accurately detecting a build vs a re-run build | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# pass the project ID from the secrets through environment variable | |
CYPRESS_PROJECT_ID: ${{ secrets.PROJECT_ID }} | |
NEXT_PUBLIC_DISABLE_CSP: true | |
NEXT_PUBLIC_EAB_HOST: 'https://eab.api.hm.edu' | |
NEXT_PUBLIC_ACME_HOST: 'https://acme.hm.edu' | |
NEXT_PUBLIC_PKI_HOST: 'https://pki.api.hm.edu' | |
NEXT_PUBLIC_DOMAIN_HOST: 'https://domain.api.hm.edu' | |
NEXT_PUBLIC_AUTH_IDP: 'https://sso.hm.edu' | |
NEXT_PUBLIC_ORGANIZATION_NAME: 'Hochschule München' | |
NEXT_PUBLIC_DOCS_URL: 'https://collab.dvb.bayern/x/sQ0kRg' | |
HOST: "0.0.0.0" | |
NEXT_PUBLIC_CI: "true" | |
continue-on-error: true | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: cypress-videos | |
path: cypress/videos | |
- name: Check on failures | |
if: steps.cypress.outcome == 'failure' | |
run: exit 1 | |
docker: | |
strategy: | |
matrix: | |
university: | |
- name: Hochschule München | |
eab_host: https://eab.api.hm.edu | |
acme_host: https://acme.hm.edu | |
pki_host: https://pki.api.hm.edu | |
domain_host: https://domain.api.hm.edu | |
auth_idp: https://sso.hm.edu | |
logo: resources/hm-edu/logo.png | |
logo-small: resources/hm-edu/logo-small.png | |
favicon: resources/hm-edu/favicon.ico | |
image_name: hm-edu/portal-frontend | |
docs_url: https://collab.dvb.bayern/x/sQ0kRg | |
- name: Hochschule Hof | |
eab_host: https://eab.pki.hof-university.de | |
acme_host: https://acme.pki.hof-university.de | |
pki_host: https://rest.pki.hof-university.de | |
domain_host: https://domains.pki.hof-university.de | |
auth_idp: https://sso.hof-university.de | |
logo: resources/hs-hof/logo.png | |
logo-small: resources/hs-hof/logo-small.png | |
favicon: resources/hs-hof/favicon.ico | |
image_name: hm-edu/portal-frontend-hof | |
docs_url: https://collab.dvb.bayern/x/sQ0kRg | |
- name: Uni Bamberg | |
eab_host: https://eab.pki-service.uni-bamberg.de | |
acme_host: https://acme.pki-service.uni-bamberg.de | |
pki_host: https://certs.pki-service.uni-bamberg.de | |
domain_host: https://domains.pki-service.uni-bamberg.de | |
auth_idp: https://idp.iam.uni-bamberg.de | |
logo: resources/uni-bamberg/logo.png | |
logo-small: resources/uni-bamberg/logo-small.png | |
favicon: resources/uni-bamberg/favicon.ico | |
image_name: hm-edu/portal-frontend-bamberg | |
docs_url: https://www.uni-bamberg.de/?id=168686 | |
runs-on: ubuntu-latest | |
name: Docker Image for ${{ matrix.university.name }} | |
needs: e2e | |
env: | |
# Use docker.io for Docker Hub if empty | |
REGISTRY: ghcr.io | |
# github.repository as <account>/<repo> | |
IMAGE_NAME: ${{ matrix.university.image_name }} | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Log into registry ${{ env.REGISTRY }} | |
if: github.event_name != 'pull_request' | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract Docker metadata | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
tags: | | |
type=schedule | |
type=ref,event=branch | |
type=ref,event=tag | |
type=ref,event=pr | |
type=raw,value={{branch}}-{{sha}}-{{date 'X'}},enable=${{ github.event_name != 'pull_request' }} | |
- name: Replace images | |
run: | | |
cp ${{ matrix.university.logo }} public/logo.png | |
cp ${{ matrix.university.logo-small }} public/logo-small.png | |
cp ${{ matrix.university.favicon }} public/favicon.ico | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
push: ${{ github.event_name != 'pull_request' && github.ref_name == github.event.repository.default_branch }} | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
cache-from: type=gha,scope=${{ github.workflow }} | |
cache-to: type=gha,scope=${{ github.workflow }},mode=max | |
secrets: | | |
SENTRY_ENVIRONMENT=${{ github.ref_name == 'main' && 'production' || 'staging' }} | |
SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_RELEASE=${{ github.sha }} | |
NEXT_PUBLIC_SENTRY_DSN=${{ secrets.SENTRY_DSN }} | |
NEXT_PUBLIC_EAB_HOST=${{ matrix.university.eab_host }} | |
NEXT_PUBLIC_ACME_HOST=${{ matrix.university.acme_host }} | |
NEXT_PUBLIC_PKI_HOST=${{ matrix.university.pki_host }} | |
NEXT_PUBLIC_DOMAIN_HOST=${{ matrix.university.domain_host }} | |
NEXT_PUBLIC_AUTH_IDP=${{ matrix.university.auth_idp }} | |
NEXT_PUBLIC_ORGANIZATION_NAME=${{ matrix.university.name }} | |
NEXT_PUBLIC_DOCS_URL=${{ matrix.university.docs_url }} |