Skip to content

Commit

Permalink
ARKIV-12 Arkivlandslaget workflow style 💪
Browse files Browse the repository at this point in the history
  • Loading branch information
nilsodd committed Apr 8, 2024
1 parent 53fca9c commit e770390
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 117 deletions.
112 changes: 51 additions & 61 deletions .github/workflows/cd.yaml
Original file line number Diff line number Diff line change
@@ -1,107 +1,97 @@
name: CD

on:
repository_dispatch:
types: [ trigger-cd ]

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
on: push

jobs:
build-and-push:
name: Build and push Docker image

build-and-publish:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
outputs:
tags: ${{ steps.meta.outputs.tags }}
env:
DOCKER_BUILDKIT: 1

steps:
- name: Checkout repository
uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Login to Docker Hub
uses: docker/login-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
images: ghcr.io/${{ github.repository }}
tags: |
type=ref,event=branch,suffix=-{{sha}}
type=ref,event=pr,suffix=-{{sha}}
type=sha,prefix={{date 'YYYY-MM-DD-'}},enable={{is_default_branch}}
type=raw,value=latest,enable={{is_default_branch}}
- name: Extract metadata (tags, labels) for Docker
uses: docker/metadata-action@v5
id: meta
- name: Log in to the Container registry
uses: docker/login-action@v3.0.0
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: type=sha,enable=true,priority=100,prefix=shaF-,suffix=,format=short
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Docker image
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
push: ${{ github.actor != 'dependabot[bot]' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

deploy-to-aks:
name: deploy for ${{ matrix.org }} to ${{ matrix.cluster }}
name: ${{ matrix.org }}-${{ matrix.cluster }}
if: github.actor != 'dependabot[bot]'
runs-on: ubuntu-latest
needs: build-and-push
permissions:
contents: read
packages: write
needs: build-and-publish
strategy:
fail-fast: false
matrix:
org: [ fintlabs-no, ofk-no ]
cluster: [ aks-beta-fint-2021-11-23 ]
include:
- org: fintlabs-no
cluster: aks-beta-fint-2021-11-23
- cluster: aks-beta-fint-2021-11-23
deploy-every-branch: true

steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: actions/checkout@v4

- name: Get environment
uses: actions/github-script@v6
id: environment
with:
script: return '${{ matrix.cluster }}'.split('-')[1]
result-encoding: string

- name: Get resource group name
uses: actions/github-script@v6
id: resource-group
with:
script: return 'rg-aks-${{ steps.environment.outputs.result }}'
result-encoding: string
run: |
echo "name=$(cut -d\- -f2 <<< ${{ matrix.cluster }})" >> $GITHUB_OUTPUT
- name: Bake manifests with Kustomize
id: bake
uses: azure/k8s-bake@v2
with:
renderEngine: 'kustomize'
kustomizationPath: 'kustomize/overlays/${{ matrix.org }}/${{ steps.environment.outputs.result }}'

- uses: azure/login@v1
with:
creds: "${{ secrets[format('AKS_{0}_FINT_GITHUB', steps.environment.outputs.result)] }}"
kustomizationPath: 'kustomize/overlays/${{ matrix.org }}/${{ steps.environment.outputs.name }}'

- uses: azure/use-kubelogin@v1
- name: Login to Azure
uses: azure/login@v1
with:
kubelogin-version: 'v0.0.32'
creds: "${{ secrets[format('AKS_{0}_FINT_GITHUB', steps.environment.outputs.name)] }}"

- name: Set the target cluster
uses: azure/aks-set-context@v3
with:
cluster-name: '${{ matrix.cluster }}'
resource-group: '${{ steps.resource-group.outputs.result }}'
admin: 'true'
use-kubelogin: 'true'
cluster-name: ${{ matrix.cluster }}
resource-group: rg-aks-${{ steps.environment.outputs.name }}
admin: true

- if: github.ref != format('refs/heads/{0}', github.event.repository.default_branch) && matrix.deploy-every-branch != true
run: |
{
echo "## Dry run - not a real deploy"
echo "To deploy, merge to ${{ github.event.repository.default_branch }}."
} >> $GITHUB_STEP_SUMMARY
- name: Deploy
if: github.ref == 'refs/heads/main'
- name: Deploy to Kubernetes
if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || matrix.deploy-every-branch == true
uses: azure/k8s-deploy@v4
with:
action: deploy
manifests: ${{ steps.bake.outputs.manifestsBundle }}
images: ${{ needs.build-and-push.outputs.tags }}
images: ${{ needs.build-and-publish.outputs.tags }}
namespace: ${{ matrix.org }}
50 changes: 12 additions & 38 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,52 +1,26 @@
name: CI

on:
pull_request:
push:
branches:
branches-ignore:
- main

jobs:
build:

main:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@main

- name: Get repo name
id: get_repo
run: echo "REPO=${GITHUB_REPOSITORY#*/}" >> $GITHUB_OUTPUT
- uses: actions/checkout@v4

- name: Setup Java 17
uses: actions/setup-java@v3
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
distribution: 'corretto'
cache: 'gradle'

- name: Gradle Wrapper Validation
uses: gradle/wrapper-validation-action@v1

- name: Gradle Setup
uses: gradle/gradle-build-action@v2
- uses: gradle/wrapper-validation-action@v1.1.0
- name: Build with Gradle
uses: gradle/gradle-build-action@v2.12.0
with:
gradle-version: wrapper

- name: Gradle build
run: |
./gradlew build
mkdir data
cp ./build/libs/${GITHUB_REPOSITORY#*/}*.jar ./data/app.jar
- name: Upload Build Artifact
uses: actions/upload-artifact@v3
with:
name: ${{steps.get_repo.outputs.REPO}}
path: ./data/app.jar

# - name: Trigger CD
# if: github.ref == 'refs/heads/main'
# uses: peter-evans/repository-dispatch@v2
# with:
# token: ${{ secrets.GITHUBACTION_TOKEN }}
# repository: ${{ github.repository }}
# event-type: trigger-cd
arguments: check
27 changes: 9 additions & 18 deletions .github/workflows/md.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:
inputs:
cluster:
description: 'Select and environment'
description: 'Select environment'
required: true
default: 'warning'
type: choice
Expand All @@ -19,11 +19,6 @@ on:
type: choice
options:
- fintlabs-no
- innlandetfylke-no
- mrfylke-no
- nfk-no
- vlfk-no
- trondelagfylke-no
- ofk-no

env:
Expand All @@ -40,7 +35,7 @@ jobs:
packages: write

steps:
- uses: actions/github-script@v6
- uses: actions/github-script@v7
name: Get resource group name
id: rg
with:
Expand All @@ -49,15 +44,15 @@ jobs:
return `rg-${a[0]}-${a[1]}`
result-encoding: string

- uses: actions/github-script@v6
- uses: actions/github-script@v7
name: Get environment
id: environment
with:
script: |
const a = '${{ inputs.cluster }}'.split('-')
return `${a[1]}`
result-encoding: string
- uses: actions/github-script@v6
- uses: actions/github-script@v7
name: Get auth
id: auth
with:
Expand Down Expand Up @@ -98,33 +93,29 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}

- name: Bake manifests with Kustomize
uses: azure/k8s-bake@v2
uses: azure/k8s-bake@v3
with:
renderEngine: 'kustomize'
kustomizationPath: 'kustomize/overlays/${{ env.ORG}}/${{ steps.environment.outputs.result }}'
id: bake

- uses: azure/login@v1
- uses: azure/login@v2
with:
creds: "${{ secrets[format('AKS_{0}_FINT_GITHUB', steps.environment.outputs.result)] }}"

- uses: azure/use-kubelogin@v1
with:
kubelogin-version: 'v0.0.32'

- name: Set the target cluster
uses: azure/aks-set-context@v3
uses: azure/aks-set-context@v4
with:
cluster-name: ${{ env.CLUSTER_NAME }}
resource-group: ${{ steps.rg.outputs.result }}
admin: 'true'
use-kubelogin: 'true'

- name: Deploy to ${{ env.CLUSTER_NAME }}
uses: azure/k8s-deploy@v4
uses: azure/k8s-deploy@v5
with:
manifests: ${{ steps.bake.outputs.manifestsBundle }}
images: |
${{ steps.meta.outputs.tags }}
namespace: ${{ env.ORG }}
action: deploy
action: deploy

0 comments on commit e770390

Please sign in to comment.