Update build_zip.yml
This commit is contained in:
104
.github/workflows/build_zip.yml
vendored
104
.github/workflows/build_zip.yml
vendored
@@ -1,20 +1,36 @@
|
|||||||
name: Build ZIP from folder
|
name: Build ZIP from folder
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_call:
|
||||||
inputs:
|
inputs:
|
||||||
target_folder:
|
target_folder:
|
||||||
description: "Folder to zip (relative to repo root)"
|
description: "Folder to zip (relative to repo root)"
|
||||||
required: false
|
required: false
|
||||||
|
type: string
|
||||||
default: "src"
|
default: "src"
|
||||||
zip_name:
|
zip_name:
|
||||||
description: "Base ZIP name (default: repository name, lowercase)"
|
description: "Base ZIP name (default: repository name, lowercase)"
|
||||||
required: false
|
required: false
|
||||||
|
type: string
|
||||||
default: ""
|
default: ""
|
||||||
version_suffix:
|
version_suffix:
|
||||||
description: "Optional version suffix for filename (example 01.02.03)"
|
description: "Optional version suffix for filename (example 01.02.03)"
|
||||||
required: false
|
required: false
|
||||||
|
type: string
|
||||||
default: ""
|
default: ""
|
||||||
|
outputs:
|
||||||
|
zip_artifact_name:
|
||||||
|
description: "Artifact name for the ZIP"
|
||||||
|
value: ${{ jobs.zip.outputs.zip_artifact_name }}
|
||||||
|
sha_artifact_name:
|
||||||
|
description: "Artifact name for the SHA256 file"
|
||||||
|
value: ${{ jobs.zip.outputs.sha_artifact_name }}
|
||||||
|
zip_file_name:
|
||||||
|
description: "ZIP filename inside the artifact"
|
||||||
|
value: ${{ jobs.zip.outputs.zip_file_name }}
|
||||||
|
sha_file_name:
|
||||||
|
description: "SHA256 filename inside the artifact"
|
||||||
|
value: ${{ jobs.zip.outputs.sha_file_name }}
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -24,6 +40,12 @@ jobs:
|
|||||||
name: Package folder as ZIP
|
name: Package folder as ZIP
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
zip_artifact_name: ${{ steps.meta.outputs.zip_artifact_name }}
|
||||||
|
sha_artifact_name: ${{ steps.meta.outputs.sha_artifact_name }}
|
||||||
|
zip_file_name: ${{ steps.meta.outputs.zip_file_name }}
|
||||||
|
sha_file_name: ${{ steps.meta.outputs.sha_file_name }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -43,32 +65,20 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v zipinfo >/dev/null 2>&1; then
|
|
||||||
echo "ZIPINFO_AVAILABLE=true" >> "$GITHUB_ENV"
|
|
||||||
else
|
|
||||||
echo "ZIPINFO_AVAILABLE=false" >> "$GITHUB_ENV"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if command -v unzip >/dev/null 2>&1; then
|
|
||||||
echo "UNZIP_AVAILABLE=true" >> "$GITHUB_ENV"
|
|
||||||
else
|
|
||||||
echo "UNZIP_AVAILABLE=false" >> "$GITHUB_ENV"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Validate inputs
|
- name: Validate inputs
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
TARGET_FOLDER="${{ github.event.inputs.target_folder }}"
|
TARGET_FOLDER="${{ inputs.target_folder }}"
|
||||||
if [[ -z "$TARGET_FOLDER" ]]; then
|
if [[ -z "$TARGET_FOLDER" ]]; then
|
||||||
TARGET_FOLDER="src"
|
TARGET_FOLDER="src"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ZIP_NAME_INPUT="${{ github.event.inputs.zip_name }}"
|
ZIP_NAME_INPUT="${{ inputs.zip_name }}"
|
||||||
ZIP_NAME_INPUT="${ZIP_NAME_INPUT//[[:space:]]/}"
|
ZIP_NAME_INPUT="${ZIP_NAME_INPUT//[[:space:]]/}"
|
||||||
|
|
||||||
VERSION_SUFFIX="${{ github.event.inputs.version_suffix }}"
|
VERSION_SUFFIX="${{ inputs.version_suffix }}"
|
||||||
VERSION_SUFFIX="${VERSION_SUFFIX//[[:space:]]/}"
|
VERSION_SUFFIX="${VERSION_SUFFIX//[[:space:]]/}"
|
||||||
|
|
||||||
if [[ ! -d "$TARGET_FOLDER" ]]; then
|
if [[ ! -d "$TARGET_FOLDER" ]]; then
|
||||||
@@ -149,52 +159,40 @@ jobs:
|
|||||||
zip -r "../$ZIP_PATH" . \
|
zip -r "../$ZIP_PATH" . \
|
||||||
-x "*.DS_Store" \
|
-x "*.DS_Store" \
|
||||||
-x "__MACOSX/*" \
|
-x "__MACOSX/*" \
|
||||||
-x ".git/*" \
|
|
||||||
-x ".github/*" \
|
|
||||||
-x "node_modules/*" \
|
-x "node_modules/*" \
|
||||||
-x "coverage/*" \
|
-x "coverage/*" \
|
||||||
-x "*.log" \
|
-x "*.log" \
|
||||||
-x "*.tmp"
|
-x "*.tmp"
|
||||||
|
|
||||||
echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV"
|
cd - >/dev/null 2>&1
|
||||||
echo "ZIP_PATH=$ZIP_PATH" >> "$GITHUB_ENV"
|
|
||||||
|
SHA_PATH="${ZIP_PATH}.sha256"
|
||||||
|
sha256sum "$ZIP_PATH" | awk '{print $1}' > "$SHA_PATH"
|
||||||
|
|
||||||
echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV"
|
echo "ZIP_NAME=$ZIP_NAME" >> "$GITHUB_ENV"
|
||||||
echo "ZIP_PATH=$ZIP_PATH" >> "$GITHUB_ENV"
|
echo "ZIP_PATH=$ZIP_PATH" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Generate manifest
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
MANIFEST_PATH="dist/${ZIP_NAME}.manifest.txt"
|
|
||||||
|
|
||||||
if [[ "$ZIPINFO_AVAILABLE" == "true" ]]; then
|
|
||||||
zipinfo -1 "$ZIP_PATH" > "$MANIFEST_PATH"
|
|
||||||
elif [[ "$UNZIP_AVAILABLE" == "true" ]]; then
|
|
||||||
unzip -Z1 "$ZIP_PATH" > "$MANIFEST_PATH"
|
|
||||||
else
|
|
||||||
echo "ERROR: Neither zipinfo nor unzip is available to generate a manifest" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "MANIFEST_PATH=$MANIFEST_PATH" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
- name: Generate SHA256
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
SHA_PATH="dist/${ZIP_NAME}.sha256"
|
|
||||||
sha256sum "$ZIP_PATH" > "$SHA_PATH"
|
|
||||||
|
|
||||||
echo "SHA_PATH=$SHA_PATH" >> "$GITHUB_ENV"
|
echo "SHA_PATH=$SHA_PATH" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Export artifact metadata
|
||||||
|
id: meta
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
echo "zip_artifact_name=$ZIP_NAME" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "sha_artifact_name=${ZIP_NAME}.sha256" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
echo "zip_file_name=$ZIP_NAME" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "sha_file_name=$(basename "$SHA_PATH")" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Upload ZIP artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: packaged-folder
|
name: ${{ env.ZIP_NAME }}
|
||||||
path: |
|
path: ${{ env.ZIP_PATH }}
|
||||||
${{ env.ZIP_PATH }}
|
|
||||||
${{ env.MANIFEST_PATH }}
|
- name: Upload SHA256 artifact
|
||||||
${{ env.SHA_PATH }}
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.ZIP_NAME }}.sha256
|
||||||
|
path: ${{ env.SHA_PATH }}
|
||||||
|
|||||||
Reference in New Issue
Block a user