in progress: release new #33
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish built artifacts | |
on: | |
push: | |
branches: | |
- devel | |
workflow_call: | |
inputs: | |
run_id: | |
required: false | |
type: string | |
description: The run ID with artifacts to be published | |
default: ${{ github.run_id }} | |
# Run every script actions in bash | |
defaults: | |
run: | |
shell: bash | |
# Since we will be pushing, make sure that only one instance can run at a time. | |
concurrency: publisher | |
jobs: | |
publisher: | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
contents: write | |
environment: | |
name: release | |
url: ${{ steps.release.outputs.url }} | |
steps: | |
- name: Obtain latest successful run id | |
id: finder | |
run: | | |
run_id= | |
if [[ -n $INPUT_RUNID ]]; then | |
echo "Using input run id" | |
run_id=$INPUT_RUNID | |
else | |
echo "Querying latest run id for $COMMIT" | |
run_id=$(gh run list \ | |
-c "$COMMIT" \ | |
-w "$WORKFLOW" \ | |
-s "$CONCLUSION" \ | |
--limit 1 \ | |
--json databaseId \ | |
--jq '.[].databaseId') | |
fi | |
if [[ -z $run_id ]]; then | |
echo "::error::Could not find any CI run for commit $COMMIT" | |
exit 1 | |
fi | |
echo "run_id=$run_id" >> "$GITHUB_OUTPUT" | |
env: | |
COMMIT: ${{ github.event.after }} | |
WORKFLOW: ci.yml | |
CONCLUSION: success | |
GH_TOKEN: ${{ github.token }} | |
GH_REPO: ${{ github.repository }} | |
INPUT_RUNID: ${{ inputs.run_id }} | |
# Download the latest instance of artifacts from a build done previously | |
- name: Download generated source archive | |
uses: actions/download-artifact@v4 | |
with: | |
run-id: ${{ steps.finder.outputs.run_id }} | |
# Keep up-to-date with ci.yml | |
name: source archive | |
path: release-staging | |
github-token: ${{ github.token }} | |
- name: Download generated release binaries | |
uses: actions/download-artifact@v4 | |
with: | |
run-id: ${{ steps.finder.outputs.run_id }} | |
# Keep up-to-date with ci.yml | |
pattern: release binaries * | |
merge-multiple: "true" | |
path: release-staging | |
github-token: ${{ github.token }} | |
- name: Download release manifest tool | |
uses: actions/download-artifact@v4 | |
with: | |
run-id: ${{ steps.finder.outputs.run_id }} | |
# Keep up-to-date with ci.yml | |
name: release manifest tool | |
path: release-staging | |
github-token: ${{ github.token }} | |
- id: release-files | |
name: Create release manifest | |
run: | | |
# Github Artifacts strip executable permissions so it has to be set again | |
chmod 755 release_manifest | |
# Create a new release manifest | |
./release_manifest add *.json | |
toUpload=$(./release_manifest files-to-upload) | |
delimiter=EOF-$(uuidgen) | |
cat <<EOF >> $GITHUB_OUTPUT | |
result<<$delimiter | |
$toUpload | |
$delimiter | |
EOF | |
version=$(./release_manifest version) | |
prerelease=true | |
[[ $version == *-* ]] || prerelease=false | |
echo "version=$version" >> $GITHUB_OUTPUT | |
echo "prerelease=$prerelease" >> $GITHUB_OUTPUT | |
working-directory: release-staging | |
- id: release-desc | |
name: Create release description | |
run: | | |
- id: release | |
name: Create pre-release | |
uses: softprops/[email protected] | |
with: | |
prerelease: ${{ steps.release-files.outputs.prerelease }} | |
files: ${{ steps.release-files.outputs.result }} | |
tag_name: ${{ steps.release-files.outputs.version }} | |
fail_on_unmatched_files: true | |
target_commitish: ${{ github.event.after }} | |
body: | | |
Continuous delivery for commit ${{ github.event.after }} |