Skip to content

Helm test

Helm test #13

name: Deploy PR to Kubernetes
on:
pull_request:
types: [opened, synchronize, reopened, closed]
workflow_run:
workflows: ["tests"]
branches: [main]
types:
- completed
jobs:
deploy:
if: github.event.action != 'closed'
runs-on: ubuntu-latest
environment: k8s
concurrency: k8s
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Helm
uses: azure/setup-helm@v3
with:
version: v3.15.0
- name: Setup Kubectl
uses: azure/setup-kubectl@v3
with:
version: v1.30.1
- name: Authenticate to Kubernetes cluster
run: |
mkdir -p $HOME/.kube
echo "${{ secrets.KUBECONFIG }}" > $HOME/.kube/config
- name: Get branch name
id: branch
run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
- name: Determine tag
id: determine-tag
run: |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
SEM_VERSION="${GITHUB_REF#refs/tags/}"
elif [[ "${GITHUB_REF}" == refs/pull/* ]]; then
PR_NUMBER=$(echo "${GITHUB_REF}" | sed -n 's|refs/pull/\([0-9]\+\)/.*|\1|p')
SEM_VERSION="0.0.0-pr${PR_NUMBER}"
else
SEM_VERSION="0.0.0-${{ env.BRANCH_NAME }}"
fi
echo "SEM_VERSION=${SEM_VERSION}" >> $GITHUB_ENV
- name: Update chart dependencies
run: helm dependency update helm/artemis
- name: Chart | Push
uses: appany/[email protected]
with:
name: artemis
repository: ${{ github.repository_owner }}/artemis
tag: ${{ env.SEM_VERSION }}
path: helm/artemis
registry: ghcr.io
registry_username: ${{ github.repository_owner }}
registry_password: ${{ secrets.GITHUB_TOKEN }}
update_dependencies: 'true'
- name: Deploy Helm chart
run: |
helm upgrade --install artemis \
oci://ghcr.io/${{ github.repository_owner }}/artemis/artemis --version ${{ env.SEM_VERSION }} \
--namespace artemis-pr${{ github.event.pull_request.number }} --create-namespace \
--set ingress.className="" \
--set ingress.annotations.cert-manager.io/cluster-issuer="letsencrypt-prod" \
--set ingress.annotations.spec.ingressClassName=nginx \
--set ingress.annotations.kubernetes.io/tls-acme="true" \
--set ingress.annotations.nginx.ingress.kubernetes.io/ssl-redirect="true" \
--set ingress.hosts[0].host=pr${{ github.event.pull_request.number }}.artemis-k8s.ase.cit.tum.de \
--set ingress.hosts[0].paths[0].path="/" \
--set ingress.hosts[0].paths[0].pathType=ImplementationSpecific \
--set ingress.tls[0].secretName=artemis-pr${{ github.event.pull_request.number }}-tls \
--set ingress.tls[0].hosts[0]=pr${{ github.event.pull_request.number }}.artemis-k8s.ase.cit.tum.de \
--set application.registry.jwt=${{ secrets.REGISTRY_JWT }} \
--set application.versioncontrol.url="https://pr${{ github.event.pull_request.number }}.artemis-k8s.ase.cit.tum.de" \
--set application.userManagement.internalAdmin.username=admin \
--set application.userManagement.internalAdmin.password=${{ secrets.ADMIN_PW }} \
--wait
- name: Post Deployment Comment
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const prNumber = context.issue.number;
const branchName = process.env.BRANCH_NAME;
const semVersion = process.env.SEM_VERSION;
github.rest.issues.createComment({
...context.repo,
issue_number: prNumber,
body: `
:rocket: Deployed **PR #${prNumber}** to https://pr${prNumber}.artemis-k8s.ase.cit.tum.de
:hourglass_flowing_sand: It might take up to **10 minutes** to fully start up.
`
});
destroy:
if: github.event.action == 'closed'
runs-on: ubuntu-latest
steps:
- name: Setup Helm
uses: azure/setup-helm@v3
with:
version: v3.15.0
- name: Setup Kubectl
uses: azure/setup-kubectl@v3
with:
version: v1.30.1
- name: Authenticate to Kubernetes cluster
run: |
echo "${{ secrets.KUBECONFIG }}" > $HOME/.kube/config
- name: Delete Helm release
run: |
helm uninstall artemis --namespace artemis-pr${{ github.event.pull_request.number }}
- name: Delete Kubernetes namespace
run: |
kubectl delete namespace pr${{ github.event.pull_request.number }}