Skip to content

update-staging

update-staging #20

name: Release Charts
on:
push:
branches:
- develop
repository_dispatch:
types:
- update-staging
env:
REGISTRY: ghcr.io
jobs:
release:
environment: develop
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Calculate new version
id: resolve_version
uses: mathieudutour/github-tag-action@v6.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tag_prefix: 'noheva-'
- name: Set new version
id: version
run: |
echo NEW_VERSION=$(echo ${{ steps.resolve_version.outputs.new_tag }}|sed s/noheva-//) >> $GITHUB_ENV
- name: Update versions
run: |
sed -i 's/version: .*/version: ${{ env.NEW_VERSION }}/g' ./charts/noheva/Chart.yaml &&
sed -i 's/version: .*/version: ${{ env.NEW_VERSION }}/g' ./charts/noheva/charts/noheva-auth/Chart.yaml &&
sed -i 's/version: .*/version: ${{ env.NEW_VERSION }}/g' ./charts/noheva/charts/noheva-api/Chart.yaml &&
sed -i 's/version: .*/version: ${{ env.NEW_VERSION }}/g' ./charts/noheva/charts/noheva-management/Chart.yaml &&
git add ./charts/noheva/Chart.yaml ./charts/noheva/charts/noheva-auth/Chart.yaml ./charts/noheva/charts/noheva-api/Chart.yaml ./charts/noheva/charts/noheva-management/Chart.yaml
- name: Import Secrets
id: import-secrets
uses: hashicorp/vault-action@v2
with:
url: ${{ secrets.VAULT_ADDR }}
token: ${{ secrets.VAULT_TOKEN }}
secrets: |
${{ secrets.VAULT_PATH }} AWS_ACCESS_KEY_ID | AWS_ACCESS_KEY_ID ;
${{ secrets.VAULT_PATH }} AWS_SECRET_ACCESS_KEY | AWS_SECRET_ACCESS_KEY ;
${{ secrets.VAULT_PATH }} AWS_REGION | AWS_REGION ;
${{ secrets.VAULT_PATH }} EKS_CLUSTER_NAME | EKS_CLUSTER_NAME ;
${{ secrets.VAULT_PATH }} K8S_CLUSTER_ISSUER | K8S_CLUSTER_ISSUER ;
${{ secrets.VAULT_PATH }} K8S_NAMESPACE | K8S_NAMESPACE ;
${{ secrets.VAULT_PATH }} K8S_TLS_SECRET_NAME | K8S_TLS_SECRET_NAME ;
${{ secrets.VAULT_PATH }} AUTH_HOSTNAME | AUTH_HOSTNAME ;
${{ secrets.VAULT_PATH }} API_HOSTNAME | API_HOSTNAME ;
${{ secrets.VAULT_PATH }} MANAGEMENT_HOSTNAME | MANAGEMENT_HOSTNAME ;
${{ secrets.VAULT_PATH }} HCV_PATH | HCV_PATH ;
${{ secrets.VAULT_PATH }} HCV_SERVER | HCV_SERVER ;
${{ secrets.VAULT_PATH }} HCV_SECRET_NAME | HCV_SECRET_NAME
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Resolve noheva auth docker image sha
id: noheva-auth-tag
run: |
docker pull ghcr.io/metatavu/noheva-keycloak:develop &&
echo NOHEVA_AUTH_IMAGE_SHA=$(docker inspect ghcr.io/metatavu/noheva-keycloak:develop|jq '.[].RepoDigests[0]'|sed s/\"//g|sed 's/[a-z\.\/\-]*@sha256://') >> $GITHUB_OUTPUT
- name: Update auth image version
run: |
sed -i 's/sha256: .*/sha256: ${{ steps.noheva-auth-tag.outputs.NOHEVA_AUTH_IMAGE_SHA }}/g' ./charts/noheva/charts/noheva-auth/values.yaml &&
git add ./charts/noheva/charts/noheva-auth/values.yaml
- name: Resolve noheva api docker image sha
id: noheva-api-tag
run: |
docker pull ghcr.io/metatavu/noheva-api:develop &&
echo NOHEVA_API_IMAGE_SHA=$(docker inspect ghcr.io/metatavu/noheva-api:develop|jq '.[].RepoDigests[0]'|sed s/\"//g|sed 's/[a-z\.\/\-]*@sha256://') >> $GITHUB_OUTPUT
- name: Update noheva api image version
run: |
sed -i 's/sha256: .*/sha256: ${{ steps.noheva-api-tag.outputs.NOHEVA_API_IMAGE_SHA }}/g' ./charts/noheva/charts/noheva-api/values.yaml &&
git add ./charts/noheva/charts/noheva-api/values.yaml
- name: Resolve noheva management docker image sha
id: noheva-management-tag
run: |
docker pull ghcr.io/metatavu/noheva-management:develop &&
echo NOHEVA_MANAGEMENT_IMAGE_SHA=$(docker inspect ghcr.io/metatavu/noheva-management:develop|jq '.[].RepoDigests[0]'|sed s/\"//g|sed 's/[a-z\.\/\-]*@sha256://') >> $GITHUB_OUTPUT
- name: Update noheva management image version
run: |
sed -i 's/sha256: .*/sha256: ${{ steps.noheva-management-tag.outputs.NOHEVA_MANAGEMENT_IMAGE_SHA }}/g' ./charts/noheva/charts/noheva-management/values.yaml &&
git add ./charts/noheva/charts/noheva-management/values.yaml
- name: Commit changes
run: |
git commit --allow-empty -m "Updated chart versions"
- name: Push version changes to develop
uses: ad-m/github-push-action@v0.6.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: develop
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Update kube config
run: aws eks update-kubeconfig --name ${{ env.EKS_CLUSTER_NAME }} --region ${{ env.AWS_REGION }}
- name: Install Helm
uses: azure/setup-helm@v3
- name: Install Chart
uses: WyriHaximus/github-action-helm3@v3
with:
exec: |
echo "ingress:" > new-values.yaml &&
echo " annotations:" >> new-values.yaml &&
echo " cert-manager.io/cluster-issuer: ${{ env.K8S_CLUSTER_ISSUER }}" >> new-values.yaml &&
echo " ingress.kubernetes.io/force-ssl-redirect: \"true\"" >> new-values.yaml &&
echo " ingress.kubernetes.io/proxy-body-size: 150m" >> new-values.yaml &&
echo " kubernetes.io/ingress.class: nginx" >> new-values.yaml &&
echo " nginx.ingress.kubernetes.io/proxy-body-size: 150m" >> new-values.yaml &&
echo " nginx.org/client-max-body-size: 150m" >> new-values.yaml &&
echo " nginx.org/proxy-connect-timeout: 30s" >> new-values.yaml &&
echo " nginx.org/proxy-read-timeout: 30s" >> new-values.yaml &&
echo " nginx.ingress.kubernetes.io/proxy-buffer-size: 32k" >> new-values.yaml &&
echo " labels:" >> new-values.yaml &&
echo " use-cloudflare-solver: \"true\"" >> new-values.yaml &&
echo " tls:" >> new-values.yaml &&
echo " secretName: ${{ env.K8S_TLS_SECRET_NAME }}" >> new-values.yaml &&
echo "auth:" >> new-values.yaml &&
echo " hostname: ${{ env.AUTH_HOSTNAME }}" >> new-values.yaml &&
echo "api:" >> new-values.yaml &&
echo " hostname: ${{ env.API_HOSTNAME }}" >> new-values.yaml &&
echo "management:" >> new-values.yaml &&
echo " hostname: ${{ env.MANAGEMENT_HOSTNAME }}" >> new-values.yaml &&
echo "hcv:" >> new-values.yaml &&
echo " path: ${{ env.HCV_PATH }}" >> new-values.yaml &&
echo " server: ${{ env.HCV_SERVER }}" >> new-values.yaml &&
echo " secretName: ${{ env.HCV_SECRET_NAME }}" >> new-values.yaml &&
helm upgrade noheva ./charts/noheva --namespace ${{ env.K8S_NAMESPACE }} -f new-values.yaml