name: Build Docker Image on: push: branches: - master pull_request: workflow_dispatch: schedule: - cron: "@daily" cache: enabled: true dir: "" host: "gitea_act_runner" port: 8088 jobs: docker: runs-on: ubuntu-latest env: DISCORD_TOKEN: "0" OPENAI_TOKEN: "0" steps: # GitHub Container Registry - uses: https://github.com/docker/login-action@v3 if: github.event_name != 'pull_request' with: registry: ghcr.io username: thelovinator1 password: ${{ secrets.PACKAGES_WRITE_GITHUB_TOKEN }} # Gitea Container Registry - uses: https://github.com/docker/login-action@v3 if: github.event_name != 'pull_request' with: registry: git.lovinator.space username: thelovinator password: ${{ secrets.PACKAGES_WRITE_GITEA_TOKEN }} # Download the latest commit from the master branch - uses: https://github.com/actions/checkout@v4 # Set up QEMU - id: qemu uses: https://github.com/docker/setup-qemu-action@v3 with: image: tonistiigi/binfmt:master platforms: linux/amd64,linux/arm64 cache-image: false # Set up Buildx so we can build multi-arch images - uses: https://github.com/docker/setup-buildx-action@v3 # Install the latest version of ruff - uses: https://github.com/astral-sh/ruff-action@v3 with: version: "latest" # Lint the Python code using ruff - run: ruff check --exit-non-zero-on-fix --verbose # Check if the Python code needs formatting - run: ruff format --check --verbose # Lint Dockerfile - run: docker build --check . # Extract metadata (tags, labels) from Git reference and GitHub events for Docker - id: meta uses: https://github.com/docker/metadata-action@v5 env: DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index with: images: | ghcr.io/thelovinator1/anewdawn git.lovinator.space/thelovinator/anewdawn tags: type=raw,value=latest,enable=${{ gitea.ref == format('refs/heads/{0}', 'master') }} # Build and push the Docker image - uses: https://github.com/docker/build-push-action@v6 with: context: . platforms: linux/amd64,linux/arm64 push: ${{ gitea.event_name != 'pull_request' }} labels: ${{ steps.meta.outputs.labels }} tags: ${{ steps.meta.outputs.tags }} annotations: ${{ steps.meta.outputs.annotations }} cache-from: type=gha cache-to: type=gha,mode=max