Skip to content

in progress: release new #33

in progress: release new

in progress: release new #33

Workflow file for this run

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 }}