From e770390ffdc1322b61cda78e17ceffa25d590bdd Mon Sep 17 00:00:00 2001 From: Nils-Odd Solberg Date: Mon, 8 Apr 2024 16:22:19 +0200 Subject: [PATCH] =?UTF-8?q?ARKIV-12=20Arkivlandslaget=20workflow=20style?= =?UTF-8?q?=20=F0=9F=92=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yaml | 112 +++++++++++++++++--------------------- .github/workflows/ci.yaml | 50 ++++------------- .github/workflows/md.yaml | 27 +++------ 3 files changed, 72 insertions(+), 117 deletions(-) diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml index 5197b31..034ee40 100644 --- a/.github/workflows/cd.yaml +++ b/.github/workflows/cd.yaml @@ -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 }} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 501da4c..3bbd08f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -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 diff --git a/.github/workflows/md.yaml b/.github/workflows/md.yaml index 42a00e8..aedfe6b 100644 --- a/.github/workflows/md.yaml +++ b/.github/workflows/md.yaml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: cluster: - description: 'Select and environment' + description: 'Select environment' required: true default: 'warning' type: choice @@ -19,11 +19,6 @@ on: type: choice options: - fintlabs-no - - innlandetfylke-no - - mrfylke-no - - nfk-no - - vlfk-no - - trondelagfylke-no - ofk-no env: @@ -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: @@ -49,7 +44,7 @@ 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: @@ -57,7 +52,7 @@ jobs: 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: @@ -98,22 +93,18 @@ 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 }} @@ -121,10 +112,10 @@ jobs: 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 \ No newline at end of file + action: deploy