aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/docker.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/docker.yml')
-rw-r--r--.github/workflows/docker.yml106
1 files changed, 76 insertions, 30 deletions
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index b4e24e52..358037c0 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -21,26 +21,32 @@ jobs:
monolith:
name: Monolith image
runs-on: ubuntu-latest
+ needs: build-flags
permissions:
contents: read
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v2
- - name: Get release tag
+ uses: actions/checkout@v3
+ - name: Get release tag & build flags
if: github.event_name == 'release' # Only for GitHub releases
- run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
+ run: |
+ echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
+ echo "BUILD=$(git rev-parse --short HEAD || "") >> $GITHUB_ENV
+ BRANCH=$(git symbolic-ref --short HEAD | tr -d \/)
+ [ ${BRANCH} == "main" ] && BRANCH=""
+ echo "BRANCH=${BRANCH}" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
+ uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
- uses: docker/login-action@v1
+ uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_HUB_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Login to GitHub Containers
- uses: docker/login-action@v1
+ uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -49,27 +55,41 @@ jobs:
- name: Build main monolith image
if: github.ref_name == 'main'
id: docker_build_monolith
- uses: docker/build-push-action@v2
+ uses: docker/build-push-action@v3
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
- file: ./build/docker/Dockerfile.monolith
+ build-args: FLAGS="-X github.com/matrix-org/dendrite/internal.branch=${{ env.BRANCH }} -X github.com/matrix-org/dendrite/internal.build=${{ env.BUILD }}"
+ target: monolith
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
${{ env.DOCKER_NAMESPACE }}/dendrite-monolith:${{ github.ref_name }}
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:${{ github.ref_name }}
+ - name: Run Trivy vulnerability scanner
+ uses: aquasecurity/trivy-action@master
+ with:
+ image-ref: ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-monolith:${{ github.ref_name }}
+ format: "sarif"
+ output: "trivy-results.sarif"
+
+ - name: Upload Trivy scan results to GitHub Security tab
+ uses: github/codeql-action/upload-sarif@v1
+ with:
+ sarif_file: "trivy-results.sarif"
+
- name: Build release monolith image
if: github.event_name == 'release' # Only for GitHub releases
id: docker_build_monolith_release
- uses: docker/build-push-action@v2
+ uses: docker/build-push-action@v3
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
- file: ./build/docker/Dockerfile.monolith
+ build-args: FLAGS="-X github.com/matrix-org/dendrite/internal.branch=${{ env.BRANCH }} -X github.com/matrix-org/dendrite/internal.build=${{ env.BUILD }}"
+ target: monolith
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
@@ -81,26 +101,32 @@ jobs:
polylith:
name: Polylith image
runs-on: ubuntu-latest
+ needs: build-flags
permissions:
contents: read
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v2
- - name: Get release tag
+ uses: actions/checkout@v3
+ - name: Get release tag & build flags
if: github.event_name == 'release' # Only for GitHub releases
- run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
+ run: |
+ echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
+ echo "BUILD=$(git rev-parse --short HEAD || "") >> $GITHUB_ENV
+ BRANCH=$(git symbolic-ref --short HEAD | tr -d \/)
+ [ ${BRANCH} == "main" ] && BRANCH=""
+ echo "BRANCH=${BRANCH}" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
+ uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
- uses: docker/login-action@v1
+ uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_HUB_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Login to GitHub Containers
- uses: docker/login-action@v1
+ uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -109,27 +135,40 @@ jobs:
- name: Build main polylith image
if: github.ref_name == 'main'
id: docker_build_polylith
- uses: docker/build-push-action@v2
+ uses: docker/build-push-action@v3
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
- file: ./build/docker/Dockerfile.polylith
+ build-args: FLAGS="-X github.com/matrix-org/dendrite/internal.branch=${{ env.BRANCH }} -X github.com/matrix-org/dendrite/internal.build=${{ env.BUILD }}"
+ target: polylith
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
${{ env.DOCKER_NAMESPACE }}/dendrite-polylith:${{ github.ref_name }}
ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-polylith:${{ github.ref_name }}
+ - name: Run Trivy vulnerability scanner
+ uses: aquasecurity/trivy-action@master
+ with:
+ image-ref: ghcr.io/${{ env.GHCR_NAMESPACE }}/dendrite-polylith:${{ github.ref_name }}
+ format: "sarif"
+ output: "trivy-results.sarif"
+
+ - name: Upload Trivy scan results to GitHub Security tab
+ uses: github/codeql-action/upload-sarif@v1
+ with:
+ sarif_file: "trivy-results.sarif"
+
- name: Build release polylith image
if: github.event_name == 'release' # Only for GitHub releases
id: docker_build_polylith_release
- uses: docker/build-push-action@v2
+ uses: docker/build-push-action@v3
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
- file: ./build/docker/Dockerfile.polylith
+ target: polylith
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
@@ -141,26 +180,32 @@ jobs:
demo-pinecone:
name: Pinecone demo image
runs-on: ubuntu-latest
+ needs: build-flags
permissions:
contents: read
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v2
- - name: Get release tag
+ uses: actions/checkout@v3
+ - name: Get release tag & build flags
if: github.event_name == 'release' # Only for GitHub releases
- run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
+ run: |
+ echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
+ echo "BUILD=$(git rev-parse --short HEAD || "") >> $GITHUB_ENV
+ BRANCH=$(git symbolic-ref --short HEAD | tr -d \/)
+ [ ${BRANCH} == "main" ] && BRANCH=""
+ echo "BRANCH=${BRANCH}" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
+ uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
- uses: docker/login-action@v1
+ uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_HUB_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Login to GitHub Containers
- uses: docker/login-action@v1
+ uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -169,12 +214,12 @@ jobs:
- name: Build main pinecone demo image
if: github.ref_name == 'main'
id: docker_build_demo_pinecone
- uses: docker/build-push-action@v2
+ uses: docker/build-push-action@v3
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
- file: ./build/docker/Dockerfile.demo-pinecone
+ target: demo-pinecone
platforms: ${{ env.PLATFORMS }}
push: true
tags: |
@@ -184,12 +229,13 @@ jobs:
- name: Build release pinecone demo image
if: github.event_name == 'release' # Only for GitHub releases
id: docker_build_demo_pinecone_release
- uses: docker/build-push-action@v2
+ uses: docker/build-push-action@v3
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: .
- file: ./build/docker/Dockerfile.demo-pinecone
+ build-args: FLAGS="-X github.com/matrix-org/dendrite/internal.branch=${{ env.BRANCH }} -X github.com/matrix-org/dendrite/internal.build=${{ env.BUILD }}"
+ target: demo-pinecone
platforms: ${{ env.PLATFORMS }}
push: true
tags: |