mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-09-12 15:21:09 +00:00
feat: enhance GitCode release workflow with bootstrap asset and asset matrix
This commit is contained in:
@@ -30,6 +30,8 @@ jobs:
|
|||||||
release_tag: ${{ steps.release.outputs.tag }}
|
release_tag: ${{ steps.release.outputs.tag }}
|
||||||
release_body: ${{ steps.release.outputs.body }}
|
release_body: ${{ steps.release.outputs.body }}
|
||||||
release_prerelease: ${{ steps.release.outputs.prerelease }}
|
release_prerelease: ${{ steps.release.outputs.prerelease }}
|
||||||
|
bootstrap_asset: ${{ steps.release.outputs.bootstrap_asset }}
|
||||||
|
release_asset_matrix: ${{ steps.release.outputs.asset_matrix }}
|
||||||
steps:
|
steps:
|
||||||
- name: Wait for GitHub release workflows
|
- name: Wait for GitHub release workflows
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
@@ -107,11 +109,39 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
while IFS= read -r -d '' file; do
|
||||||
|
directory="$(dirname "$file")"
|
||||||
|
filename="$(basename "$file")"
|
||||||
|
safe_filename="$(sed 's/[^A-Za-z0-9._+-]/-/g' <<< "$filename")"
|
||||||
|
if [[ "$filename" != "$safe_filename" ]]; then
|
||||||
|
if [[ -e "$directory/$safe_filename" ]]; then
|
||||||
|
echo "::error::Asset filename collision after normalization: $safe_filename"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
mv -- "$file" "$directory/$safe_filename"
|
||||||
|
fi
|
||||||
|
done < <(find release-assets -maxdepth 1 -type f -print0)
|
||||||
|
|
||||||
find release-assets -maxdepth 1 -type f -print | sort
|
find release-assets -maxdepth 1 -type f -print | sort
|
||||||
|
|
||||||
|
bootstrap_asset="$(
|
||||||
|
find release-assets -maxdepth 1 -type f -printf '%s\t%f\n' \
|
||||||
|
| sort -n -k1,1 \
|
||||||
|
| head -n 1 \
|
||||||
|
| cut -f2-
|
||||||
|
)"
|
||||||
|
asset_matrix="$(
|
||||||
|
find release-assets -maxdepth 1 -type f -printf '%f\n' \
|
||||||
|
| sort \
|
||||||
|
| jq -Rsc --arg bootstrap "$bootstrap_asset" \
|
||||||
|
'split("\n") | map(select(length > 0 and . != $bootstrap))'
|
||||||
|
)"
|
||||||
|
|
||||||
delimiter="release-body-$(openssl rand -hex 16)"
|
delimiter="release-body-$(openssl rand -hex 16)"
|
||||||
{
|
{
|
||||||
echo "tag=$RELEASE_TAG"
|
echo "tag=$RELEASE_TAG"
|
||||||
|
echo "bootstrap_asset=$bootstrap_asset"
|
||||||
|
echo "asset_matrix=$asset_matrix"
|
||||||
echo "body<<$delimiter"
|
echo "body<<$delimiter"
|
||||||
# sync_to_gitcode embeds this input in a single-quoted shell string.
|
# sync_to_gitcode embeds this input in a single-quoted shell string.
|
||||||
# Replace ASCII apostrophes so release notes cannot break its script.
|
# Replace ASCII apostrophes so release notes cannot break its script.
|
||||||
@@ -128,8 +158,8 @@ jobs:
|
|||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
|
|
||||||
gitcode-release:
|
gitcode-release-metadata:
|
||||||
name: Publish GitCode release
|
name: Publish GitCode release metadata
|
||||||
needs: prepare-release-assets
|
needs: prepare-release-assets
|
||||||
if: ${{ vars.GITCODE_REPOSITORY != '' }}
|
if: ${{ vars.GITCODE_REPOSITORY != '' }}
|
||||||
uses: nvdacn/sync_to_gitcode/.github/workflows/CreateReleaseOnGitCode.yaml@18b70112d0e62260bc54085028e5510bbc6323b2
|
uses: nvdacn/sync_to_gitcode/.github/workflows/CreateReleaseOnGitCode.yaml@18b70112d0e62260bc54085028e5510bbc6323b2
|
||||||
@@ -140,6 +170,29 @@ jobs:
|
|||||||
tag_name: ${{ needs.prepare-release-assets.outputs.release_tag }}
|
tag_name: ${{ needs.prepare-release-assets.outputs.release_tag }}
|
||||||
body: ${{ needs.prepare-release-assets.outputs.release_body }}
|
body: ${{ needs.prepare-release-assets.outputs.release_body }}
|
||||||
prerelease: ${{ needs.prepare-release-assets.outputs.release_prerelease == 'true' }}
|
prerelease: ${{ needs.prepare-release-assets.outputs.release_prerelease == 'true' }}
|
||||||
file_name: '*'
|
file_name: ${{ needs.prepare-release-assets.outputs.bootstrap_asset }}
|
||||||
|
secrets:
|
||||||
|
GITCODE_TOKEN: ${{ secrets.GITCODE_TOKEN }}
|
||||||
|
|
||||||
|
gitcode-release-assets:
|
||||||
|
name: Publish GitCode asset (${{ matrix.file_name }})
|
||||||
|
needs:
|
||||||
|
- prepare-release-assets
|
||||||
|
- gitcode-release-metadata
|
||||||
|
if: ${{ vars.GITCODE_REPOSITORY != '' }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
max-parallel: 4
|
||||||
|
matrix:
|
||||||
|
file_name: ${{ fromJSON(needs.prepare-release-assets.outputs.release_asset_matrix) }}
|
||||||
|
uses: nvdacn/sync_to_gitcode/.github/workflows/CreateReleaseOnGitCode.yaml@18b70112d0e62260bc54085028e5510bbc6323b2
|
||||||
|
with:
|
||||||
|
artifact_name: gitcode-release-assets
|
||||||
|
gitcode_repository: ${{ vars.GITCODE_REPOSITORY }}
|
||||||
|
default_branch: main
|
||||||
|
tag_name: ${{ needs.prepare-release-assets.outputs.release_tag }}
|
||||||
|
body: ${{ needs.prepare-release-assets.outputs.release_body }}
|
||||||
|
prerelease: ${{ needs.prepare-release-assets.outputs.release_prerelease == 'true' }}
|
||||||
|
file_name: ${{ matrix.file_name }}
|
||||||
secrets:
|
secrets:
|
||||||
GITCODE_TOKEN: ${{ secrets.GITCODE_TOKEN }}
|
GITCODE_TOKEN: ${{ secrets.GITCODE_TOKEN }}
|
||||||
|
|||||||
Reference in New Issue
Block a user