Skip to content

Workflow file for this run

name: Bygg, deploy til dev-gcp og lag release
on:
push:
paths-ignore:
- '**.md'
- '.gitignore'
- 'LICENCE'
- 'CODEOWNERS'
branches:
- main
env:
IMAGE: ghcr.io/${{ github.repository }}:${{ github.sha }}
LATEST_IMAGE: ghcr.io/${{ github.repository }}:latest
jobs:
build:
name: Bygg
runs-on: ubuntu-latest
permissions:
contents: "read"
id-token: "write"
packages: "write"
outputs:
image: ${{ steps.docker-build-push.outputs.image }}
version_tag: ${{ steps.version-tag.outputs.VERSION_TAG}}
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20.x"
- name: Bygg og push Docker image
uses: nais/docker-build-push@v0
id: docker-build-push
with:
team: teamdagpenger
identity_provider: ${{ secrets.NAIS_WORKLOAD_IDENTITY_PROVIDER }}
project_id: ${{ vars.NAIS_MANAGEMENT_PROJECT_ID }}
tag: ${{ env.VERSION_TAG }}
build_secrets: NODE_AUTH_TOKEN=${{ secrets.READER_TOKEN }}
push_image: true
dockerfile: Dockerfile
docker_context: .
- name: Display Directory Structure
run: |
echo "Current directory structure:"
tree -L 2 . || ls -R . # Fallback if `tree` is not installed
- name: Arkiver bygg filer
uses: actions/upload-artifact@v4
with:
name: bygg-filer
path: build/
- name: Definer release tag
id: version-tag
run: echo "VERSION_TAG=${{env.VERSION_TAG}}" >> "$GITHUB_OUTPUT"
playwright:
timeout-minutes: 2
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache node_modules
uses: actions/cache@v4
id: node_modules
with:
path: ./node_modules
key: modules-${{ hashFiles('package-lock.json') }}
- uses: actions/setup-node@v4
if: steps.node_modules.outputs.cache-hit != 'true'
with:
node-version: "20.x"
cache: "npm"
registry-url: "https://npm.pkg.github.com"
- name: "Install dependencies"
run: npm ci --ignore-scripts
if: steps.node_modules.outputs.cache-hit != 'true'
- name: Store Playwright's Version
run: |
PLAYWRIGHT_VERSION=$(npm ls @playwright/test | grep @playwright | sed 's/.*@//')
echo "Playwright's Version: $PLAYWRIGHT_VERSION"
echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_ENV
- name: Cache Chromium browser for Playwright's Version
id: cache-chromium-browser
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: chromium-with-playwright-version-${{ env.PLAYWRIGHT_VERSION }}
- name: Install Chromium browser
if: steps.cache-chromium-browser.outputs.cache-hit != 'true'
run: npx playwright install chromium --with-deps
- name: Run Playwright Tests
run: npm run playwright:verbose
- name: Store Artifacts from Failed Tests
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-results
path: test-results/
retention-days: 7
upload-cdn:
name: Last opp statiske filer til CDN
needs: [ build ]
runs-on: ubuntu-latest
permissions:
contents: "read"
id-token: "write"
steps:
- name: Download a single artifact
uses: actions/download-artifact@v4
with:
name: bygg-filer
- name: Upload static files
uses: nais/deploy/actions/cdn-upload/v2@master
with:
team: teamdagpenger
source: build/
destination: "/dp-saksbehandling-frontend/"
identity_provider: ${{ secrets.NAIS_WORKLOAD_IDENTITY_PROVIDER }}
project_id: ${{ vars.NAIS_MANAGEMENT_PROJECT_ID }}
deploy-dev:
name: Deploy til dev-gcp
needs: [ build, playwright, upload-cdn ]
runs-on: ubuntu-latest
environment:
name: Development
url: "https://dagpenger.ansatt.dev.nav.no/saksbehandling"
steps:
- uses: actions/checkout@v4
- uses: nais/deploy/actions/deploy@v1
env:
VAR: image=${{ needs.build.outputs.image }},githubSha=${{ github.sha }}
APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }}
CLUSTER: dev-gcp
RESOURCE: .nais/nais.yaml,.nais/unleash-apitoken.yaml
VARS: .nais/vars-dev.yaml
PRINT_PAYLOAD: true
deploy-prod:
name: Deploy til prod-gcp
needs: [ build, playwright, upload-cdn, deploy-dev ]
runs-on: ubuntu-latest
environment:
name: Production
url: "https://dagpenger.ansatt.nav.no/saksbehandling"
steps:
- uses: actions/checkout@v4
- uses: nais/deploy/actions/deploy@v1
env:
VAR: image=${{ needs.build.outputs.image }},githubSha=${{ github.sha }}
APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }}
CLUSTER: prod-gcp
RESOURCE: .nais/nais.yaml,.nais/unleash-apitoken.yaml
VARS: .nais/vars-prod.yaml
PRINT_PAYLOAD: true