diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 158434f3..541ddb30 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -162,13 +162,13 @@ jobs: run: | # # Check if there is a GitHub Container Registry Login and use it for caching - if [[ -n "${HAVE_GHCR_LOGIN}" ]]; then - echo "BAKE_CACHE_FROM=type=registry,ref=${GHCR_REPO}-buildcache:${BASE_IMAGE}-${NORMALIZED_ARCH}" | tee -a "${GITHUB_ENV}" - echo "BAKE_CACHE_TO=type=registry,ref=${GHCR_REPO}-buildcache:${BASE_IMAGE}-${NORMALIZED_ARCH},compression=zstd,mode=max" | tee -a "${GITHUB_ENV}" - else - echo "BAKE_CACHE_FROM=" - echo "BAKE_CACHE_TO=" - fi + #if [[ -n "${HAVE_GHCR_LOGIN}" ]]; then + # echo "BAKE_CACHE_FROM=type=registry,ref=${GHCR_REPO}-buildcache:${BASE_IMAGE}-${NORMALIZED_ARCH}" | tee -a "${GITHUB_ENV}" + # echo "BAKE_CACHE_TO=type=registry,ref=${GHCR_REPO}-buildcache:${BASE_IMAGE}-${NORMALIZED_ARCH},compression=zstd,mode=max" | tee -a "${GITHUB_ENV}" + #else + echo "BAKE_CACHE_FROM=" + echo "BAKE_CACHE_TO=" + #fi # - name: Generate tags @@ -182,7 +182,7 @@ jobs: # Output for use in next step { echo "TAGS<> "$GITHUB_ENV" @@ -199,6 +199,7 @@ jobs: source: . files: docker/docker-bake.hcl targets: "${{ matrix.base_image }}-multi" + no-cache: true set: | *.platform=linux/${{ matrix.arch }} ${{ env.TAGS }} @@ -247,6 +248,70 @@ jobs: name: vaultwarden-${{ env.SOURCE_VERSION }}-linux-${{ env.NORMALIZED_ARCH }}-${{ matrix.base_image }} path: vaultwarden-${{ env.NORMALIZED_ARCH }} + # --- 新增:整理精简版文件 --- + - name: Prepare Minimal Artifact + env: + NORMALIZED_ARCH: ${{ env.NORMALIZED_ARCH }} + BASE_IMAGE: ${{ matrix.base_image }} + SOURCE_VERSION: ${{ env.SOURCE_VERSION }} + run: | + # 定义Artifact文件夹名称 + ARTIFACT_DIR="vaultwarden-${SOURCE_VERSION}-linux-${NORMALIZED_ARCH}-${BASE_IMAGE}-minimal" + mkdir -p "${ARTIFACT_DIR}" + + echo "Copying essential files..." + + # 1. 复制二进制文件并重命名 + if [ -f "./output/vaultwarden" ]; then + cp ./output/vaultwarden "${ARTIFACT_DIR}/vaultwarden" + echo "Copied binary." + else + echo "Error: Binary not found!" + ls -R ./output + exit 1 + fi + + # 2. 复制 web-vault 目录 + if [ -d "./output/web-vault" ]; then + cp -r ./output/web-vault "${ARTIFACT_DIR}/web-vault" + echo "Copied web-vault." + else + echo "Warning: web-vault not found." + fi + + # 3. 复制启动脚本和健康检查脚本 + for script in start.sh healthcheck.sh; do + if [ -f "./output/${script}" ]; then + cp "./output/${script}" "${ARTIFACT_DIR}/${script}" + chmod +x "${ARTIFACT_DIR}/${script}" + echo "Copied ${script}." + else + echo "Warning: ${script} not found." + fi + done + + # 4. (可选) 如果有 Rocket.toml 或其他配置文件也复制 + if [ -f "./output/Rocket.toml" ]; then + cp ./output/Rocket.toml "${ARTIFACT_DIR}/Rocket.toml" + fi + + # 显示最终文件大小 + echo "Artifact contents:" + ls -lhR "${ARTIFACT_DIR}" + du -sh "${ARTIFACT_DIR}" + + # 导出变量供下一步使用 + echo "ARTIFACT_DIR=${ARTIFACT_DIR}" >> "${GITHUB_ENV}" + + # --- 新增:上传精简包 --- + - name: Upload Minimal Artifact + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f + with: + name: ${{ env.ARTIFACT_DIR }} + path: ${{ env.ARTIFACT_DIR }} + retention-days: 5 + # 如果文件超过 500MB 可能需要分片,但精简版通常很小 + merge-manifests: name: Merge manifests runs-on: ubuntu-latest