Consolidate build server image (#34025)

* only build for mattermostdevelopment/mattermost-build-server-fips

* calculate go version from Docker image, not .go-version

* allow manual dispach of build-server-image
This commit is contained in:
Jesse Hallam
2025-10-31 15:11:22 +00:00
committed by GitHub
parent 22405b2940
commit 24a1b4d2a3
2 changed files with 20 additions and 111 deletions
+20 -13
View File
@@ -13,6 +13,11 @@ on:
- server/build/Dockerfile.buildenv
- server/build/Dockerfile.buildenv-fips
- .github/workflows/build-server-image.yml
workflow_dispatch:
inputs:
branch:
description: "Git branch or PR ref to build"
required: true
env:
CHAINCTL_IDENTITY: ee399b4c72dd4e58e3d617f78fc47b74733c9557/922f2d48307d6f5f
@@ -29,11 +34,6 @@ jobs:
- name: buildenv/checkout-repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: buildenv/calculate-golang-version
working-directory: server/
id: go
run: echo GO_VERSION=$(cat .go-version) >> "${GITHUB_OUTPUT}"
- name: buildenv/docker-login
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
@@ -54,6 +54,12 @@ jobs:
run: |
docker run --rm mattermostdevelopment/mattermost-build-server:test /bin/sh -c "go version && node --version"
- name: buildenv/calculate-golang-version
id: go
run: |
GO_VERSION=$(docker run --rm mattermostdevelopment/mattermost-build-server:test go version | awk '{print $3}' | sed 's/go//')
echo "GO_VERSION=${GO_VERSION}" >> "${GITHUB_OUTPUT}"
- name: buildenv/push
if: github.ref == 'refs/heads/master'
uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0
@@ -74,11 +80,6 @@ jobs:
- name: buildenv/checkout-repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: buildenv/calculate-golang-version
working-directory: server/
id: go
run: echo GO_VERSION=$(cat .go-version) >> "${GITHUB_OUTPUT}"
- name: buildenv/docker-login
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
@@ -93,11 +94,17 @@ jobs:
load: true
push: false
pull: false
tags: mattermost/mattermost-build-server-fips:test
tags: mattermostdevelopment/mattermost-build-server-fips:test
- name: buildenv/test
run: |
docker run --rm --entrypoint bash mattermost/mattermost-build-server-fips:test -c "go version && node --version"
docker run --rm --entrypoint bash mattermostdevelopment/mattermost-build-server-fips:test -c "go version && node --version"
- name: buildenv/calculate-golang-version
id: go
run: |
GO_VERSION=$(docker run --rm --entrypoint bash mattermostdevelopment/mattermost-build-server-fips:test -c "go version" | awk '{print $3}' | sed 's/go//')
echo "GO_VERSION=${GO_VERSION}" >> "${GITHUB_OUTPUT}"
- name: buildenv/push
if: github.ref == 'refs/heads/master'
@@ -108,4 +115,4 @@ jobs:
load: false
push: true
pull: true
tags: mattermost/mattermost-build-server-fips:${{ steps.go.outputs.GO_VERSION }}
tags: mattermostdevelopment/mattermost-build-server-fips:${{ steps.go.outputs.GO_VERSION }}
@@ -1,98 +0,0 @@
# .github/workflows/dispatch-build.yml
name: Build & Push New Golang Docker Build Server Image
on:
workflow_dispatch:
inputs:
branch:
description: "Git branch or PR ref to build"
required: true
tag:
description: "Docker image tag (e.g. v1.2.3 or latest)"
required: true
env:
CHAINCTL_IDENTITY: ee399b4c72dd4e58e3d617f78fc47b74733c9557/922f2d48307d6f5f
# Permissions required for chainguard-dev/setup-chainctl
permissions:
id-token: write
contents: read
jobs:
build-and-push:
runs-on: ubuntu-24.04
env:
IMAGE_TAG: ${{ github.event.inputs.tag }}
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #4.2.2
with:
ref: ${{ github.event.inputs.branch }}
- name: Set up QEMU (optional, for multi-arch)
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca
- name: Login to DockerHub (development repo)
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_DEV_USERNAME }}
password: ${{ secrets.DOCKERHUB_DEV_TOKEN }}
- name: Build & push development image
run: |
docker buildx build \
--tag mattermostdevelopment/mattermost-build-server:"${IMAGE_TAG}" \
--push \
-f server/build/Dockerfile.buildenv .
- name: Login to DockerHub (production repo)
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build & push production image
run: |
docker buildx build \
--tag mattermost/mattermost-build-server:"${IMAGE_TAG}" \
--push \
-f server/build/Dockerfile.buildenv .
build-and-push-fips:
runs-on: ubuntu-24.04
steps:
- uses: chainguard-dev/setup-chainctl@f4ed65b781b048c44d4f033ae854c025c5531c19 # v0.3.2
with:
identity: ${{ env.CHAINCTL_IDENTITY }}
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #4.2.2
with:
ref: ${{ github.event.inputs.branch }}
- name: Set up QEMU (optional, for multi-arch)
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f7ce87c1d6bead3e36075b2ce75da1f6cc28aaca
- name: Login to DockerHub (production repo)
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build & push production image
run: |
docker buildx build \
--tag mattermost/mattermost-build-server-fips:${{ github.event.inputs.tag }} \
--push \
-f server/build/Dockerfile.buildenv-fips .