diff --git a/.github/workflows/docker-publish-base.yml b/.github/workflows/docker-publish-base.yml index 050a829..c7e4bd6 100644 --- a/.github/workflows/docker-publish-base.yml +++ b/.github/workflows/docker-publish-base.yml @@ -8,6 +8,7 @@ on: - "python/**" - "typescript/**" - ".github/workflows/docker-publish-devops.yml" + - ".github/workflows/docker-publish-python.yml" env: # github.repository as / diff --git a/.github/workflows/docker-publish-devops.yml b/.github/workflows/docker-publish-devops.yml new file mode 100644 index 0000000..762991a --- /dev/null +++ b/.github/workflows/docker-publish-devops.yml @@ -0,0 +1,87 @@ +name: Docker-Base + +on: + push: + branches: [ "main" ] + paths: + - "devops/**" + - ".github/workflows/docker-publish-devops.yml" + +env: + # github.repository as / + IMAGE_NAME: ${{ github.repository }} + + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Setup Docker buildx + uses: docker/setup-buildx-action@v3 + + # Login against a Docker registry + # https://github.com/docker/login-action + - name: Log into Docker Hub + uses: docker/login-action@v3 + with: + registry: docker.io + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log in to the Github Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + # https://github.com/docker/metadata-action + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v3 + with: + images: | + docker.io/${{ env.IMAGE_NAME }} + ghcr.io/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=devops + flavor: | + latest=false + + # Build and push Docker image with Buildx (don't push on PR) + # https://github.com/docker/build-push-action + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@v3 + with: + context: devops + platforms: linux/amd64,linux/arm64/v8 + push: true + tags: ${{ steps.meta.outputs.tags }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + VERSION="devops" + COMMIT_HASH=${GITHUB_SHA::8} + BUILD_DATE=$(git show -s --format=%cI) + labels: | + ${{ steps.meta.outputs.labels }} + org.opencontainers.image.title=${{ github.event.repository.name }} + org.opencontainers.image.description=${{ github.event.repository.description }} + org.opencontainers.image.url=${{ github.event.repository.html_url }} + org.opencontainers.image.source=${{ github.event.repository.clone_url }} + org.opencontainers.image.version=${{ steps.tags.outputs.version }} + org.opencontainers.image.created=${{ steps.tags.outputs.build_date }} + org.opencontainers.image.revision=${{ github.sha }} + org.opencontainers.image.licenses=${{ github.event.repository.license.spdx_id }} \ No newline at end of file diff --git a/.github/workflows/docker-publish-python.yml b/.github/workflows/docker-publish-python.yml new file mode 100644 index 0000000..e7e2bf4 --- /dev/null +++ b/.github/workflows/docker-publish-python.yml @@ -0,0 +1,87 @@ +name: Docker-Base + +on: + push: + branches: [ "main" ] + paths: + - "python/**" + - ".github/workflows/docker-publish-python.yml" + +env: + # github.repository as / + IMAGE_NAME: ${{ github.repository }} + + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Setup Docker buildx + uses: docker/setup-buildx-action@v3 + + # Login against a Docker registry + # https://github.com/docker/login-action + - name: Log into Docker Hub + uses: docker/login-action@v3 + with: + registry: docker.io + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log in to the Github Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + # https://github.com/docker/metadata-action + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v3 + with: + images: | + docker.io/${{ env.IMAGE_NAME }} + ghcr.io/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=python + flavor: | + latest=false + + # Build and push Docker image with Buildx (don't push on PR) + # https://github.com/docker/build-push-action + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@v3 + with: + context: python + platforms: linux/amd64,linux/arm64/v8 + push: true + tags: ${{ steps.meta.outputs.tags }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + VERSION="python" + COMMIT_HASH=${GITHUB_SHA::8} + BUILD_DATE=$(git show -s --format=%cI) + labels: | + ${{ steps.meta.outputs.labels }} + org.opencontainers.image.title=${{ github.event.repository.name }} + org.opencontainers.image.description=${{ github.event.repository.description }} + org.opencontainers.image.url=${{ github.event.repository.html_url }} + org.opencontainers.image.source=${{ github.event.repository.clone_url }} + org.opencontainers.image.version=${{ steps.tags.outputs.version }} + org.opencontainers.image.created=${{ steps.tags.outputs.build_date }} + org.opencontainers.image.revision=${{ github.sha }} + org.opencontainers.image.licenses=${{ github.event.repository.license.spdx_id }} \ No newline at end of file