name: Build and push run-name: ${{ gitea.actor }} pushed new code for dale-bot on: [push] jobs: changes: runs-on: ubuntu-latest outputs: python_files: ${{ steps.filter.outputs.python_files }} helm_files: ${{ steps.filter.outputs.helm }} steps: - name: Check out repository code uses: actions/checkout@v4 - uses: dorny/paths-filter@v3 id: filter with: filters: | python_files: - 'app/**' helm: - 'helm/**' docker: - 'Dockerfile' Lint-Python: runs-on: ubuntu-latest needs: changes if: ${{ needs.changes.outputs.python_files == 'true' }} steps: - name: Check out repository code uses: actions/checkout@v4 - name: install UV run: | pip install uv --quiet if: steps.filter.outputs.python_files == 'true' - name: install black and lint code run: | uv pip install black --system --quiet black app --check --fast if: steps.filter.outputs.python_files == 'true' Build-and-Push-Docker: needs: [changes, Lint-Python] if: ${{ needs.changes.outputs.python_files == 'true' || needs.changes.outputs.docker == 'true' }} steps: - name: Login to Docker Hub if: github.event_name != 'pull_request' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Check out repository code uses: actions/checkout@v4 - name: Build and push uses: docker/build-push-action@v2 with: context: . platforms: linux/amd64 push: true tags: | ldooks/dragon-bot:latest ldooks/dragon-bot:${{ gitea.run_id }} sync-argocd-app: needs: [changes, Build-and-Push-Docker] if: ${{ needs.Build-and-Push-Docker.result == 'success' }} steps: - name: Sync app in ArgoCD uses: clowdhaus/argo-cd-action/@main with: version: 2.6.7 command: app options: --insecure --server 192.168.1.205 --auth-token ${{ secrets.ARGOCD_TOKEN }} set dragon-bot --helm-set image.tag=${{ gitea.run_id }} post-status-to-discord: needs: [changes, Build-and-Push-Docker] if: ${{ needs.Build-and-Push-Docker.result == 'success' }} steps: - name: Post status of successful run to discord if: github.event_name != 'pull_request' uses: sarisia/actions-status-discord@v1 with: webhook: ${{ secrets.DISCORD_WEBHOOK }} if: ${{ needs.Build-and-Push-Docker.result == 'failure' }} steps: - name: Post status of failed run to discord if: github.event_name != 'pull_request' uses: sarisia/actions-status-discord@v1 with: webhook: ${{ secrets.DISCORD_WEBHOOK }} color: 0xff0000