tests #941
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Docker Image CI | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - "**" | |
| paths: | |
| - 'packages/dota/**' # Dota service and related changes | |
| - 'packages/twitch-chat/**' # Twitch Chat service changes | |
| - 'packages/steam/**' # Steam service changes | |
| - 'packages/twitch-events/**' # Twitch Events service changes | |
| - 'packages/shared-utils/**' # Shared utilities used by multiple services | |
| - 'packages/profanity-filter/**' | |
| - 'package.json' | |
| - 'bun.lock' | |
| - 'packages/Dockerfile.bun' # Shared Dockerfile for bun-based services | |
| - 'docker-compose.yml' # Compose file changes might affect all services | |
| jobs: | |
| # Dota job remains separate because it has extra change checks | |
| dota: | |
| runs-on: ubuntu-latest | |
| environment: prod | |
| permissions: | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 2 | |
| - name: Check for changes in dota service | |
| id: dota-changes | |
| run: | | |
| git diff --name-only HEAD^ HEAD | grep -q "^packages/profanity-filter/" && echo "profanity_filter_changed=true" >> $GITHUB_OUTPUT || echo "profanity_filter_changed=false" >> $GITHUB_OUTPUT | |
| git diff --name-only HEAD^ HEAD | grep -q "^package.json\|^bun.lock" && echo "deps_changed=true" >> $GITHUB_OUTPUT || echo "deps_changed=false" >> $GITHUB_OUTPUT | |
| git diff --name-only HEAD^ HEAD | grep -q "^packages/dota/" && echo "changed=true" >> $GITHUB_OUTPUT || echo "changed=false" >> $GITHUB_OUTPUT | |
| git diff --name-only HEAD^ HEAD | grep -q "^packages/shared-utils/" && echo "shared_utils_changed=true" >> $GITHUB_OUTPUT || echo "shared_utils_changed=false" >> $GITHUB_OUTPUT | |
| git diff --name-only HEAD^ HEAD | grep -q "^packages/Dockerfile.bun" && echo "dockerfile_changed=true" >> $GITHUB_OUTPUT || echo "dockerfile_changed=false" >> $GITHUB_OUTPUT | |
| git diff --name-only HEAD^ HEAD | grep -q "^docker-compose.yml" && echo "compose_changed=true" >> $GITHUB_OUTPUT || echo "compose_changed=false" >> $GITHUB_OUTPUT | |
| - name: Extract branch name | |
| if: ${{ github.event_name == 'workflow_dispatch' || steps.dota-changes.outputs.changed == 'true' || steps.dota-changes.outputs.dockerfile_changed == 'true' || steps.dota-changes.outputs.compose_changed == 'true' || steps.dota-changes.outputs.deps_changed == 'true' || steps.dota-changes.outputs.profanity_filter_changed == 'true' || steps.dota-changes.outputs.shared_utils_changed == 'true' }} | |
| shell: bash | |
| run: | | |
| echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV | |
| # Sanitize branch name for Docker tag (replace '/' with '-') | |
| echo "DOCKER_TAG=$(echo ${GITHUB_REF#refs/heads/} | sed 's/\//-/g')" >> $GITHUB_ENV | |
| - name: Set up Docker Buildx | |
| if: ${{ github.event_name == 'workflow_dispatch' || steps.dota-changes.outputs.changed == 'true' || steps.dota-changes.outputs.dockerfile_changed == 'true' || steps.dota-changes.outputs.compose_changed == 'true' || steps.dota-changes.outputs.deps_changed == 'true' || steps.dota-changes.outputs.profanity_filter_changed == 'true' || steps.dota-changes.outputs.shared_utils_changed == 'true' }} | |
| uses: docker/setup-buildx-action@v3 | |
| with: | |
| driver-opts: | | |
| network=host | |
| image=moby/buildkit:latest | |
| buildkitd-flags: --debug | |
| - name: Login to ghcr | |
| if: ${{ github.event_name == 'workflow_dispatch' || steps.dota-changes.outputs.changed == 'true' || steps.dota-changes.outputs.dockerfile_changed == 'true' || steps.dota-changes.outputs.compose_changed == 'true' || steps.dota-changes.outputs.deps_changed == 'true' || steps.dota-changes.outputs.profanity_filter_changed == 'true' || steps.dota-changes.outputs.shared_utils_changed == 'true' }} | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GHA_PAT }} | |
| - name: Build and push | |
| if: ${{ github.event_name == 'workflow_dispatch' || steps.dota-changes.outputs.changed == 'true' || steps.dota-changes.outputs.dockerfile_changed == 'true' || steps.dota-changes.outputs.compose_changed == 'true' || steps.dota-changes.outputs.deps_changed == 'true' || steps.dota-changes.outputs.profanity_filter_changed == 'true' || steps.dota-changes.outputs.shared_utils_changed == 'true' }} | |
| uses: docker/bake-action@v6 | |
| with: | |
| push: true | |
| provenance: false | |
| targets: dota | |
| set: | | |
| *.platform=linux/arm64,linux/amd64/v3 | |
| dota.tags=ghcr.io/${{ github.repository_owner }}/dota:${{ env.DOCKER_TAG }} | |
| *.cache-from= | |
| *.cache-to= | |
| # Combined job for twitch-chat, steam, and twitch-events using a matrix | |
| services: | |
| runs-on: ubuntu-latest | |
| environment: prod | |
| permissions: | |
| packages: write | |
| strategy: | |
| matrix: | |
| include: | |
| - service: twitch-chat | |
| changed_path: "^packages/twitch-chat/" | |
| dockerfile: "packages/Dockerfile.bun" | |
| - service: steam | |
| changed_path: "^packages/steam/" | |
| dockerfile: "packages/Dockerfile.steam" | |
| - service: twitch-events | |
| changed_path: "^packages/twitch-events/" | |
| dockerfile: "packages/Dockerfile.bun" | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 2 | |
| - name: Check for changes in ${{ matrix.service }} service | |
| id: changes | |
| run: | | |
| git diff --name-only HEAD^ HEAD | grep -q "${{ matrix.changed_path }}" && echo "changed=true" >> $GITHUB_OUTPUT || echo "changed=false" >> $GITHUB_OUTPUT | |
| git diff --name-only HEAD^ HEAD | grep -q "^packages/shared-utils/" && echo "shared_utils_changed=true" >> $GITHUB_OUTPUT || echo "shared_utils_changed=false" >> $GITHUB_OUTPUT | |
| git diff --name-only HEAD^ HEAD | grep -q "^${{ matrix.dockerfile }}" && echo "dockerfile_changed=true" >> $GITHUB_OUTPUT || echo "dockerfile_changed=false" >> $GITHUB_OUTPUT | |
| git diff --name-only HEAD^ HEAD | grep -q "^docker-compose.yml" && echo "compose_changed=true" >> $GITHUB_OUTPUT || echo "compose_changed=false" >> $GITHUB_OUTPUT | |
| - name: Extract branch name | |
| if: ${{ github.event_name == 'workflow_dispatch' || steps.changes.outputs.changed == 'true' || steps.changes.outputs.shared_utils_changed == 'true' || steps.changes.outputs.dockerfile_changed == 'true' || steps.changes.outputs.compose_changed == 'true' }} | |
| shell: bash | |
| run: | | |
| echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV | |
| # Sanitize branch name for Docker tag (replace '/' with '-') | |
| echo "DOCKER_TAG=$(echo ${GITHUB_REF#refs/heads/} | sed 's/\//-/g')" >> $GITHUB_ENV | |
| - name: Set up Docker Buildx | |
| if: ${{ github.event_name == 'workflow_dispatch' || steps.changes.outputs.changed == 'true' || steps.changes.outputs.shared_utils_changed == 'true' || steps.changes.outputs.dockerfile_changed == 'true' || steps.changes.outputs.compose_changed == 'true' }} | |
| uses: docker/setup-buildx-action@v3 | |
| with: | |
| driver-opts: | | |
| network=host | |
| image=moby/buildkit:latest | |
| buildkitd-flags: --debug | |
| - name: Login to ghcr | |
| if: ${{ github.event_name == 'workflow_dispatch' || steps.changes.outputs.changed == 'true' || steps.changes.outputs.shared_utils_changed == 'true' || steps.changes.outputs.dockerfile_changed == 'true' || steps.changes.outputs.compose_changed == 'true' }} | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GHA_PAT }} | |
| - name: Build and push | |
| if: ${{ github.event_name == 'workflow_dispatch' || steps.changes.outputs.changed == 'true' || steps.changes.outputs.shared_utils_changed == 'true' || steps.changes.outputs.dockerfile_changed == 'true' || steps.changes.outputs.compose_changed == 'true' }} | |
| uses: docker/bake-action@v6 | |
| with: | |
| push: true | |
| provenance: false | |
| targets: ${{ matrix.service }} | |
| set: | | |
| *.platform=linux/arm64,linux/amd64/v3 | |
| ${{ matrix.service }}.tags=ghcr.io/${{ github.repository_owner }}/${{ matrix.service }}:${{ env.DOCKER_TAG }} | |
| *.cache-from= | |
| *.cache-to= |