forked from Mirrors/minio
90 lines
2.9 KiB
YAML
90 lines
2.9 KiB
YAML
name: Test Release Pipeline
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
paths:
|
|
- ".github/goreleaser.yml"
|
|
- "Dockerfile.goreleaser"
|
|
- "minio.service"
|
|
- ".github/workflows/release.yml"
|
|
- ".github/workflows/test-release.yml"
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
validate:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
cache: true
|
|
|
|
- name: Compute test variables
|
|
run: |
|
|
set -euo pipefail
|
|
RELEASE_TAG="RELEASE.2026-02-14T12-00-00Z"
|
|
VERSION_COLON="2026-02-14T12:00:00Z"
|
|
PKG_VERSION="20260214120000.0.0"
|
|
LDFLAGS="$(MINIO_RELEASE=RELEASE go run buildscripts/gen-ldflags.go "${VERSION_COLON}")"
|
|
echo "RELEASE_TAG=${RELEASE_TAG}" >> "${GITHUB_ENV}"
|
|
echo "PKG_VERSION=${PKG_VERSION}" >> "${GITHUB_ENV}"
|
|
echo "LDFLAGS=${LDFLAGS}" >> "${GITHUB_ENV}"
|
|
echo "PKG_VERSION: ${PKG_VERSION}"
|
|
echo "LDFLAGS: ${LDFLAGS}"
|
|
|
|
- name: GoReleaser config check
|
|
uses: goreleaser/goreleaser-action@v6
|
|
with:
|
|
version: "~> v2"
|
|
args: check --config .github/goreleaser.yml
|
|
|
|
- name: Build snapshot artifacts
|
|
uses: goreleaser/goreleaser-action@v6
|
|
with:
|
|
version: "~> v2"
|
|
args: release --snapshot --clean --skip=publish,docker --config .github/goreleaser.yml
|
|
env:
|
|
LDFLAGS: ${{ env.LDFLAGS }}
|
|
PKG_VERSION: ${{ env.PKG_VERSION }}
|
|
|
|
- name: Install pkger
|
|
run: |
|
|
go install github.com/minio/pkger/v2@v2.6.18
|
|
echo "$(go env GOPATH)/bin" >> "${GITHUB_PATH}"
|
|
|
|
- name: Package snapshot binaries with pkger
|
|
run: |
|
|
set -euo pipefail
|
|
copy_binary() {
|
|
local arch="$1"
|
|
local pattern="$2"
|
|
local src
|
|
src="$(find dist -maxdepth 2 -type f -path "dist/${pattern}/minio" | head -n1 || true)"
|
|
if [ -z "${src}" ]; then
|
|
echo "Missing GoReleaser binary for ${arch} (${pattern})"
|
|
exit 1
|
|
fi
|
|
mkdir -p "dist/linux-${arch}"
|
|
cp "${src}" "dist/linux-${arch}/minio.${RELEASE_TAG}"
|
|
}
|
|
|
|
copy_binary amd64 "minio_linux_amd64*"
|
|
copy_binary arm64 "minio_linux_arm64*"
|
|
pkger -r "${RELEASE_TAG}" --appName minio --releaseDir dist --ignore
|
|
|
|
# Keep only full package files; drop convenience symlinks (minio.rpm/minio.deb/minio.apk)
|
|
find dist/linux-* -maxdepth 1 -type l \
|
|
\( -name 'minio.rpm' -o -name 'minio.deb' -o -name 'minio.apk' \) -delete
|
|
|
|
find dist -maxdepth 2 -type f \
|
|
\( -name '*.rpm' -o -name '*.deb' -o -name '*.apk' -o -name '*.sha256sum' -o -name 'downloads-minio.json' \) | sort
|