Browse Source

Refactor release workflow to prepare and upload tarball

pull/7236/head
Jason Yang 3 months ago
committed by GitHub
parent
commit
ef92147e16
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 65
      .github/workflows/release.yml

65
.github/workflows/release.yml

@ -249,69 +249,64 @@ 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 }}
# --- 新增:整理精简版文件 --- # --- 修改开始:整理文件并打包成 TAR ---
- name: Prepare Minimal Artifact - name: Prepare and Tar Minimal Files
env: env:
NORMALIZED_ARCH: ${{ env.NORMALIZED_ARCH }} NORMALIZED_ARCH: ${{ env.NORMALIZED_ARCH }}
BASE_IMAGE: ${{ matrix.base_image }} BASE_IMAGE: ${{ matrix.base_image }}
SOURCE_VERSION: ${{ env.SOURCE_VERSION }} SOURCE_VERSION: ${{ env.SOURCE_VERSION }}
run: | run: |
# 定义Artifact文件夹名称 # 定义临时文件夹名称
ARTIFACT_DIR="vaultwarden-${SOURCE_VERSION}-linux-${NORMALIZED_ARCH}-${BASE_IMAGE}-minimal" TEMP_DIR="vaultwarden-${SOURCE_VERSION}-linux-${NORMALIZED_ARCH}-${BASE_IMAGE}"
mkdir -p "${ARTIFACT_DIR}" mkdir -p "${TEMP_DIR}"
echo "Copying essential files..." echo "Copying essential files to ${TEMP_DIR}..."
# 1. 复制二进制文件并重命名 # 1. 复制二进制文件
if [ -f "./output/vaultwarden" ]; then if [ -f "./output/vaultwarden" ]; then
cp ./output/vaultwarden "${ARTIFACT_DIR}/vaultwarden" cp ./output/vaultwarden "${TEMP_DIR}/vaultwarden"
echo "Copied binary." chmod +x "${TEMP_DIR}/vaultwarden"
else else
echo "Error: Binary not found!" echo "Error: Binary not found!" && exit 1
ls -R ./output
exit 1
fi fi
# 2. 复制 web-vault 目录 # 2. 复制 web-vault 目录
if [ -d "./output/web-vault" ]; then if [ -d "./output/web-vault" ]; then
cp -r ./output/web-vault "${ARTIFACT_DIR}/web-vault" cp -r ./output/web-vault "${TEMP_DIR}/web-vault"
echo "Copied web-vault."
else else
echo "Warning: web-vault not found." echo "Warning: web-vault not found."
fi fi
# 3. 复制启动脚本和健康检查脚本 # 3. 复制脚本文件
for script in start.sh healthcheck.sh; do for script in start.sh healthcheck.sh; do
if [ -f "./output/${script}" ]; then if [ -f "./output/${script}" ]; then
cp "./output/${script}" "${ARTIFACT_DIR}/${script}" cp "./output/${script}" "${TEMP_DIR}/${script}"
chmod +x "${ARTIFACT_DIR}/${script}" chmod +x "${TEMP_DIR}/${script}"
echo "Copied ${script}."
else
echo "Warning: ${script} not found."
fi fi
done done
# 4. (可选) 如果有 Rocket.toml 或其他配置文件也复制 # 4. 打包成 .tar.gz
if [ -f "./output/Rocket.toml" ]; then TARBALL_NAME="${TEMP_DIR}.tar.gz"
cp ./output/Rocket.toml "${ARTIFACT_DIR}/Rocket.toml" echo "Creating tarball: ${TARBALL_NAME}"
fi tar -czvf "${TARBALL_NAME}" "${TEMP_DIR}"
# 显示最终文件大小 # 显示包大小
echo "Artifact contents:" ls -lh "${TARBALL_NAME}"
ls -lhR "${ARTIFACT_DIR}" du -sh "${TEMP_DIR}"
du -sh "${ARTIFACT_DIR}"
# 导出变量供下一步使用 # 导出变量供上传步骤使用
echo "ARTIFACT_DIR=${ARTIFACT_DIR}" >> "${GITHUB_ENV}" echo "TARBALL_NAME=${TARBALL_NAME}" >> "${GITHUB_ENV}"
echo "ARTIFACT_NAME=${TEMP_DIR}" >> "${GITHUB_ENV}"
# --- 新增:上传精简包 --- # --- 修改结束:上传 TAR 包 ---
- name: Upload Minimal Artifact - name: Upload Vaultwarden Tarball
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
with: with:
name: ${{ env.ARTIFACT_DIR }} name: ${{ env.ARTIFACT_NAME }}
path: ${{ env.ARTIFACT_DIR }} path: ${{ env.TARBALL_NAME }}
retention-days: 5 retention-days: 5
# 如果文件超过 500MB 可能需要分片,但精简版通常很小 # 如果包很大,可以开启分片压缩 (可选)
# compression-level: 6
merge-manifests: merge-manifests:
name: Merge manifests name: Merge manifests

Loading…
Cancel
Save