name: Release on: push: tags: ["v*"] env: BUILDX_NO_DEFAULT_ATTESTATIONS: "1" DASH_REPO: wangdefa/oci-portal-dash jobs: release: runs-on: ubuntu-latest-amd64 steps: - uses: actions/checkout@v4 - name: 准备 buildx 与镜像地址 run: | # 多平台构建需要 docker-container driver;Dockerfile 交叉编译,无需 QEMU docker buildx create --use --driver docker-container --driver-opt network=host || true REGISTRY=$(echo "${{ gitea.server_url }}" | sed 's|https\?://||') echo "REGISTRY=${REGISTRY}" >> "$GITHUB_ENV" echo "IMAGE=${REGISTRY}/${{ gitea.repository }}" >> "$GITHUB_ENV" echo "BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$GITHUB_ENV" - name: 下载前端 dist.zip env: TOKEN: ${{ secrets.BUILD_TOKEN }} run: | DASH_TAG=$(head -1 DASH_VERSION) BASE="${{ gitea.server_url }}/${DASH_REPO}/releases/download/${DASH_TAG}" curl -fsSL -H "Authorization: token ${TOKEN}" -o dist.zip "${BASE}/dist.zip" curl -fsSL -H "Authorization: token ${TOKEN}" -o dist.zip.sha256 "${BASE}/dist.zip.sha256" sha256sum -c dist.zip.sha256 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: 构建双架构二进制 run: | docker buildx build --pull \ --platform linux/amd64,linux/arm64 \ --build-arg VERSION=${{ gitea.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 (cd assets && sha256sum * > SHA256SUMS) - name: 构建并推送多平台镜像 env: TOKEN: ${{ secrets.BUILD_TOKEN }} run: | echo "${TOKEN}" | docker login "${REGISTRY}" -u "${{ gitea.repository_owner }}" --password-stdin docker buildx build --pull \ --platform linux/amd64,linux/arm64 \ --build-arg VERSION=${{ gitea.ref_name }} \ --build-arg BUILD_TIME=${BUILD_TIME} \ -t "${IMAGE}:${{ gitea.ref_name }}" -t "${IMAGE}:latest" \ --push . - name: 提取 CHANGELOG 版本段作为 Release 描述 run: | TAG="${{ gitea.ref_name }}" awk -v ver="${TAG#v}" '$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: https://gitea.com/actions/gitea-release-action@v1 with: token: ${{ secrets.BUILD_TOKEN }} body_path: release-notes.md files: assets/*