HQ: generate rarity output in CSV format (in addition to raster) #148
Workflow file for this run
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: Release (Part 2 of 2) | |
on: | |
# this workflow will run any time any PR into main is closed | |
pull_request: | |
types: [closed] | |
branches: | |
- main | |
workflow_dispatch: | |
inputs: | |
version: | |
required: true | |
type: string | |
env: | |
GITHUB_TOKEN: ${{ secrets.AUTORELEASE_BOT_PAT }} | |
jobs: | |
roll_back_release: | |
# run this job if a PR from an autorelease branch into main was closed without merging | |
if: startsWith(github.head_ref, 'autorelease') && github.event.pull_request.merged != true | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Extract version from autorelease branch name | |
run: echo "VERSION=$(echo ${{ github.head_ref }} | cut -c 13-)" >> $GITHUB_ENV | |
- name: Roll back on failure | |
uses: ./.github/actions/rollback_release | |
with: | |
VERSION: ${{ env.VERSION }} | |
GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }} | |
publish_release: | |
# run this job if a PR was merged from an autorelease branch into main | |
# or if manually triggered, github.head_ref is undefined | |
if: ${{ ! github.head_ref || (startsWith(github.head_ref, 'autorelease') && github.event.pull_request.merged == true) }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: pip install twine | |
- name: Extract version from autorelease branch name | |
if: ${{ github.head_ref }} | |
run: echo "VERSION=$(echo ${{ github.head_ref }} | cut -c 13-)" >> $GITHUB_ENV | |
- name: Get version from manual trigger input | |
if: ${{ ! github.head_ref }} | |
run: echo "VERSION=${{ inputs.version }}" >> $GITHUB_ENV | |
- name: Find actions run for the $VERSION tag | |
run: | | |
echo "RUN_ID=$( \ | |
gh run list \ | |
--branch $VERSION \ | |
--workflow 'Run Tests and Build' \ | |
--limit 1 \ | |
--json databaseId \ | |
--jq .[].databaseId)" >> $GITHUB_ENV | |
- name: Download release artifacts | |
run: | | |
mkdir artifacts | |
# this will download a folder containing each artifact | |
gh run download $RUN_ID --dir artifacts --pattern "Wheel for *" | |
# move the artifacts out of the folders | |
mv artifacts/*/* artifacts | |
rm -rf artifacts/Wheel* | |
# download each artifact separately so that the command will fail if any is missing | |
for artifact in Workbench-Windows-binary \ | |
Workbench-macOS-binary \ | |
InVEST-sample-data \ | |
InVEST-user-guide \ | |
"Source distribution" | |
do | |
gh run download $RUN_ID --dir artifacts --name "$artifact" | |
done | |
- name: Create Github release | |
run: | | |
# Copy the history notes for this version into the release message | |
echo "This release includes the following fixes and features:" > notes.rst | |
echo "" >> notes.rst | |
sed -n "/$VERSION/,/^$/p" HISTORY.rst | tail -n +3 >> notes.rst | |
gh release create $VERSION \ | |
--verify-tag \ | |
--title $VERSION \ | |
--notes-file notes.rst \ | |
artifacts/* | |
- name: Create a PyPI release | |
# this is the only step that can't be rolled back | |
run: | | |
twine upload \ | |
--username="__token__" \ | |
--password=${{ secrets.PYPI_NATCAP_INVEST_TOKEN }} \ | |
artifacts/natcap.invest* | |
- name: Roll back on failure | |
if: failure() | |
uses: ./.github/actions/rollback_release | |
with: | |
VERSION: ${{ env.VERSION }} | |
GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }} |