From d8247fec01fd86137f2a9b979a46618deac41768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Hells=C3=A9n?= Date: Sun, 4 May 2025 04:08:39 +0200 Subject: [PATCH] Replace GitHub Actions build workflow with Gitea workflow --- .gitea/workflows/build.yml | 98 +++++++++++++++++++++++++++++++++++++ .github/workflows/build.yml | 64 ------------------------ 2 files changed, 98 insertions(+), 64 deletions(-) create mode 100644 .gitea/workflows/build.yml delete mode 100644 .github/workflows/build.yml diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..f340331 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,98 @@ +--- +name: Test and build Docker image +on: + push: + branches: + - master + pull_request: + workflow_dispatch: + schedule: + - cron: "@daily" + +env: + TEST_WEBHOOK_URL: ${{ secrets.TEST_WEBHOOK_URL }} + +jobs: + docker: + runs-on: ubuntu-latest + 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 . + + # Set up Python 3.13 + - uses: actions/setup-python@v5 + with: + python-version: 3.13 + + # Install dependencies + - uses: astral-sh/setup-uv@v5 + with: + version: "latest" + - run: uv sync --all-extras --all-groups + + # Run tests + - run: uv run pytest + + # 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/discord-rss-bot + git.lovinator.space/thelovinator/discord-rss-bot + tags: | + type=raw,value=latest,enable=${{ gitea.ref == format('refs/heads/{0}', 'master') }} + type=raw,value=master,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 }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 7f0ea6d..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -name: Test and build Docker image -on: - push: - pull_request: - workflow_dispatch: - schedule: - - cron: "0 6 * * *" - -env: - TEST_WEBHOOK_URL: ${{ secrets.TEST_WEBHOOK_URL }} - -jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: 3.12 - - uses: astral-sh/setup-uv@v5 - with: - version: "latest" - - run: uv sync --all-extras --all-groups - - run: uv run pytest - ruff: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: astral-sh/ruff-action@v3 - with: - version: "latest" - - run: ruff check --exit-non-zero-on-fix --verbose - - run: ruff format --check --verbose - - build: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - if: github.event_name != 'pull_request' - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - needs: [test, ruff] - steps: - - uses: actions/checkout@v4 - - uses: docker/setup-qemu-action@v3 - with: - platforms: all - - uses: docker/setup-buildx-action@v3 - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/build-push-action@v6 - with: - context: . - platforms: linux/amd64, linux/arm64 - push: ${{ github.event_name != 'pull_request' }} - tags: | - ghcr.io/thelovinator1/discord-rss-bot:latest - ghcr.io/thelovinator1/discord-rss-bot:master