Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add deploy workflow to build and deploy to skip #20

Merged
merged 6 commits into from
Oct 24, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 160 additions & 0 deletions .github/workflows/skip-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
name: Build and deploy frontend to SKIP
on:
workflow_dispatch:
inputs:
commit_sha:
description: 'Commit hash to deploy'
default: ''
type: string
dev:
description: 'Deploy to dev'
required: true
type: boolean
prod:
description: 'Deploy to prod'
required: true
type: boolean
pull_request:
branches:
- main
paths:
- .github/workflows/skip-deploy.yml
- nginx/**
- public/**
- src/**
push:
branches:
- main
paths:
- .github/workflows/skip-deploy.yml
- nginx/**
- public/**
- src/**

env:
REGISTRY: ghcr.io
ARGO_VERSION_FILE: image-url-frisk-frontend

jobs:
build-dev:
name: Build and push docker image for dev
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
outputs:
image_url: ${{ steps.setOutput.outputs.image_url }}

steps:
- name: Checkout code
if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.commit_sha == '') }}
uses: actions/checkout@v4

- name: Checkout code
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.commit_sha == '' }}
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Checkout specific commit
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.commit_sha == '' }}
run: git checkout ${{ github.event.inputs.commit_sha }}

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
with:
node-version: 22.x
cache: "npm"
cache-dependency-path: "./frontend/beCompliant/package-lock.json"
registry-url: "https://npm.pkg.github.com"

- name: Run npm install and build
working-directory: frontend/beCompliant
hakonfro marked this conversation as resolved.
Show resolved Hide resolved
run: |
npm ci
npm run build:dev
hakonfro marked this conversation as resolved.
Show resolved Hide resolved

- name: Set tag
id: set-tag
env:
BRANCH: ${{ github.ref_name }}
run: |
if [[ "$BRANCH" == "main" || "$BRANCH" == "master" ]]; then
echo "image_tag=latest" >> $GITHUB_OUTPUT
else
echo "image_tag=prebuild-temp" >> $GITHUB_OUTPUT
fi

- name: Login to Github Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}
tags: |
type=sha,format=long
type=raw,value=${{ steps.set-tag.outputs.image_tag }}

- name: Build docker and push
id: build-docker
uses: docker/build-push-action@v5
with:
context: frontend/beCompliant
push: ${{ !github.event.pull_request.draft }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

- name: Set output with build values
id: setOutput
run: |
echo "image_url=${{ env.REGISTRY }}/${{ github.repository }}@${{ steps.build-docker.outputs.digest }}" >> $GITHUB_OUTPUT

pharos:
name: Run Pharos
needs: build-prod
permissions:
actions: read
packages: read
contents: read
security-events: write
runs-on: ubuntu-latest
steps:
- name: "Run Pharos"
uses: kartverket/pharos@9ba014f232304231c670808ecaca97415d88c830 # v0.2.1
with:
image_url: ${{ needs.build-prod.outputs.image_url }}

deploy-dev:
name: Deploy to dev
if: ${{ github.ref == 'refs/heads/main' && (github.event_name != 'workflow_dispatch' || (github.event_name == 'workflow_dispatch' && github.event.inputs.dev == 'true')) }}
needs: build-dev
runs-on: ubuntu-latest
environment:
name: dev
permissions:
id-token: write
steps:
- uses: octo-sts/action@6177b4481c00308b3839969c3eca88c96a91775f # v1.0.0
id: octo-sts
with:
scope: kartverket/skvis-apps
identity: frisk-frontend
- name: Checkout skvis-apps
uses: actions/checkout@v4
with:
repository: kartverket/skvis-apps
ref: main
token: ${{ steps.octo-sts.outputs.token }}
- name: Update version
run: |
echo "\"${{ needs.build-dev.outputs.image_url }}\"" > "env/atgcp1-dev/regelrett-main/${{ env.ARGO_VERSION_FILE }}"
git config --global user.email "[email protected]"
git config --global user.name "Frisk CI"
git commit -am "Update ${{ env.ARGO_VERSION_FILE }}"
git push