From f5568e105812d419bc354da8d3c3617223f70fb4 Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Sun, 24 May 2026 02:34:19 +0200
Subject: [PATCH] refactor: migrate to Forgejo workflows, normalize env file
names, remove GitHub Actions
Co-authored-by: Cursor
---
...> main_service-main-teams-browser-bot.yml} | 6 +-
.github/workflows/build-deploy.yml | 132 ------------------
env-teamsbot-dev.env => env-dev.env | 0
env-teamsbot-main.env => env-main.env | 0
4 files changed, 3 insertions(+), 135 deletions(-)
rename .forgejo/workflows/{deploy.yml => main_service-main-teams-browser-bot.yml} (95%)
delete mode 100644 .github/workflows/build-deploy.yml
rename env-teamsbot-dev.env => env-dev.env (100%)
rename env-teamsbot-main.env => env-main.env (100%)
diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/main_service-main-teams-browser-bot.yml
similarity index 95%
rename from .forgejo/workflows/deploy.yml
rename to .forgejo/workflows/main_service-main-teams-browser-bot.yml
index c31db05..632ba02 100644
--- a/.forgejo/workflows/deploy.yml
+++ b/.forgejo/workflows/main_service-main-teams-browser-bot.yml
@@ -20,8 +20,8 @@ jobs:
- name: Set environment
run: |
- cp env-teamsbot-main.env .env
- rm -f env-teamsbot-*.env
+ cp env-main.env .env
+ rm -f env-*.env
- name: Setup SSH
run: |
@@ -45,7 +45,7 @@ jobs:
--exclude 'dist' \
--exclude 'output' \
--exclude '__pycache__' \
- --exclude 'env-teamsbot-*.env' \
+ --exclude 'env-*.env' \
./ ${{ env.SERVER_USER }}@${{ env.SERVER_HOST }}:${{ env.APP_DIR }}/
- name: Build and start container
diff --git a/.github/workflows/build-deploy.yml b/.github/workflows/build-deploy.yml
deleted file mode 100644
index 8c40945..0000000
--- a/.github/workflows/build-deploy.yml
+++ /dev/null
@@ -1,132 +0,0 @@
-name: Build and Deploy to ACR
-
-on:
- push:
- branches:
- - main
- - dev
- workflow_dispatch:
-
-# Cancel in-progress runs when a new run is triggered (saves logs/storage)
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
-
-env:
- IMAGE_NAME: teams-browser-bot
- RESOURCE_GROUP: resource-core
- CONTAINER_APP_NAME: cae-poweron-shared
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v5
-
- - name: Determine environment
- id: env
- run: |
- if [ "${{ github.ref }}" == "refs/heads/dev" ]; then
- echo "env_file=env-teamsbot-dev.env" >> $GITHUB_OUTPUT
- else
- echo "env_file=env-teamsbot-main.env" >> $GITHUB_OUTPUT
- fi
-
- - name: Set environment
- run: |
- cp ${{ steps.env.outputs.env_file }} .env
- rm -f env-teamsbot-*.env
-
- - name: Log in to Azure Container Registry
- uses: docker/login-action@v4
- with:
- registry: ${{ secrets.ACR_LOGIN_SERVER }}
- username: ${{ secrets.ACR_USERNAME }}
- password: ${{ secrets.ACR_PASSWORD }}
-
- - name: Build and push Docker image
- uses: docker/build-push-action@v6
- with:
- context: .
- push: true
- tags: |
- ${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:latest
- ${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
-
- - name: Azure Login
- uses: azure/login@v3
- with:
- creds: ${{ secrets.AZURE_CREDENTIALS }}
-
- - name: Deploy to Container App
- uses: azure/cli@v2
- with:
- azcliversion: latest
- inlineScript: |
- SUFFIX=$(echo "${{ github.sha }}" | cut -c1-8)
-
- # Update image AND ensure minReplicas=1 so the container actually starts.
- # Without --min-replicas 1, Azure scales to zero and the bot never boots.
- az containerapp update \
- --name ${{ env.CONTAINER_APP_NAME }} \
- --resource-group ${{ env.RESOURCE_GROUP }} \
- --image ${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \
- --revision-suffix "deploy-${SUFFIX}" \
- --min-replicas 1 \
- --max-replicas 1
-
- - name: Verify deployment
- uses: azure/cli@v2
- with:
- azcliversion: latest
- inlineScript: |
- sleep 15
-
- # Get the revision we just deployed (sorted by creation date, newest first)
- EXPECTED_SUFFIX="deploy-$(echo "${{ github.sha }}" | cut -c1-8)"
- LATEST_REVISION=$(az containerapp revision list \
- --name ${{ env.CONTAINER_APP_NAME }} \
- --resource-group ${{ env.RESOURCE_GROUP }} \
- --query "sort_by(@, &properties.createdTime) | [-1].name" -o tsv)
- echo "Latest revision: $LATEST_REVISION"
-
- # Check provisioning state
- STATE=$(az containerapp revision show \
- --name ${{ env.CONTAINER_APP_NAME }} \
- --resource-group ${{ env.RESOURCE_GROUP }} \
- --revision "$LATEST_REVISION" \
- --query "properties.runningState" -o tsv 2>/dev/null || echo "unknown")
- echo "Revision state: $STATE"
-
- # Activate revision if not running, then restart
- if [ "$STATE" != "Running" ]; then
- echo "Revision not running yet, activating..."
- az containerapp revision activate \
- --name ${{ env.CONTAINER_APP_NAME }} \
- --resource-group ${{ env.RESOURCE_GROUP }} \
- --revision "$LATEST_REVISION" || true
- sleep 5
- fi
-
- az containerapp revision restart \
- --name ${{ env.CONTAINER_APP_NAME }} \
- --resource-group ${{ env.RESOURCE_GROUP }} \
- --revision "$LATEST_REVISION" || true
-
- # Final status check
- sleep 10
- REPLICAS=$(az containerapp revision show \
- --name ${{ env.CONTAINER_APP_NAME }} \
- --resource-group ${{ env.RESOURCE_GROUP }} \
- --revision "$LATEST_REVISION" \
- --query "properties.replicas" -o tsv 2>/dev/null || echo "0")
- echo "Running replicas: $REPLICAS"
-
- - name: Summary
- run: |
- echo "### Deployed successfully! :rocket:" >> $GITHUB_STEP_SUMMARY
- echo "" >> $GITHUB_STEP_SUMMARY
- echo "Image: \`${{ secrets.ACR_LOGIN_SERVER }}/${{ env.IMAGE_NAME }}:${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
- echo "Env: \`${{ steps.env.outputs.env_file }}\`" >> $GITHUB_STEP_SUMMARY
diff --git a/env-teamsbot-dev.env b/env-dev.env
similarity index 100%
rename from env-teamsbot-dev.env
rename to env-dev.env
diff --git a/env-teamsbot-main.env b/env-main.env
similarity index 100%
rename from env-teamsbot-main.env
rename to env-main.env