Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
a6e67ba
chore: traefik migration
InDieTasten Mar 30, 2026
91ef92e
chore: traefik migration
InDieTasten Mar 30, 2026
22d06d2
fix: helm lint issue
InDieTasten Mar 30, 2026
25e4171
fix: helm lint issue
InDieTasten Mar 30, 2026
bf5f2cf
fix: duplicate end tag in helm template
InDieTasten Mar 30, 2026
e073809
fix: helm templating issue in cluster-issuer.yaml
InDieTasten Mar 30, 2026
6968719
fix: template issue with class name reference
InDieTasten Mar 30, 2026
52954cc
fix: remove broken helm label overrides
InDieTasten Mar 30, 2026
2434952
fix: remove broken and unused config-map.yaml
InDieTasten Mar 30, 2026
a373d37
fix: cluster issuer ingress class reference
InDieTasten Mar 30, 2026
ef2a2fe
fix: templated indenting in ingress.yaml chart template
InDieTasten Mar 30, 2026
4952a3e
fix: wrong named reference to the upstream traefik helm chart
InDieTasten Mar 30, 2026
73f7532
fix: remove outdated Chart.lock file
InDieTasten Mar 30, 2026
8eb70ec
fix: use newer helm cli in action
InDieTasten Mar 30, 2026
6883ac8
fix: annotation to use string instead of bool
InDieTasten Mar 30, 2026
32907dd
ci: properly handle reuse of main branch images when no changes are d…
InDieTasten Mar 30, 2026
9af37bc
fix: tls verification between traefik and backend pods
InDieTasten Mar 30, 2026
2d0e98e
fix: use server transport CRD to attempt TLS skip a second try
InDieTasten Mar 30, 2026
d2c097c
fix: install traefik crds attempt 2
InDieTasten Mar 30, 2026
c8504de
fix: add traefik repo for crd installation
InDieTasten Mar 31, 2026
9186424
fix: wrong server transport name reference in ingress resource
InDieTasten Mar 31, 2026
3d758a1
fix: another server transport config attempt
InDieTasten Mar 31, 2026
ebd32f1
fix: move traefik tls verification settings to service
InDieTasten Mar 31, 2026
ea30340
fix: disable https redirection
InDieTasten Mar 31, 2026
c0a916f
chore: bump app version
InDieTasten Mar 31, 2026
50ce090
fix: use http based routing in chart
InDieTasten Mar 31, 2026
372a86f
fix: use port 80 for http within k8s ingress and service routing
InDieTasten Mar 31, 2026
65c69a2
fix: disable nativelb routing on routing service
InDieTasten Mar 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 81 additions & 51 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:
- .github/workflows/continuous-integration.yml
schedule:
# Sunday at 2 PM UTC (Sunday afternoon)
- cron: '0 14 * * 0'
- cron: "0 14 * * 0"

env:
PR_NUMBER: ${{ github.event.number }}
Expand All @@ -28,7 +28,7 @@ concurrency:
jobs:
check-recording-bot-changes:
runs-on: ubuntu-latest
outputs:
outputs:
build: ${{ steps.changes.outputs.build }}
deploy: ${{ steps.changes.outputs.deploy }}
docs: ${{ steps.changes.outputs.docs }}
Expand Down Expand Up @@ -85,21 +85,21 @@ jobs:
defaults:
run:
working-directory: deploy

outputs:
app-version-check-passed: ${{ steps.app-version-check.outcome }}
chart-version-check-passed: ${{ steps.chart-version-check.outcome }}

steps:
- uses: actions/checkout@v4
- run: |
git fetch
git branch -a
git fetch
git branch -a

- name: Install Helm
uses: azure/setup-helm@v3
with:
version: 'latest'
version: "latest"

- name: Lint Helm Chart
working-directory: deploy/teams-recording-bot
Expand All @@ -120,39 +120,39 @@ jobs:
)
shell: bash
run: |
echo "🔍 Checking app version changes..."
oldVersion=$(MSYS_NO_PATHCONV=1 git show remotes/origin/$GITHUB_BASE_REF:deploy/teams-recording-bot/Chart.yaml | sed -n "s/^appVersion: \([0-9\.]*\)$/\1/p")
echo "Previous app Version: $oldVersion"
[ -z "$oldVersion" ] && exit 1
echo "🔍 Checking app version changes..."
oldVersion=$(MSYS_NO_PATHCONV=1 git show remotes/origin/$GITHUB_BASE_REF:deploy/teams-recording-bot/Chart.yaml | sed -n "s/^appVersion: \([0-9\.]*\)$/\1/p")
echo "Previous app Version: $oldVersion"
[ -z "$oldVersion" ] && exit 1

newVersion=$(cat teams-recording-bot/Chart.yaml | sed -n "s/^appVersion: \([0-9\.]*\)$/\1/p")
echo "New app Version: $newVersion"
[ -z "$newVersion" ] && exit 1
newVersion=$(cat teams-recording-bot/Chart.yaml | sed -n "s/^appVersion: \([0-9\.]*\)$/\1/p")
echo "New app Version: $newVersion"
[ -z "$newVersion" ] && exit 1

echo "Check if app Version was updated"
[ "$newVersion" = "$oldVersion" ] && exit 1
newerVersion=$(echo -e "$oldVersion\n$newVersion" | sort -V | tail -1)
[ "$newerVersion" = "$newVersion" ] || exit 1
echo "✅ Success app Version was updated!"
echo "Check if app Version was updated"
[ "$newVersion" = "$oldVersion" ] && exit 1
newerVersion=$(echo -e "$oldVersion\n$newVersion" | sort -V | tail -1)
[ "$newerVersion" = "$newVersion" ] || exit 1
echo "✅ Success app Version was updated!"

- name: Check Chart Version Change (PR only)
if: github.event_name == 'pull_request' && needs.check-recording-bot-changes.outputs.deploy == 'True'
shell: bash
run: |
echo "🔍 Checking chart version changes..."
oldVersion=$(MSYS_NO_PATHCONV=1 git show remotes/origin/$GITHUB_BASE_REF:deploy/teams-recording-bot/Chart.yaml | sed -n "s/^version: \([0-9\.]*\)$/\1/p")
echo "Previous Version: $oldVersion"
[ -z "$oldVersion" ] && exit 1
newVersion=$(cat teams-recording-bot/Chart.yaml | sed -n "s/^version: \([0-9\.]*\)$/\1/p")
echo "New Version: $newVersion"
[ -z "$newVersion" ] && exit 1
echo "Check if Version was updated"
[ "$newVersion" = "$oldVersion" ] && exit 1
newerVersion=$(echo -e "$oldVersion\n$newVersion" | sort -V | tail -1)
[ "$newerVersion" = "$newVersion" ] || exit 1
echo "✅ Success Version was updated!"
echo "🔍 Checking chart version changes..."
oldVersion=$(MSYS_NO_PATHCONV=1 git show remotes/origin/$GITHUB_BASE_REF:deploy/teams-recording-bot/Chart.yaml | sed -n "s/^version: \([0-9\.]*\)$/\1/p")
echo "Previous Version: $oldVersion"
[ -z "$oldVersion" ] && exit 1

newVersion=$(cat teams-recording-bot/Chart.yaml | sed -n "s/^version: \([0-9\.]*\)$/\1/p")
echo "New Version: $newVersion"
[ -z "$newVersion" ] && exit 1

echo "Check if Version was updated"
[ "$newVersion" = "$oldVersion" ] && exit 1
newerVersion=$(echo -e "$oldVersion\n$newVersion" | sort -V | tail -1)
[ "$newerVersion" = "$newVersion" ] || exit 1
echo "✅ Success Version was updated!"

start-cluster:
needs: [check-recording-bot-changes, chart-version-checks]
Expand All @@ -166,11 +166,11 @@ jobs:
)
uses: ./.github/workflows/routine-managecluster.yml
with:
action: 'start'
action: "start"
cluster-name: ${{ vars.AKS_CLUSTER_NAME }}
resource-group: ${{ vars.AKS_RESOURCE_GROUP }}
subscription: ${{ vars.AZURE_SUBSCRIPTION_ID }}
secrets:
secrets:
AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}

generate-image-tag:
Expand All @@ -179,15 +179,15 @@ jobs:
needs.chart-version-checks.result == 'success' &&
(
needs.check-recording-bot-changes.outputs.build == 'True' ||
needs.check-recording-bot-changes.outputs.src == 'True' ||
needs.check-recording-bot-changes.outputs.scripts == 'True'
needs.check-recording-bot-changes.outputs.deploy == 'True' ||
needs.check-recording-bot-changes.outputs.scripts == 'True' ||
needs.check-recording-bot-changes.outputs.src == 'True'
)
runs-on: ubuntu-latest

outputs:
image-tag: ${{ steps.generate-tag.outputs.tag }}
image-exists: ${{ steps.check-image.outputs.image-exists }}

steps:
- uses: actions/checkout@v4

Expand All @@ -197,29 +197,44 @@ jobs:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Generate content-based image tag
id: generate-tag
run: |
hash=$(find src build scripts -type f -exec sha256sum {} \; | sort | sha256sum | awk '{print $1}')
if [ '${{ github.event_name }}' = 'pull_request' ]; then
echo "tag=pr-${{ github.event.number }}-${hash:0:8}" >> $GITHUB_OUTPUT
hash=$(find src build scripts -type f -exec sha256sum {} \; | sort | sha256sum | awk '{print $1}')
base_tag=${hash:0:8}

if [ '${{ github.event_name }}' = 'pull_request' ]; then
# For PRs, first check if the base hash (main branch) image exists
if docker manifest inspect ${{ vars.CR_NAMESPACE_REPOSITORY }}:${base_tag} > /dev/null 2>&1; then
echo "✅ Found existing image for hash ${base_tag}, reusing for PR"
echo "tag=${base_tag}" >> $GITHUB_OUTPUT
echo "reused-main-image=true" >> $GITHUB_OUTPUT
else
echo "tag=${hash:0:8}" >> $GITHUB_OUTPUT
echo "❌ No existing image for hash ${base_tag}, will build PR-specific image"
pr_tag="pr-${{ github.event.number }}-${base_tag}"
echo "tag=${pr_tag}" >> $GITHUB_OUTPUT
echo "reused-main-image=false" >> $GITHUB_OUTPUT
fi
else
echo "tag=${base_tag}" >> $GITHUB_OUTPUT
echo "reused-main-image=false" >> $GITHUB_OUTPUT
fi

- name: Check if image exists
id: check-image
run: |
if docker manifest inspect ${{ vars.CR_NAMESPACE_REPOSITORY }}:${{ steps.generate-tag.outputs.tag }} > /dev/null 2>&1; then
echo "Image already exists"
echo "Image already exists: ${{ steps.generate-tag.outputs.tag }}"
echo "image-exists=true" >> $GITHUB_OUTPUT
else
echo "Image does not exist: ${{ steps.generate-tag.outputs.tag }}"
echo "image-exists=false" >> $GITHUB_OUTPUT
fi

build-docker-image:
needs: [check-recording-bot-changes, chart-version-checks, generate-image-tag]
needs:
[check-recording-bot-changes, chart-version-checks, generate-image-tag]
if: |
needs.chart-version-checks.result == 'success' &&
(
Expand All @@ -237,7 +252,14 @@ jobs:
secrets: inherit

deploy-to-environment:
needs: [check-recording-bot-changes, chart-version-checks, start-cluster, build-docker-image, generate-image-tag]
needs:
[
check-recording-bot-changes,
chart-version-checks,
start-cluster,
build-docker-image,
generate-image-tag,
]
if: |
always() &&
needs.start-cluster.result == 'success' &&
Expand All @@ -249,7 +271,7 @@ jobs:
uses: ./.github/workflows/routine-deployenvironment.yml
with:
environment-name: aks-sample
port: '28550'
port: "28550"
cluster-name: ${{ vars.AKS_CLUSTER_NAME }}
resource-group: ${{ vars.AKS_RESOURCE_GROUP }}
subscription: ${{ vars.AZURE_SUBSCRIPTION_ID }}
Expand All @@ -261,12 +283,20 @@ jobs:
public-ip: ${{ needs.start-cluster.outputs.cluster-ip }}
tls-email: ${{ vars.TLS_EMAIL }}
enable-nginx: true
replica-count: '1'
replica-count: "1"
secrets:
AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}

run-tests:
needs: [check-recording-bot-changes, chart-version-checks, start-cluster, build-docker-image, deploy-to-environment, generate-image-tag]
needs:
[
check-recording-bot-changes,
chart-version-checks,
start-cluster,
build-docker-image,
deploy-to-environment,
generate-image-tag,
]
if: always() && needs.deploy-to-environment.result == 'success'
uses: ./.github/workflows/routine-runtests.yml
with:
Expand All @@ -282,4 +312,4 @@ jobs:
USER_B_SEED: ${{ secrets.TEST_USER_B_SEED }}
USER_C_USERNAME: ${{ vars.TEST_USER_C_USERNAME }}
USER_C_PASSWORD: ${{ secrets.TEST_USER_C_PASSWORD }}
USER_C_SEED: ${{ secrets.TEST_USER_C_SEED }}
USER_C_SEED: ${{ secrets.TEST_USER_C_SEED }}
Loading
Loading