name: Build Docker Image on: push: branches: - main schedule: - cron: '@monthly' jobs: build-3-10-amd64: runs-on: linux_amd name: Build Python 3.10 AMD64 container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache outputs: digest: ${{ steps.build-docker.outputs.digest }} steps: - name: Checkout uses: actions/checkout@v4 with: github-server-url: https://gitea.technocloud.ee - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: platforms: linux/amd64 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | echo "REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Build and Push AMD64 id: build-docker uses: docker/build-push-action@v5 with: context: . file: Dockerfile.python3.10 platforms: linux/amd64 push: true provenance: false outputs: type=image,name=gitea.technocloud.ee/${{ steps.meta.outputs.REPO_NAME }},push-by-digest=true build-3-10-arm64: runs-on: ubuntu-latest name: Build Python 3.10 ARM64 container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache outputs: digest: ${{ steps.build-docker.outputs.digest }} steps: - name: Checkout uses: actions/checkout@v4 with: github-server-url: https://gitea.technocloud.ee - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: platforms: linux/arm64 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | echo "REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Build and Push ARM64 id: build-docker uses: docker/build-push-action@v6 with: context: . file: Dockerfile.python3.10 platforms: linux/arm64 push: true provenance: false outputs: type=image,name=gitea.technocloud.ee/${{ steps.meta.outputs.REPO_NAME }},push-by-digest=true create-manifest-3-10: needs: [build-3-10-arm64, build-3-10-amd64] runs-on: ubuntu-latest name: Create Python 3.10 Manifest steps: - name: Login to Docker Registry uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: driver: docker-container - name: Get Repository Metadata id: meta run: | echo "PACKAGE=gitea.technocloud.ee/${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Create and Push Multi-arch Manifest run: | IMAGE_NAME=${{ steps.meta.outputs.PACKAGE }}:python3.10 docker manifest create $IMAGE_NAME \ --amend ${{ steps.meta.outputs.PACKAGE }}@${{ needs.build-3-10-arm64.outputs.digest }} \ --amend ${{ steps.meta.outputs.PACKAGE }}@${{ needs.build-3-10-amd64.outputs.digest }} docker manifest push $IMAGE_NAME build-3-11-amd64: runs-on: linux_amd name: Build Python 3.11 AMD64 container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache outputs: digest: ${{ steps.build-docker.outputs.digest }} steps: - name: Checkout uses: actions/checkout@v4 with: github-server-url: https://gitea.technocloud.ee - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: platforms: linux/amd64 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | echo "REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Build and Push AMD64 id: build-docker uses: docker/build-push-action@v5 with: context: . file: Dockerfile.python3.11 platforms: linux/amd64 push: true provenance: false outputs: type=image,name=gitea.technocloud.ee/${{ steps.meta.outputs.REPO_NAME }},push-by-digest=true build-3-11-arm64: runs-on: ubuntu-latest name: Build Python 3.11 ARM64 container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache outputs: digest: ${{ steps.build-docker.outputs.digest }} steps: - name: Checkout uses: actions/checkout@v4 with: github-server-url: https://gitea.technocloud.ee - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: platforms: linux/arm64 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | echo "REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Build and Push ARM64 id: build-docker uses: docker/build-push-action@v6 with: context: . file: Dockerfile.python3.11 platforms: linux/arm64 push: true provenance: false outputs: type=image,name=gitea.technocloud.ee/${{ steps.meta.outputs.REPO_NAME }},push-by-digest=true create-manifest-3-11: needs: [build-3-11-arm64, build-3-11-amd64] runs-on: ubuntu-latest name: Create Python 3.11 Manifest steps: - name: Login to Docker Registry uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: driver: docker-container - name: Get Repository Metadata id: meta run: | echo "PACKAGE=gitea.technocloud.ee/${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Create and Push Multi-arch Manifest run: | IMAGE_NAME=${{ steps.meta.outputs.PACKAGE }}:python3.11 docker manifest create $IMAGE_NAME \ --amend ${{ steps.meta.outputs.PACKAGE }}@${{ needs.build-3-11-arm64.outputs.digest }} \ --amend ${{ steps.meta.outputs.PACKAGE }}@${{ needs.build-3-11-amd64.outputs.digest }} docker manifest push $IMAGE_NAME build-3-12-amd64: runs-on: linux_amd name: Build Python 3.12 AMD64 container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache outputs: digest: ${{ steps.build-docker.outputs.digest }} steps: - name: Checkout uses: actions/checkout@v4 with: github-server-url: https://gitea.technocloud.ee - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: platforms: linux/amd64 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | echo "REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Build and Push AMD64 id: build-docker uses: docker/build-push-action@v5 with: context: . file: Dockerfile.python3.12 platforms: linux/amd64 push: true provenance: false outputs: type=image,name=gitea.technocloud.ee/${{ steps.meta.outputs.REPO_NAME }},push-by-digest=true build-3-12-arm64: runs-on: ubuntu-latest name: Build Python 3.12 ARM64 container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache outputs: digest: ${{ steps.build-docker.outputs.digest }} steps: - name: Checkout uses: actions/checkout@v4 with: github-server-url: https://gitea.technocloud.ee - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: platforms: linux/arm64 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | echo "REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Build and Push ARM64 id: build-docker uses: docker/build-push-action@v6 with: context: . file: Dockerfile.python3.12 platforms: linux/arm64 push: true provenance: false outputs: type=image,name=gitea.technocloud.ee/${{ steps.meta.outputs.REPO_NAME }},push-by-digest=true create-manifest-3-12: needs: [build-3-12-arm64, build-3-12-amd64] runs-on: ubuntu-latest name: Create Python 3.12 Manifest steps: - name: Login to Docker Registry uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: driver: docker-container - name: Get Repository Metadata id: meta run: | echo "PACKAGE=gitea.technocloud.ee/${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Create and Push Multi-arch Manifest run: | IMAGE_NAME=${{ steps.meta.outputs.PACKAGE }}:python3.12 docker manifest create $IMAGE_NAME \ --amend ${{ steps.meta.outputs.PACKAGE }}@${{ needs.build-3-12-arm64.outputs.digest }} \ --amend ${{ steps.meta.outputs.PACKAGE }}@${{ needs.build-3-12-amd64.outputs.digest }} docker manifest push $IMAGE_NAME build-3-13-amd64: runs-on: linux_amd name: Build Python 3.13 AMD64 container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache outputs: digest: ${{ steps.build-docker.outputs.digest }} steps: - name: Checkout uses: actions/checkout@v4 with: github-server-url: https://gitea.technocloud.ee - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: platforms: linux/amd64 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | echo "REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Build and Push AMD64 id: build-docker uses: docker/build-push-action@v5 with: context: . file: Dockerfile.python3.13 platforms: linux/amd64 push: true provenance: false outputs: type=image,name=gitea.technocloud.ee/${{ steps.meta.outputs.REPO_NAME }},push-by-digest=true build-3-13-arm64: runs-on: ubuntu-latest name: Build Python 3.13 ARM64 container: image: catthehacker/ubuntu:act-latest env: RUNNER_TOOL_CACHE: /toolcache outputs: digest: ${{ steps.build-docker.outputs.digest }} steps: - name: Checkout uses: actions/checkout@v4 with: github-server-url: https://gitea.technocloud.ee - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: platforms: linux/arm64 - name: Login to DockerHub uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | echo "REPO_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Build and Push ARM64 id: build-docker uses: docker/build-push-action@v6 with: context: . file: Dockerfile.python3.13 platforms: linux/arm64 push: true provenance: false outputs: type=image,name=gitea.technocloud.ee/${{ steps.meta.outputs.REPO_NAME }},push-by-digest=true create-manifest-3-13: needs: [build-3-13-arm64, build-3-13-amd64] runs-on: ubuntu-latest name: Create Python 3.13 Manifest steps: - name: Login to Docker Registry uses: docker/login-action@v3 with: registry: gitea.technocloud.ee username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Set up Docker BuildX uses: docker/setup-buildx-action@v3 with: driver: docker-container - name: Get Repository Metadata id: meta run: | echo "PACKAGE=gitea.technocloud.ee/${GITHUB_REPOSITORY}" >> $GITHUB_OUTPUT - name: Create and Push Multi-arch Manifest run: | IMAGE_NAME=${{ steps.meta.outputs.PACKAGE }}:python3.13 docker manifest create $IMAGE_NAME \ --amend ${{ steps.meta.outputs.PACKAGE }}@${{ needs.build-3-13-arm64.outputs.digest }} \ --amend ${{ steps.meta.outputs.PACKAGE }}@${{ needs.build-3-13-amd64.outputs.digest }} docker manifest push $IMAGE_NAME