Files
oci-portal/.github/workflows/release.yml
T
Wang Defa 4af6a0ca92
CI / test (push) Successful in 43s
Release / release (push) Successful in 52s
发版注入版本与构建时间,升级 oci-go-sdk 65.120.0
2026-07-09 19:29:45 +08:00

80 lines
2.5 KiB
YAML

name: Release
on:
push:
tags: ["v*"]
permissions:
contents: write
packages: write
env:
BUILDX_NO_DEFAULT_ATTESTATIONS: "1"
DASH_DOWNLOAD: https://github.com/wangdefaa/oci-portal-dash/releases/latest/download/dist.zip
IMAGE: ghcr.io/wangdefaa/oci-portal
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- name: 下载前端最新 dist.zip 解压进嵌入目录
run: |
curl -fsSL -o dist.zip "$DASH_DOWNLOAD"
rm -rf internal/webui/dist && mkdir -p internal/webui/dist
unzip -q dist.zip -d internal/webui/dist
test -f internal/webui/dist/index.html
- name: 构建双架构二进制(artifact stage 导出)
run: |
BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
echo "BUILD_TIME=${BUILD_TIME}" >> "$GITHUB_ENV"
docker buildx build --pull \
--platform linux/amd64,linux/arm64 \
--build-arg VERSION=${{ github.ref_name }} \
--build-arg BUILD_TIME=${BUILD_TIME} \
--target artifact \
--output type=local,dest=./output .
mkdir -p assets
mv output/linux_amd64/oci-portal-server assets/oci-portal-server-linux-amd64
mv output/linux_arm64/oci-portal-server assets/oci-portal-server-linux-arm64
ls -lh assets/
- name: 提取 CHANGELOG 版本段作为 Release 描述
env:
TAG: ${{ github.ref_name }}
run: |
VERSION="${TAG#v}"
awk -v ver="$VERSION" '$0 ~ "^## \\[" ver "\\]" {flag=1; next} /^## \[/ && flag {exit} flag {print}' CHANGELOG.md > release-notes.md
[ -s release-notes.md ] || echo "Release ${TAG}" > release-notes.md
- name: 创建 Release 并上传二进制附件
uses: softprops/action-gh-release@v3
with:
token: ${{ github.token }}
body_path: release-notes.md
files: assets/*
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}
- name: 构建并推送多平台镜像
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
provenance: false
build-args: |
VERSION=${{ github.ref_name }}
BUILD_TIME=${{ env.BUILD_TIME }}
tags: |
${{ env.IMAGE }}:${{ github.ref_name }}
${{ env.IMAGE }}:latest