Skip to content

Dev deploy of fastify #259

Dev deploy of fastify

Dev deploy of fastify #259

Workflow file for this run

name: Manual deploy to dev
on:
workflow_call:
inputs:
e2e_tag:
description: "Tag of E2E image to run"
required: false
default: latest
type: string
secrets:
NAIS_WORKLOAD_IDENTITY_PROVIDER:
description: "Identity provider for nais/docker-build-push"
required: true
READER_TOKEN:
description: "Token for @navikt NPM registry (@navikt/nav-dekoratoren-moduler)"
required: true
workflow_dispatch:
inputs:
e2e_tag:
description: "Tag of E2E image to run"
required: false
default: latest
type: string
run-name: Dev deploy of ${{ github.ref_name }}
jobs:
build-frontend:
name: Build frontend
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./frontend
permissions:
contents: read
id-token: write
outputs:
artifact-id: ${{ steps.upload.outputs.artifact-id }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
registry-url: "https://npm.pkg.github.com/"
scope: "@navikt"
- name: Install frontend dependencies
env:
BUN_AUTH_TOKEN: ${{ secrets.READER_TOKEN }}
run: bun install --frozen-lockfile
- name: Test frontend
run: bun test
- name: Build frontend
shell: bash
env:
VERSION: ${{ github.sha }}
run: bun run build
- name: Store index.html artifact
id: upload
uses: actions/upload-artifact@v4
with:
name: index.html
path: ./frontend/dist/index.html
- name: Upload static files to CDN
uses: nais/deploy/actions/cdn-upload/v2@master
with:
team: klage
source: ./frontend/dist/assets/
destination: klang
project_id: ${{ vars.NAIS_MANAGEMENT_PROJECT_ID }}
identity_provider: ${{ secrets.NAIS_WORKLOAD_IDENTITY_PROVIDER }}
build-server:
name: Build server
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./server
permissions:
contents: read
id-token: write
outputs:
artifact-id: ${{ steps.upload.outputs.artifact-id }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
registry-url: "https://npm.pkg.github.com/"
scope: "@navikt"
- name: Install server dependencies
env:
BUN_AUTH_TOKEN: ${{ secrets.READER_TOKEN }}
run: bun install --frozen-lockfile
- name: Test server
run: bun test
- name: Build server
run: bun run build
- name: Store server files artifact
id: upload
uses: actions/upload-artifact@v4
with:
name: server
path: ./server/dist
build-image:
name: Build Docker image
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
needs: [build-frontend, build-server]
outputs:
image: ${{ steps.docker-build-push.outputs.image }}
steps:
- name: Generate version number
id: version
run: echo "version=$(TZ="Europe/Oslo" git show -s --format=%cd --date='format-local:%Y-%m-%dT%H:%M:%S')" >> "$GITHUB_OUTPUT"
- name: Fetch index.html artifact
uses: actions/download-artifact@v4
with:
name: ${{ needs.build-frontend.outputs.artifact-id }}
path: ./frontend/dist/index.html
- name: Fetch server files artifact
uses: actions/download-artifact@v4
with:
name: ${{ needs.build-server.outputs.artifact-id }}
path: ./server/dist
- name: Build & push Docker image
uses: nais/docker-build-push@v0
id: docker-build-push
with:
team: klage # required
tag: ${{ github.sha }} # optional
push_image: true # optional, default true
dockerfile: Dockerfile # optional, default Dockerfile
docker_context: . # optional, default .
image_suffix: frontend # optional, default empty
cache_from: type=gha # optional, default type=gha
cache_to: type=gha,mode=max # optional, default type=gha,mode=max
identity_provider: ${{ secrets.NAIS_WORKLOAD_IDENTITY_PROVIDER }} # required, but is defined as an organization secret
project_id: ${{ vars.NAIS_MANAGEMENT_PROJECT_ID }} # required, but is defined as an organization variable
build_args: |
VERSION=${{ steps.version.outputs.version }}
deploy_to_dev:
name: Deploy
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
needs: build-image
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Deploy to dev
uses: nais/deploy/actions/deploy@v2
env:
CLUSTER: dev-gcp
VARS: nais/dev.yaml
RESOURCE: nais/nais.yaml
VAR: image=${{ needs.build-image.outputs.image }}
e2e_test:
name: E2E
needs: deploy_to_dev
if: false # TODO: Remove this line when E2E tests are available
permissions:
contents: read
id-token: write
runs-on: ubuntu-latest
steps:
- name: E2E
uses: navikt/klang-e2e-tests/.github/actions/run@main
with:
e2e_tag: ${{ inputs.e2e_tag }}
nais_management_project_id: ${{ vars.NAIS_MANAGEMENT_PROJECT_ID }}
nais_workload_identity_provider: ${{ secrets.NAIS_WORKLOAD_IDENTITY_PROVIDER }}