Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.2.0 #36

Closed
wants to merge 36 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
2973643
Initial develop branch (#2)
jdhughes-usgs May 11, 2021
fe1289b
Fix typo in README (#4)
Hofer-Julian May 12, 2021
de4452c
modflowapi interface (#8)
jlarsen-usgs Feb 15, 2023
defd2ee
fix(get value): fixed error handling when modflowapi fails to get a p…
spaulins-usgs Feb 24, 2023
2c4d893
update(rhs, hcof, AdvancedInput): bug fixes for setting variable valu…
jlarsen-usgs Feb 25, 2023
ce775a6
lint
jlarsen-usgs Feb 25, 2023
4fd8a1d
update setting routine for AdvancedInput
jlarsen-usgs Feb 25, 2023
a579efa
Merge pull request #10 from jlarsen-usgs/develop
jlarsen-usgs Mar 13, 2023
e0ca9e8
refactor(EOL): change CRLF to LF line endings for source files (#12)
mwtoews Mar 24, 2023
61ccbb6
Use pyproject.toml for project metadata, add citation info (#11)
mwtoews Mar 29, 2023
a8e241d
add(test_rhs_hcof_advanced): add additional test (#13)
jlarsen-usgs Mar 29, 2023
f08d8e8
Add missing RIV support to modflowapi (#16)
jlarsen-usgs Apr 19, 2023
afc08df
Update develop with v0.1.0 changes (#17)
jdhughes-usgs Apr 20, 2023
ab73ed6
ci(release): add automated release workflow and utility scripts (#18)
wpbonelli Apr 25, 2023
c0f681c
Update(rhs, hcof): updates to allow setting values when rhs and hcof …
jlarsen-usgs Apr 28, 2023
32a3698
lint PR
jlarsen-usgs Apr 28, 2023
3b6675a
update(Quickstart.ipynb): fix error in callback_function
jlarsen-usgs Jul 17, 2023
ce4e502
Update(rhs, hcof): allow setting rhs and hcof when pointers have not …
jlarsen-usgs Jul 17, 2023
e693282
refactor: update libmf6 path handling (#27)
wpbonelli Aug 3, 2023
48af4d1
docs: clean up duplicated notebooks (#28)
mwtoews Aug 8, 2023
5a63159
update(_ptr_to_recarray): slice pointers prior to setting data to rec…
jlarsen-usgs Aug 8, 2023
0f159da
fix _naux check
jlarsen-usgs Aug 8, 2023
8f0ec2f
fix auxvar and bound variable setting
jlarsen-usgs Aug 8, 2023
959fe31
update(_ptr_to_recarray): slice pointers prior to setting data to rec…
jlarsen-usgs Aug 8, 2023
c97339d
update(extensions): add support for IDM changes
jlarsen-usgs Dec 21, 2023
8677b35
lint extension updates
jlarsen-usgs Dec 21, 2023
97e195d
update testing for IDM/backward compatibility
jlarsen-usgs Dec 21, 2023
e6558ac
update flux to q
jlarsen-usgs Dec 21, 2023
a62e5d6
Add backward compatibility check to CI
jlarsen-usgs Dec 21, 2023
0a0ac0b
update executable tag number
jlarsen-usgs Dec 21, 2023
10dcaca
update code comments, try to kick-start CI
jlarsen-usgs Dec 21, 2023
f3ab857
Add IPRN integer record to IC files
jlarsen-usgs Dec 21, 2023
de0aff9
update(extensions): add support for IDM changes
jlarsen-usgs Dec 21, 2023
1393eb6
ci(release): trusted pypi publishing in release.yml, backfill HISTORY…
wpbonelli Feb 7, 2024
846ceca
Merge branch 'main' into develop
wpbonelli Feb 7, 2024
876a21a
ci(release): set version to 0.2.0, update changelog
github-actions[bot] Feb 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 48 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,16 +128,58 @@ jobs:
- name: Install modflow executables
uses: modflowpy/install-modflow-action@v1
with:
path: ~/work/modflowapi/modflowapi/autotest
path: ${{ github.workspace }}/autotest
repo: modflow6-nightly-build

- name: Run autotests
working-directory: ./autotest
shell: bash -l {0}
run: pytest -v -n auto -m "not mf6"

autotest_preidm_extensions:
name: modflowapi pre-idm extensions autotests
needs: lint
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
python-version: [ 3.8, 3.9, "3.10", "3.11" ]
defaults:
run:
shell: bash

steps:
# check out repo
- name: Checkout repo
uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: pyproject.toml

- name: Install Python dependencies
run: |
# chmod a+x libmf6*
pytest -n auto -m "not mf6"

python -m pip install --upgrade pip
pip install git+https://git@github.com/Deltares/xmipy@develop
pip install git+https://git@github.com/MODFLOW-USGS/modflow-devtools@develop
pip install .[test]

- name: Install modflow executables
uses: modflowpy/install-modflow-action@v1
with:
path: ${{ github.workspace }}/autotest
repo: executables
tag: "14.0"

- name: Run autotests
working-directory: ./autotest
shell: bash -l {0}
run: pytest -v -n auto -m "not mf6"

autotest_mf6_examples:
name: modflowapi mf6 examples autotests
needs: lint
Expand Down Expand Up @@ -173,12 +215,10 @@ jobs:
- name: Install modflow executables
uses: modflowpy/install-modflow-action@v1
with:
path: ~/work/modflowapi/modflowapi/autotest
path: ${{ github.workspace }}/autotest
repo: modflow6-nightly-build

- name: Run autotests
working-directory: ./autotest
shell: bash -l {0}
run: |
# chmod a+x libmf6*
pytest -n auto -m "mf6 and not extensions"
run: pytest -v -n auto -m "mf6 and not extensions"
283 changes: 283 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,283 @@
name: Release
on:
push:
branches:
- main
- 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 != 'main' }}
permissions:
contents: write
pull-requests: write
defaults:
run:
shell: bash
steps:

- name: Checkout release branch
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.8
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: Update version
id: version
run: |
ref="${{ github.ref_name }}"
version="${ref#"v"}"
python scripts/update_version.py -v "$version"
python -c "import modflowapi; print('Version: ', modflowapi.__version__)"
echo "version=$version" >> $GITHUB_OUTPUT

- name: Touch changelog
run: touch HISTORY.md

- name: Generate changelog
id: cliff
uses: orhun/git-cliff-action@v1
with:
config: cliff.toml
args: --verbose --unreleased --tag ${{ steps.version.outputs.version }}
env:
OUTPUT: CHANGELOG.md

- name: Update changelog
id: update-changelog
run: |
# move changelog
clog="CHANGELOG_${{ steps.version.outputs.version }}.md"
echo "changelog=$clog" >> $GITHUB_OUTPUT
sudo cp "${{ steps.cliff.outputs.changelog }}" "$clog"

# show current release changelog
cat "$clog"

# substitute full group names
sed -i 's/#### Ci/#### Continuous integration/' "$clog"
sed -i 's/#### Feat/#### New features/' "$clog"
sed -i 's/#### Fix/#### Bug fixes/' "$clog"
sed -i 's/#### Refactor/#### Refactoring/' "$clog"
sed -i 's/#### Test/#### Testing/' "$clog"

cat "$clog" HISTORY.md > temp_history.md
sudo mv temp_history.md HISTORY.md

# show full changelog
cat HISTORY.md

- name: Upload changelog
uses: actions/upload-artifact@v3
with:
name: changelog
path: ${{ steps.update-changelog.outputs.changelog }}

- name: Format Python files
run: python scripts/pull_request_prepare.py

- name: Push release branch
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
ver="${{ steps.version.outputs.version }}"
changelog=$(cat ${{ steps.update-changelog.outputs.changelog }} | grep -v "### Version $ver")

# remove this release's changelog so we don't commit it
# the changes have already been prepended to HISTORY.md
rm ${{ steps.update-changelog.outputs.changelog }}
rm -f CHANGELOG.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 }}, update changelog"
git push origin "${{ github.ref_name }}"

title="Release $ver"
body='
# Release '$ver'

The release can be approved by merging this pull request into `main`. This will trigger jobs to publish the release to PyPI and reset `develop` from `main`, incrementing the minor version number.

## Changelog

'$changelog'
'
gh pr create -B "main" -H "${{ github.ref_name }}" --title "$title" --draft --body "$body"

release:
name: Draft release
# runs only when changes are merged to main
if: ${{ github.event_name == 'push' && github.ref_name == 'main' }}
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:

- name: Checkout repo
uses: actions/checkout@v3
with:
ref: main

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.8

- name: Install Python dependencies
run: |
pip install --upgrade pip
pip install .
pip install ".[test]"

# actions/download-artifact won't look at previous workflow runs but we need to in order to get changelog
- name: Download artifacts
uses: dawidd6/action-download-artifact@v2

- name: Draft release
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
version=$(python scripts/update_version.py -g)
title="modflowapi $version"
notes=$(cat "changelog/CHANGELOG_$version.md" | grep -v "### Version $version")
gh release create "$version" \
--target main \
--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 == 'MODFLOW-USGS'
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/modflowapi
steps:

- name: Checkout main branch
uses: actions/checkout@v3
with:
ref: main

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.8

- 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

reset:
name: Draft reset PR
if: ${{ github.event_name == 'release' }}
runs-on: ubuntu-22.04
permissions:
contents: write
pull-requests: write
steps:

- name: Checkout main branch
uses: actions/checkout@v3
with:
ref: main

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.8
cache: 'pip'
cache-dependency-path: pyproject.toml

- name: Install Python dependencies
run: |
pip install --upgrade pip
pip install .
pip install ".[lint, test]"

- name: Get release tag
uses: oprypin/find-latest-tag@v1
id: latest_tag
with:
repository: ${{ github.repository }}
releases-only: true

- name: Draft pull request
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
# create reset branch from main
reset_branch="post-release-${{ steps.latest_tag.outputs.tag }}-reset"
git switch -c $reset_branch

# increment minor version
major_version=$(echo "${{ steps.latest_tag.outputs.tag }}" | cut -d. -f1)
minor_version=$(echo "${{ steps.latest_tag.outputs.tag }}" | cut -d. -f2)
patch_version=0
version="$major_version.$((minor_version + 1)).$patch_version"
python scripts/update_version.py -v "$version"

# format Python files
python scripts/pull_request_prepare.py

# commit and push reset branch
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): update to development version $version"
git push -u origin $reset_branch

# create PR into develop
body='
# Reinitialize for development

Updates the `develop` branch from `main` following a successful release. Increments the minor version number.
'
gh pr create -B "develop" -H "$reset_branch" --title "Reinitialize develop branch" --draft --body "$body"
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ message: If you use this software, please cite both the article from preferred-c
and the software itself.
type: software
title: MODFLOW API
version: 0.1.0
version: 0.2.0
date-released: '2023-04-19'
abstract: An extension to xmipy for the MODFLOW API.
repository-artifact: https://pypi.org/project/modflowapi
Expand Down
Loading