diff --git a/.github/workflows/release-part-2.yml b/.github/workflows/release-part-2.yml index b89d28bc08..a2de1924e4 100644 --- a/.github/workflows/release-part-2.yml +++ b/.github/workflows/release-part-2.yml @@ -7,6 +7,12 @@ on: branches: - main + workflow_dispatch: + inputs: + version: + required: true + type: string + env: GITHUB_TOKEN: ${{ secrets.AUTORELEASE_BOT_PAT }} @@ -29,7 +35,7 @@ jobs: publish_release: # run this job if a PR was merged from an autorelease branch into main - if: startsWith(github.head_ref, 'autorelease') && github.event.pull_request.merged == true + if: ${{ ! github.head_ref || (startsWith(github.head_ref, 'autorelease') && github.event.pull_request.merged == true) }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -38,8 +44,13 @@ jobs: 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=$( \ @@ -50,50 +61,50 @@ jobs: --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* - # verify that all 6 wheels are there - if [ `find artifacts/* | wc -l` -ne 6 ]; then exit 1; fi - - # 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: 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* + # # verify that all 6 wheels are there + # if [ `find artifacts/* | wc -l` -ne 6 ]; then exit 1; fi - - name: Roll back on failure - if: failure() - uses: ./.github/actions/rollback_release - with: - VERSION: ${{ env.VERSION }} - GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }} + # # 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 }}