Browse Source

Implement minimal artifact preparation and upload

Add steps to prepare and upload a minimal artifact.
pull/7236/head
Jason Yang 3 months ago
committed by GitHub
parent
commit
bf7a327e6c
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 77
      .github/workflows/release.yml

77
.github/workflows/release.yml

@ -162,13 +162,13 @@ jobs:
run: | run: |
# #
# Check if there is a GitHub Container Registry Login and use it for caching # Check if there is a GitHub Container Registry Login and use it for caching
if [[ -n "${HAVE_GHCR_LOGIN}" ]]; then #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_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}" # echo "BAKE_CACHE_TO=type=registry,ref=${GHCR_REPO}-buildcache:${BASE_IMAGE}-${NORMALIZED_ARCH},compression=zstd,mode=max" | tee -a "${GITHUB_ENV}"
else #else
echo "BAKE_CACHE_FROM=" echo "BAKE_CACHE_FROM="
echo "BAKE_CACHE_TO=" echo "BAKE_CACHE_TO="
fi #fi
# #
- name: Generate tags - name: Generate tags
@ -182,7 +182,7 @@ jobs:
# Output for use in next step # Output for use in next step
{ {
echo "TAGS<<EOF" echo "TAGS<<EOF"
echo "$TAGS" echo "1.35.4"
echo "EOF" echo "EOF"
} >> "$GITHUB_ENV" } >> "$GITHUB_ENV"
@ -199,6 +199,7 @@ jobs:
source: . source: .
files: docker/docker-bake.hcl files: docker/docker-bake.hcl
targets: "${{ matrix.base_image }}-multi" targets: "${{ matrix.base_image }}-multi"
no-cache: true
set: | set: |
*.platform=linux/${{ matrix.arch }} *.platform=linux/${{ matrix.arch }}
${{ env.TAGS }} ${{ env.TAGS }}
@ -247,6 +248,70 @@ jobs:
name: vaultwarden-${{ env.SOURCE_VERSION }}-linux-${{ env.NORMALIZED_ARCH }}-${{ matrix.base_image }} name: vaultwarden-${{ env.SOURCE_VERSION }}-linux-${{ env.NORMALIZED_ARCH }}-${{ matrix.base_image }}
path: vaultwarden-${{ env.NORMALIZED_ARCH }} 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: merge-manifests:
name: Merge manifests name: Merge manifests
runs-on: ubuntu-latest runs-on: ubuntu-latest

Loading…
Cancel
Save