Skip to content

workflow: install Helmfile in build step (#873) #3008

workflow: install Helmfile in build step (#873)

workflow: install Helmfile in build step (#873) #3008

Workflow file for this run

name: Docker build
on:
push:
branches:
- 'main'
tags:
- '*'
pull_request:
jobs:
docker-build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Docker meta
id: docker_meta
uses: crazy-max/[email protected]
with:
images: ghcr.io/${{ github.repository }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/[email protected]
- name: Set up helmfile
uses: helmfile/[email protected]
- name: Cache Docker layers
uses: actions/[email protected]
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to GitHub Container Registry
uses: docker/[email protected]
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/[email protected]
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
- name: Check whether wbaas-deploy should be updated
id: update-check
run: |
if [[ "$GITHUB_REF" =~ ^refs/tags/.+$ ]]; then
echo "This is a tagged release, will try to create an update in wbaas-deploy."
echo "match=true" >> $GITHUB_OUTPUT
fi
- name: Check out `wmde/wbaas-deploy` repository in staging child directory
if: steps.update-check.outputs.match == 'true'
uses: actions/checkout@v4
with:
repository: wmde/wbaas-deploy
path: ./repos/wbaas-deploy-staging
- name: Check out `wmde/wbaas-deploy` repository in production child directory
if: steps.update-check.outputs.match == 'true'
uses: actions/checkout@v4
with:
repository: wmde/wbaas-deploy
path: ./repos/wbaas-deploy-production
- name: Update values for local, staging and production
if: steps.update-check.outputs.match == 'true'
id: update-values
run: |
TAG="$GITHUB_REF_NAME"
echo "tag=$TAG" >> $GITHUB_OUTPUT
sed -i "/image:/{n;s/tag:.*/tag: $TAG/;}" ./repos/wbaas-deploy-staging/k8s/helmfile/env/local/api.values.yaml.gotmpl
sed -i "/image:/{n;s/tag:.*/tag: $TAG/;}" ./repos/wbaas-deploy-staging/k8s/helmfile/env/staging/api.values.yaml.gotmpl
sed -i "/image:/{n;s/tag:.*/tag: $TAG/;}" ./repos/wbaas-deploy-production/k8s/helmfile/env/production/api.values.yaml.gotmpl
- name: Update argo values for local, staging and production
if: steps.update-check.outputs.match == 'true'
id: update-argo-values
run: |
cd ./repos/wbaas-deploy-staging
# run generate values script for local from staging folder
./bin/generate-values local api
# run generate values script for staging from staging folder
./bin/generate-values staging api
# run generate values script for prod from prod folder
cd ../wbaas-deploy-production
./bin/generate-values production api
- name: Truncate commit message
if: steps.update-check.outputs.match == 'true'
id: truncate-commit-message
run: |
MSG=$(echo "${{ github.event.head_commit.message }}" | head -n 1)
echo "msg=$MSG" >> $GITHUB_OUTPUT
- name: Create Staging+Local Pull Request
uses: peter-evans/create-pull-request@v6
if: steps.update-check.outputs.match == 'true'
with:
path: ./repos/wbaas-deploy-staging
commit-message: 'Staging+Local: Deploy new Platform API image ${{ steps.update-values.outputs.tag }}'
title: 'Staging+Local: Deploy new Platform API image ${{ steps.update-values.outputs.tag }}'
branch: deploy-to-staging-${{ steps.update-values.outputs.tag }}
committer: wmdebot <[email protected]>
author: wmdebot <[email protected]>
labels: automated pr
token: ${{ secrets.WBAAS_DEPLOY_TOKEN }}
body: |
This is an automated update for the `api` image in staging and local, using `${{ steps.update-values.outputs.tag }}`.
**Changes**: [${{ steps.truncate-commit-message.outputs.msg }}](https://github.com/wbstack/api/commit/${{ github.sha }})
- name: Create Production Pull Request
uses: peter-evans/create-pull-request@v6
if: steps.update-check.outputs.match == 'true'
with:
path: ./repos/wbaas-deploy-production
commit-message: 'Production: Deploy new Platform API image ${{ steps.update-values.outputs.tag }}'
title: 'Production: Deploy new Platform API image ${{ steps.update-values.outputs.tag }}'
branch: deploy-to-production-${{ steps.update-values.outputs.tag }}
committer: wmdebot <[email protected]>
author: wmdebot <[email protected]>
labels: automated pr
token: ${{ secrets.WBAAS_DEPLOY_TOKEN }}
body: |
This is an automated update for the `api` image in production, using `${{ steps.update-values.outputs.tag }}`.
**Changes**: [${{ steps.truncate-commit-message.outputs.msg }}](https://github.com/wbstack/api/commit/${{ github.sha }})