Update build_zip.yml
This commit is contained in:
100
.github/workflows/build_zip.yml
vendored
100
.github/workflows/build_zip.yml
vendored
@@ -33,6 +33,37 @@ on:
|
||||
required: false
|
||||
type: string
|
||||
default: ""
|
||||
publish_release:
|
||||
description: "If true, upload ZIP and SHA256 as GitHub Release assets"
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
release_tag:
|
||||
description: "Release tag to publish to (required if publish_release=true)"
|
||||
required: false
|
||||
type: string
|
||||
default: ""
|
||||
prerelease:
|
||||
description: "If true, mark the release as prerelease"
|
||||
required: false
|
||||
type: boolean
|
||||
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"
|
||||
@@ -49,6 +80,7 @@ on:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
zip:
|
||||
@@ -60,6 +92,7 @@ jobs:
|
||||
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:
|
||||
- name: Checkout repository
|
||||
@@ -88,6 +121,51 @@ jobs:
|
||||
TARGET_FOLDER="${{ inputs.target_folder }}"
|
||||
ZIP_NAME_INPUT="${{ inputs.zip_name }}"
|
||||
VERSION_SUFFIX="${{ inputs.version_suffix }}"
|
||||
PUBLISH_RELEASE="${{ inputs.publish_release }}"
|
||||
RELEASE_TAG="${{ inputs.release_tag }}"
|
||||
|
||||
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
|
||||
|
||||
if [[ "$PUBLISH_RELEASE" == "true" ]] && [[ -z "$RELEASE_TAG" ]]; then
|
||||
echo "ERROR: release_tag is required when publish_release=true" >&2
|
||||
exit 1
|
||||
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"
|
||||
echo "PUBLISH_RELEASE=$PUBLISH_RELEASE" >> "$GITHUB_ENV"
|
||||
echo "RELEASE_TAG=$RELEASE_TAG" >> "$GITHUB_ENV"
|
||||
|
||||
if [[ -z "$TARGET_FOLDER" ]]; then
|
||||
TARGET_FOLDER="${{ github.event.inputs.target_folder }}"
|
||||
@@ -222,3 +300,25 @@ jobs:
|
||||
with:
|
||||
name: ${{ env.ZIP_NAME }}.sha256
|
||||
path: ${{ env.SHA_PATH }}
|
||||
|
||||
- name: Upload assets to GitHub Release
|
||||
id: release_upload
|
||||
if: ${{ env.PUBLISH_RELEASE == 'true' }}
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
tag_name: ${{ env.RELEASE_TAG }}
|
||||
prerelease: ${{ inputs.prerelease }}
|
||||
files: |
|
||||
${{ env.ZIP_PATH }}
|
||||
${{ env.SHA_PATH }}
|
||||
|
||||
- name: Export release upload status
|
||||
id: release_upload_status
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if [[ "$PUBLISH_RELEASE" == "true" ]]; then
|
||||
echo "release_uploaded=true" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "release_uploaded=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user