Skip to content

ci(release.yml): fix release commit command #19

ci(release.yml): fix release commit command

ci(release.yml): fix release commit command #19

Workflow file for this run

name: Publish release
on:
push:
branches:
- master
- 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
# runs only when changes are merged to master
if: ${{ github.event_name == 'push' && github.ref_name == 'master' }}
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout master branch
uses: actions/checkout@v4
with:
ref: master
- 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 }}
body: |
Changes in this Release:
draft: false
prerelease: false
docs:
needs: release
name: Publish Docs
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v3
with:
persist-credentials: false
- name: Get latest release version number
id: get_version
uses: battila7/get-version-action@v2
- name: Print version
shell: bash
run: |
echo ${{ steps.get_version.outputs.version }}
- name: Setup Micromamba
uses: mamba-org/setup-micromamba@v1
with:
environment-file: ci/test_environment.yml
cache-environment: true
cache-downloads: true
- 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
pip install -e .
python -m ipykernel install --user --name sfrmaker_ci --display-name "sfrmaker_ci"
- name: Conda list
shell: bash -l {0}
run: micromamba list
- name: Run tests
shell: bash -l {0}
run: |
pytest sfrmaker/test/test_notebooks.py
- name: Build docs
shell: bash -l {0}
run: |
set -e
make -C docs html
- name: Deploy 🚀
uses: JamesIves/github-pages-deploy-action@3.7.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: gh-pages
FOLDER: docs/build/html
CLEAN: false
TARGET_FOLDER: ${{ steps.get_version.outputs.version }}
publish:
name: Publish package
# runs only after release is published (manually promoted from draft)
if: ${{ github.event_name == 'release' }}
runs-on: ubuntu-latest #ubuntu-22.04
permissions:
contents: write
pull-requests: write
id-token: write # mandatory for trusted publishing
environment: # requires a 'release' environment in repo settings
name: release
url: https://pypi.org/p/sfrmaker
steps:
- name: Checkout master branch
uses: actions/checkout@v4
with:
ref: master
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
cache: 'pip'
cache-dependency-path: pyproject.toml
- name: Install Python dependencies
run: |
pip install --upgrade pip
pip install build twine
pip install .
pip install ".[lint, test, optional]"
- name: Build package
run: python -m build
- name: Check package
run: twine check --strict dist/*
- name: Upload package
uses: actions/upload-artifact@v4
with:
name: dist
path: dist
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1