|
|
|
@ -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<<EOF" |
|
|
|
echo "$TAGS" |
|
|
|
echo "1.35.4" |
|
|
|
echo "EOF" |
|
|
|
} >> "$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 |
|
|
|
|