publisher: use actions/download-artifact directly (#1364) #978
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 | |
# 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: | |
# Publish action needs a checkout | |
- uses: actions/checkout@v4 | |
- name: Obtain latest successful run id | |
id: finder | |
run: | | |
run_id=$(gh run list \ | |
-c "$COMMIT" \ | |
-w "$WORKFLOW" \ | |
-s "$CONCLUSION" \ | |
--limit 1 \ | |
--json databaseId \ | |
--jq '.[].databaseId') | |
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 }} | |
# Download the latest instance of artifacts from a build done previously | |
- name: Download generated docs | |
uses: actions/download-artifact@v4 | |
with: | |
run-id: ${{ steps.finder.outputs.run_id }} | |
# Keep up-to-date with ci.yml | |
name: Generated docs | |
path: doc/html | |
github-token: ${{ github.token }} | |
- 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 }} | |
- name: Publish docs | |
uses: JamesIves/[email protected] | |
with: | |
branch: gh-pages | |
folder: doc/html | |
- 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 | |
echo "version=$(./release_manifest version)" >> $GITHUB_OUTPUT | |
working-directory: release-staging | |
- id: release | |
name: Create pre-release | |
uses: softprops/[email protected] | |
with: | |
prerelease: true | |
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 }} |