name: Build & Push on: push: branches: - main env: REGISTRY: git.sebse.de IMAGE: git.sebse.de/sebse/factorio-signal-exporter IMAGE_MIGRATE: git.sebse.de/sebse/factorio-signal-exporter-migrate jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Helm uses: azure/setup-helm@v4 - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Extract metadata (app) id: meta uses: docker/metadata-action@v5 with: images: ${{ env.IMAGE }} tags: | type=sha,prefix=,format=short type=raw,value=latest - name: Build and push app uses: docker/build-push-action@v5 with: context: ./web push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=registry,ref=${{ env.IMAGE }}:latest cache-to: type=inline - name: Extract metadata (migrate) id: meta-migrate uses: docker/metadata-action@v5 with: images: ${{ env.IMAGE_MIGRATE }} tags: | type=sha,prefix=,format=short type=raw,value=latest - name: Build and push migrate uses: docker/build-push-action@v5 with: context: ./web file: ./web/Dockerfile.migrate push: true tags: ${{ steps.meta-migrate.outputs.tags }} labels: ${{ steps.meta-migrate.outputs.labels }} cache-from: type=registry,ref=${{ env.IMAGE_MIGRATE }}:latest cache-to: type=inline - name: Inject image tags into chart values run: | SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7) sed -i "s|^\(\s*tag:\).*|\1 ${SHORT_SHA}|" web/charts/factorio-signal-exporter/values.yaml - name: Package Helm chart (SHA) run: | SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7) helm package web/charts/factorio-signal-exporter \ --version "0.0.0-${SHORT_SHA}" \ --app-version "${SHORT_SHA}" - name: Push Helm chart (SHA) to Gitea run: | SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7) curl -u ${{ secrets.REGISTRY_USERNAME }}:${{ secrets.REGISTRY_TOKEN }} \ -X POST \ https://${{ env.REGISTRY }}/api/packages/sebse/helm/api/charts \ -F "chart=@factorio-signal-exporter-0.0.0-${SHORT_SHA}.tgz" \ --fail-with-body - name: Package Helm chart (latest) run: | SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7) helm package web/charts/factorio-signal-exporter \ --version "0.0.0-latest" \ --app-version "${SHORT_SHA}" - name: Push Helm chart (latest) to Gitea run: | curl -u ${{ secrets.REGISTRY_USERNAME }}:${{ secrets.REGISTRY_TOKEN }} \ -X POST \ https://${{ env.REGISTRY }}/api/packages/sebse/helm/api/charts \ -F "chart=@factorio-signal-exporter-0.0.0-latest.tgz" \ --fail-with-body - name: Deploy to prod run: | SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7) mkdir -p ~/.ssh echo "${{ secrets.HELMBOT_SSH_KEY }}" > ~/.ssh/helmbot_deploy chmod 600 ~/.ssh/helmbot_deploy ssh -i ~/.ssh/helmbot_deploy \ -o StrictHostKeyChecking=no \ -p 1234 \ helmbot@84.247.134.31 \ " -s factorio-signal-exporter -p prod -v 0.0.0-${SHORT_SHA}" rm ~/.ssh/helmbot_deploy