Skip to content

publisher: use actions/download-artifact directly (#1364) #978

publisher: use actions/download-artifact directly (#1364)

publisher: use actions/download-artifact directly (#1364) #978

Workflow file for this run

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