Merge pull request #191 from modflowpy/v1.2.10 #8
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 | |
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 | |
pull-requests: write | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout release branch | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.9 | |
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]" | |
- name: Make metadata files | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_seconds: 10 | |
max_attempts: 3 | |
command: make-code-json | |
- name: Upload code.md | |
uses: actions/upload-artifact@v3 | |
with: | |
name: code.md | |
path: code.md | |
- name: Update version | |
id: version | |
run: | | |
ref="${{ github.ref_name }}" | |
version="${ref#"v"}" | |
python scripts/update_version.py -v "$version" | |
python -c "import pymake; print('Version: ', pymake.__version__)" | |
echo "version=$version" >> $GITHUB_OUTPUT | |
- name: Lint | |
run: ruff check . | |
- name: Format | |
run: ruff format . | |
- name: Push release branch | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: | | |
ver="${{ steps.version.outputs.version }}" | |
# remove metadata files | |
rm code.json | |
rm code.md | |
# commit and push changes | |
git config core.sharedRepository true | |
git config user.name "github-actions[bot]" | |
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
git add -A | |
git commit -m "ci(release): set version to ${{ steps.version.outputs.version }}" | |
git push origin "${{ github.ref_name }}" | |
title="Release $ver" | |
body=' | |
# Release '$ver' | |
The release can be approved by merging this pull request into `master`. This will trigger a job to publish the release to PyPI. | |
' | |
gh pr create -B "master" -H "${{ github.ref_name }}" --title "$title" --draft --body "$body" | |
release: | |
name: Draft 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 repo | |
uses: actions/checkout@v4 | |
with: | |
ref: master | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.9 | |
- name: Install Python dependencies | |
run: | | |
pip install --upgrade pip | |
pip install . | |
pip install ".[test]" | |
- name: Download artifacts | |
uses: dawidd6/action-download-artifact@v6 | |
- name: Draft release | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
run: | | |
version=$(cat version.txt) | |
title="pymake $version" | |
notes=$(cat code.md) | |
gh release create "$version" \ | |
--target master \ | |
--title "$title" \ | |
--notes "$notes" \ | |
--draft \ | |
--latest | |
publish: | |
name: Publish package | |
# runs only after release is published (manually promoted from draft) | |
if: github.event_name == 'release' && github.repository_owner == 'modflowpy' | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
pull-requests: write | |
id-token: write | |
environment: # requires a 'release' environment in repo settings | |
name: release | |
url: https://pypi.org/p/mfpymake | |
steps: | |
- name: Checkout master branch | |
uses: actions/checkout@v4 | |
with: | |
ref: master | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.9 | |
- name: Install Python dependencies | |
run: | | |
pip install --upgrade pip | |
pip install build twine | |
pip install . | |
- 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 |