diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fe289351..b4e8fc77 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,142 +3,14 @@ on: push: branches: - master - - v[0-9]+.[0-9]+.[0-9]+* + # branchname trigger if we had the ability to auto-prep release PRs + # (turned off for doi-usgs org) + #- v[0-9]+.[0-9]+.[0-9]+* release: types: - published jobs: - prep: - name: Prepare release - runs-on: ubuntu-latest - if: ${{ github.event_name == 'push' && github.ref_name != 'master' }} - permissions: - contents: write - defaults: - run: - shell: bash - steps: - - - name: Checkout release branch - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Get latest release version number - id: get_version - uses: battila7/get-version-action@v2 - - - name: Setup Micromamba - uses: mamba-org/setup-micromamba@v1 - with: - environment-file: ci/test_environment.yml - cache-environment: true - cache-downloads: true - create-args: >- - python=${{ matrix.python-version }} - init-shell: >- - bash - - - name: Conda info - shell: bash -l {0} - run: micromamba info - - - name: Install dependencies - shell: bash -l {0} - run: | - if [[ ! -d "$HOME/.local/bin" ]]; then - mkdir -p "$HOME/.local/bin"; - fi - # copy modflow bins to local dir to add to PATH later - if [ "$RUNNER_OS" == "Windows" ]; then - d="win" - elif [ "$RUNNER_OS" == "macOS" ]; then - d="mac" - elif [ "$RUNNER_OS" == "Linux" ]; then - d="linux" - else - d="unexpectedos" - exit 1 - fi - echo bin/$d/. >> $GITHUB_PATH - echo $GITHUB_PATH - - - name: Test install from git - shell: bash -l {0} - run: | - pip install git+https://github.com/doi-usgs/sfrmaker@develop - cd .. - python -c "import sfrmaker" - cd sfrmaker - - - name: Install SFRmaker and ipykernel - shell: bash -l {0} - run: | - pip install -e . - python -m ipykernel install --user --name sfrmaker_ci --display-name "sfrmaker_ci" - - - name: Test with latest PyPI flopy - shell: bash -l {0} - if: ${{ matrix.python-version == 3.11}} - run: pip install flopy --force-reinstall - - - name: Conda list - shell: bash -l {0} - run: | - micromamba list - pip list - - - name: Run tests and upload coverage - shell: bash -l {0} - timeout-minutes: 60 - run: | - coverage run -m pytest -v --durations=20 --timeout=120 - - name: Upload coverage - shell: bash -l {0} - run: | - coverage report -m - codecov - - - name: Push release branch - run: | - git config core.sharedRepository true - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git commit --allow-empty -m "ci(release): Version ${{ steps.get_version.outputs.version }}" - git push origin "${{ github.ref_name }}" - - pr: - name: Draft release PR - needs: prep - if: ${{ github.event_name == 'push' && !(contains(github.ref_name, 'rc')) }} - runs-on: ubuntu-latest #ubuntu-22.04 - permissions: - contents: write - pull-requests: write - defaults: - run: - shell: bash -l {0} - steps: - - - name: Checkout release branch - uses: actions/checkout@v4 - with: - ref: ${{ github.ref_name }} - - - name: Draft pull request - env: - GITHUB_TOKEN: ${{ github.token }} - run: | - ref="${{ github.ref_name }}" - ver="${ref#"v"}" - title="Release $ver" - body=' - # SFRmaker '$ver' - - The release can be approved by merging this pull request into `master`. This will trigger a final job to publish the release to PyPI. - ' - gh pr create -B "master" -H "$ref" --title "$title" --draft --body "$body" release: name: Create Release @@ -153,16 +25,22 @@ jobs: uses: actions/checkout@v4 with: ref: master + - name: Bump version and push tag + id: tag_version + uses: mathieudutour/github-tag-action@v6.2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token with: - tag_name: ${{ github.ref }} - release_name: Release ${{ github.ref }} + tag_name: ${{ steps.tag_version.outputs.new_tag }} + release_name: Release ${{ steps.tag_version.outputs.new_tag }} body: | - Changes in this Release: + Changes in this Release: + ${{ steps.tag_version.outputs.changelog }} draft: false prerelease: false