Update build_zip.yml
This commit is contained in:
133
.github/workflows/build_zip.yml
vendored
133
.github/workflows/build_zip.yml
vendored
@@ -15,6 +15,26 @@ on:
|
|||||||
description: "Optional version suffix for filename (example 01.02.03)"
|
description: "Optional version suffix for filename (example 01.02.03)"
|
||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
|
publish_release:
|
||||||
|
description: "If true, upload ZIP and SHA256 as GitHub Release assets"
|
||||||
|
required: false
|
||||||
|
default: "false"
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- "false"
|
||||||
|
- "true"
|
||||||
|
release_tag:
|
||||||
|
description: "Release tag to publish to (required if publish_release=true)"
|
||||||
|
required: false
|
||||||
|
default: ""
|
||||||
|
prerelease:
|
||||||
|
description: "If true, mark the release as prerelease"
|
||||||
|
required: false
|
||||||
|
default: "false"
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- "false"
|
||||||
|
- "true"
|
||||||
|
|
||||||
workflow_call:
|
workflow_call:
|
||||||
inputs:
|
inputs:
|
||||||
@@ -48,38 +68,8 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
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 }}
|
|
||||||
release_uploaded:
|
|
||||||
description: "true if assets were uploaded to a release"
|
|
||||||
value: ${{ jobs.zip.outputs.release_uploaded }}
|
|
||||||
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: write
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -87,13 +77,6 @@ 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 }}
|
|
||||||
release_uploaded: ${{ steps.release_upload.outputs.release_uploaded }}
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -113,35 +96,47 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Validate inputs
|
- name: Resolve and validate inputs
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Prefer workflow_call inputs when present, otherwise use workflow_dispatch inputs.
|
||||||
TARGET_FOLDER="${{ inputs.target_folder }}"
|
TARGET_FOLDER="${{ inputs.target_folder }}"
|
||||||
ZIP_NAME_INPUT="${{ inputs.zip_name }}"
|
ZIP_NAME_INPUT="${{ inputs.zip_name }}"
|
||||||
VERSION_SUFFIX="${{ inputs.version_suffix }}"
|
VERSION_SUFFIX="${{ inputs.version_suffix }}"
|
||||||
PUBLISH_RELEASE="${{ inputs.publish_release }}"
|
PUBLISH_RELEASE="${{ inputs.publish_release }}"
|
||||||
RELEASE_TAG="${{ inputs.release_tag }}"
|
RELEASE_TAG="${{ inputs.release_tag }}"
|
||||||
|
PRERELEASE="${{ inputs.prerelease }}"
|
||||||
|
|
||||||
if [[ -z "$TARGET_FOLDER" ]]; then
|
if [[ -z "$TARGET_FOLDER" ]]; then TARGET_FOLDER="${{ github.event.inputs.target_folder }}"; fi
|
||||||
TARGET_FOLDER="${{ github.event.inputs.target_folder }}"
|
if [[ -z "$ZIP_NAME_INPUT" ]]; then ZIP_NAME_INPUT="${{ github.event.inputs.zip_name }}"; fi
|
||||||
fi
|
if [[ -z "$VERSION_SUFFIX" ]]; then VERSION_SUFFIX="${{ github.event.inputs.version_suffix }}"; fi
|
||||||
if [[ -z "$ZIP_NAME_INPUT" ]]; then
|
if [[ -z "$PUBLISH_RELEASE" ]]; then PUBLISH_RELEASE="${{ github.event.inputs.publish_release }}"; fi
|
||||||
ZIP_NAME_INPUT="${{ github.event.inputs.zip_name }}"
|
if [[ -z "$RELEASE_TAG" ]]; then RELEASE_TAG="${{ github.event.inputs.release_tag }}"; fi
|
||||||
fi
|
if [[ -z "$PRERELEASE" ]]; then PRERELEASE="${{ github.event.inputs.prerelease }}"; fi
|
||||||
if [[ -z "$VERSION_SUFFIX" ]]; then
|
|
||||||
VERSION_SUFFIX="${{ github.event.inputs.version_suffix }}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
TARGET_FOLDER="${TARGET_FOLDER//[[:space:]]/}"
|
TARGET_FOLDER="${TARGET_FOLDER//[[:space:]]/}"
|
||||||
ZIP_NAME_INPUT="${ZIP_NAME_INPUT//[[:space:]]/}"
|
ZIP_NAME_INPUT="${ZIP_NAME_INPUT//[[:space:]]/}"
|
||||||
VERSION_SUFFIX="${VERSION_SUFFIX//[[:space:]]/}"
|
VERSION_SUFFIX="${VERSION_SUFFIX//[[:space:]]/}"
|
||||||
|
RELEASE_TAG="${RELEASE_TAG//[[:space:]]/}"
|
||||||
|
|
||||||
if [[ -z "$TARGET_FOLDER" ]]; then
|
if [[ -z "$TARGET_FOLDER" ]]; then
|
||||||
TARGET_FOLDER="src"
|
TARGET_FOLDER="src"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "$PUBLISH_RELEASE" == "true" || "$PUBLISH_RELEASE" == "True" ]]; then
|
||||||
|
PUBLISH_RELEASE="true"
|
||||||
|
else
|
||||||
|
PUBLISH_RELEASE="false"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$PRERELEASE" == "true" || "$PRERELEASE" == "True" ]]; then
|
||||||
|
PRERELEASE="true"
|
||||||
|
else
|
||||||
|
PRERELEASE="false"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ ! -d "$TARGET_FOLDER" ]]; then
|
if [[ ! -d "$TARGET_FOLDER" ]]; then
|
||||||
echo "ERROR: Folder does not exist: $TARGET_FOLDER" >&2
|
echo "ERROR: Folder does not exist: $TARGET_FOLDER" >&2
|
||||||
exit 1
|
exit 1
|
||||||
@@ -166,42 +161,7 @@ jobs:
|
|||||||
echo "INPUT_VERSION_SUFFIX=$VERSION_SUFFIX" >> "$GITHUB_ENV"
|
echo "INPUT_VERSION_SUFFIX=$VERSION_SUFFIX" >> "$GITHUB_ENV"
|
||||||
echo "PUBLISH_RELEASE=$PUBLISH_RELEASE" >> "$GITHUB_ENV"
|
echo "PUBLISH_RELEASE=$PUBLISH_RELEASE" >> "$GITHUB_ENV"
|
||||||
echo "RELEASE_TAG=$RELEASE_TAG" >> "$GITHUB_ENV"
|
echo "RELEASE_TAG=$RELEASE_TAG" >> "$GITHUB_ENV"
|
||||||
|
echo "PRERELEASE=$PRERELEASE" >> "$GITHUB_ENV"
|
||||||
if [[ -z "$TARGET_FOLDER" ]]; then
|
|
||||||
TARGET_FOLDER="${{ github.event.inputs.target_folder }}"
|
|
||||||
fi
|
|
||||||
if [[ -z "$ZIP_NAME_INPUT" ]]; then
|
|
||||||
ZIP_NAME_INPUT="${{ github.event.inputs.zip_name }}"
|
|
||||||
fi
|
|
||||||
if [[ -z "$VERSION_SUFFIX" ]]; then
|
|
||||||
VERSION_SUFFIX="${{ github.event.inputs.version_suffix }}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
TARGET_FOLDER="${TARGET_FOLDER//[[:space:]]/}"
|
|
||||||
ZIP_NAME_INPUT="${ZIP_NAME_INPUT//[[:space:]]/}"
|
|
||||||
VERSION_SUFFIX="${VERSION_SUFFIX//[[:space:]]/}"
|
|
||||||
|
|
||||||
if [[ -z "$TARGET_FOLDER" ]]; then
|
|
||||||
TARGET_FOLDER="src"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -d "$TARGET_FOLDER" ]]; then
|
|
||||||
echo "ERROR: Folder does not exist: $TARGET_FOLDER" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "$VERSION_SUFFIX" ]] && [[ ! "$VERSION_SUFFIX" =~ ^[0-9]{2}\.[0-9]{2}\.[0-9]{2}$ ]]; then
|
|
||||||
echo "ERROR: version_suffix must match NN.NN.NN (example 01.02.03)" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "$ZIP_NAME_INPUT" ]]; then
|
|
||||||
ZIP_NAME_INPUT="$(echo "$ZIP_NAME_INPUT" | tr '[:upper:]' '[:lower:]')"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "TARGET_FOLDER=$TARGET_FOLDER" >> "$GITHUB_ENV"
|
|
||||||
echo "INPUT_ZIP_NAME=$ZIP_NAME_INPUT" >> "$GITHUB_ENV"
|
|
||||||
echo "INPUT_VERSION_SUFFIX=$VERSION_SUFFIX" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
- name: Prepare dist folder
|
- name: Prepare dist folder
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -242,7 +202,7 @@ jobs:
|
|||||||
|
|
||||||
echo "VERSION_SUFFIX=$VERSION_SUFFIX" >> "$GITHUB_ENV"
|
echo "VERSION_SUFFIX=$VERSION_SUFFIX" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Create ZIP archive
|
- name: Create ZIP archive and SHA256
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
@@ -283,7 +243,6 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
echo "zip_artifact_name=$ZIP_NAME" >> "$GITHUB_OUTPUT"
|
echo "zip_artifact_name=$ZIP_NAME" >> "$GITHUB_OUTPUT"
|
||||||
echo "sha_artifact_name=${ZIP_NAME}.sha256" >> "$GITHUB_OUTPUT"
|
echo "sha_artifact_name=${ZIP_NAME}.sha256" >> "$GITHUB_OUTPUT"
|
||||||
echo "zip_file_name=$ZIP_NAME" >> "$GITHUB_OUTPUT"
|
echo "zip_file_name=$ZIP_NAME" >> "$GITHUB_OUTPUT"
|
||||||
@@ -307,13 +266,13 @@ jobs:
|
|||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ env.RELEASE_TAG }}
|
tag_name: ${{ env.RELEASE_TAG }}
|
||||||
prerelease: ${{ inputs.prerelease }}
|
prerelease: ${{ env.PRERELEASE == 'true' }}
|
||||||
files: |
|
files: |
|
||||||
${{ env.ZIP_PATH }}
|
${{ env.ZIP_PATH }}
|
||||||
${{ env.SHA_PATH }}
|
${{ env.SHA_PATH }}
|
||||||
|
|
||||||
- name: Export release upload status
|
- name: Export release upload status
|
||||||
id: release_upload_status
|
id: release_status
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|||||||
Reference in New Issue
Block a user