dendrite/.github/workflows/docker.yml

200 lines
7 KiB
YAML
Raw Permalink Normal View History

# Based on https://github.com/docker/build-push-action
2022-03-24 12:08:17 -05:00
name: "Docker"
on:
release: # A GitHub release was published
types: [published]
2022-03-24 10:50:30 -05:00
workflow_dispatch: # A build was manually requested
2022-03-25 05:08:13 -05:00
workflow_call: # Another pipeline called us
secrets:
DOCKER_TOKEN:
required: true
env:
DOCKER_NAMESPACE: matrixdotorg
DOCKER_HUB_USER: dendritegithub
GHCR_NAMESPACE: matrix-org
PLATFORMS: linux/amd64,linux/arm64,linux/arm/v7
jobs:
monolith:
name: Monolith image
runs-on: ubuntu-latest
2022-03-25 04:05:06 -05:00
permissions:
contents: read
packages: write
steps:
- name: Checkout
2022-10-04 05:33:05 -05:00
uses: actions/checkout@v2
- name: Get release tag
if: github.event_name == 'release' # Only for GitHub releases
2022-10-04 05:33:05 -05:00
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
2022-10-04 05:33:05 -05:00
uses: docker/setup-buildx-action@v1
- name: Login to Docker Hub
2022-10-04 05:33:05 -05:00
uses: docker/login-action@v1
with:
username: ${{ env.DOCKER_HUB_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Login to GitHub Containers
2022-10-04 05:33:05 -05:00
uses: docker/login-action@v1
with:
registry: ghcr.io
2022-03-25 04:05:06 -05:00
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
2022-03-25 05:08:13 -05:00
- name: Build main monolith image
if: github.ref_name == 'main'
id: docker_build_monolith
2022-10-04 05:33:05 -05:00
uses: docker/build-push-action@v2
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
2022-10-04 05:33:05 -05:00
file: ./build/docker/Dockerfile.monolith
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
2022-03-24 10:50:30 -05:00
${{ env.DOCKER_NAMESPACE }}/dendrite-monolith:${{ github.ref_name }}
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:${{ github.ref_name }}
- name: Build release monolith image
if: github.event_name == 'release' # Only for GitHub releases
2022-03-24 11:22:39 -05:00
id: docker_build_monolith_release
2022-10-04 05:33:05 -05:00
uses: docker/build-push-action@v2
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
2022-10-04 05:33:05 -05:00
file: ./build/docker/Dockerfile.monolith
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
${{ env.DOCKER_NAMESPACE }}/dendrite-monolith:latest
${{ env.DOCKER_NAMESPACE }}/dendrite-monolith:${{ env.RELEASE_VERSION }}
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:latest
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:${{ env.RELEASE_VERSION }}
polylith:
name: Polylith image
runs-on: ubuntu-latest
2022-03-25 04:05:06 -05:00
permissions:
contents: read
packages: write
steps:
- name: Checkout
2022-10-04 05:33:05 -05:00
uses: actions/checkout@v2
- name: Get release tag
if: github.event_name == 'release' # Only for GitHub releases
2022-10-04 05:33:05 -05:00
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
2022-10-04 05:33:05 -05:00
uses: docker/setup-buildx-action@v1
- name: Login to Docker Hub
2022-10-04 05:33:05 -05:00
uses: docker/login-action@v1
with:
username: ${{ env.DOCKER_HUB_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Login to GitHub Containers
2022-10-04 05:33:05 -05:00
uses: docker/login-action@v1
with:
registry: ghcr.io
2022-03-25 04:05:06 -05:00
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
2022-03-25 05:08:13 -05:00
- name: Build main polylith image
if: github.ref_name == 'main'
id: docker_build_polylith
2022-10-04 05:33:05 -05:00
uses: docker/build-push-action@v2
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
2022-10-04 05:33:05 -05:00
file: ./build/docker/Dockerfile.polylith
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
2022-03-24 10:50:30 -05:00
${{ env.DOCKER_NAMESPACE }}/dendrite-polylith:${{ github.ref_name }}
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-polylith:${{ github.ref_name }}
- name: Build release polylith image
if: github.event_name == 'release' # Only for GitHub releases
2022-03-24 11:22:39 -05:00
id: docker_build_polylith_release
2022-10-04 05:33:05 -05:00
uses: docker/build-push-action@v2
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
2022-10-04 05:33:05 -05:00
file: ./build/docker/Dockerfile.polylith
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
${{ env.DOCKER_NAMESPACE }}/dendrite-polylith:latest
${{ env.DOCKER_NAMESPACE }}/dendrite-polylith:${{ env.RELEASE_VERSION }}
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-polylith:latest
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-polylith:${{ env.RELEASE_VERSION }}
demo-pinecone:
name: Pinecone demo image
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout
2022-10-04 05:33:05 -05:00
uses: actions/checkout@v2
- name: Get release tag
if: github.event_name == 'release' # Only for GitHub releases
2022-10-04 05:33:05 -05:00
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
2022-10-04 05:33:05 -05:00
uses: docker/setup-buildx-action@v1
- name: Login to Docker Hub
2022-10-04 05:33:05 -05:00
uses: docker/login-action@v1
with:
username: ${{ env.DOCKER_HUB_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Login to GitHub Containers
2022-10-04 05:33:05 -05:00
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build main pinecone demo image
if: github.ref_name == 'main'
id: docker_build_demo_pinecone
2022-10-04 05:33:05 -05:00
uses: docker/build-push-action@v2
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
2022-10-04 05:33:05 -05:00
file: ./build/docker/Dockerfile.demo-pinecone
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
${{ env.DOCKER_NAMESPACE }}/dendrite-demo-pinecone:${{ github.ref_name }}
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-demo-pinecone:${{ github.ref_name }}
- name: Build release pinecone demo image
if: github.event_name == 'release' # Only for GitHub releases
id: docker_build_demo_pinecone_release
2022-10-04 05:33:05 -05:00
uses: docker/build-push-action@v2
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
2022-10-04 05:33:05 -05:00
file: ./build/docker/Dockerfile.demo-pinecone
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
${{ env.DOCKER_NAMESPACE }}/dendrite-demo-pinecone:latest
${{ env.DOCKER_NAMESPACE }}/dendrite-demo-pinecone:${{ env.RELEASE_VERSION }}
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-demo-pinecone:latest
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-demo-pinecone:${{ env.RELEASE_VERSION }}