Skip to content

Commit

Permalink
Merge pull request #4 from w-bonelli/v0.1.1
Browse files Browse the repository at this point in the history
Release 0.1.1
  • Loading branch information
wpbonelli authored Apr 24, 2023
2 parents 400780e + 2fee3fd commit c2268e7
Show file tree
Hide file tree
Showing 8 changed files with 2,778 additions and 4 deletions.
256 changes: 256 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
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: 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 patch 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

# 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' }}
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

- 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: Publish package
run: twine upload dist/*

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 patch 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=$(echo "${{ steps.latest_tag.outputs.tag }}" | cut -d. -f3)
version="$major_version.$minor_version.$((patch_version + 1))"
python scripts/update_version.py -v "$version"
# 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 patch 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.1.1
date-released: '2023-04-19'
abstract: An extension to xmipy for the MODFLOW API.
repository-artifact: https://pypi.org/project/modflowapi
Expand Down
19 changes: 19 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
### Version 0.1.1

#### Add

* [add(test_rhs_hcof_advanced)](https://github.com/MODFLOW-USGS/modflowapi/commit/a8e241df1def5899ccbf22368eddc76da0d7a60c): Add additional test (#13). Committed by Joshua Larsen on 2023-03-29.

#### New features

* [feat(modflowapi)](https://github.com/MODFLOW-USGS/modflowapi/commit/3cc77dad6eae6c0fdb8ea856bc3ea3e7285ca658): Base files for modflowapi package. Committed by Joseph D Hughes on 2021-05-11.

#### Bug fixes

* [fix(get value)](https://github.com/MODFLOW-USGS/modflowapi/commit/defd2ee2bfc840ee2b7b3df76fcea4af651f1936): Fixed error handling when modflowapi fails to get a pointer to a value from the API (#9). Committed by spaulins-usgs on 2023-02-24.

#### Refactoring

* [refactor(rhs, hcof, AdvancedInput)](https://github.com/MODFLOW-USGS/modflowapi/commit/2c4d893eaa96457be099313a220c7c7d8fca888a): Bug fixes for setting variable values for advanced inputs. Committed by Joshua Larsen on 2023-02-25.
* [refactor(EOL)](https://github.com/MODFLOW-USGS/modflowapi/commit/e0ca9e80a60ae6c85933a69ec322a5bc861a32ab): Change CRLF to LF line endings for source files (#12). Committed by Mike Taves on 2023-03-24.

45 changes: 45 additions & 0 deletions cliff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# configuration file for git-cliff (0.1.0)

[changelog]
body = """
{% if version %}\
### Version {{ version | trim_start_matches(pat="v") }}
{% else %}\
### [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
#### {{ group | upper_first }}
{% for commit in commits %}
* [{{ commit.group }}{% if commit.scope %}({{ commit.scope }}){% endif %}](https://github.com/MODFLOW-USGS/modflowapi/commit/{{ commit.id }}): {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}. Committed by {{ commit.author.name }} on {{ commit.author.timestamp | date(format="%Y-%m-%d") }}.\
{% endfor %}
{% endfor %}\n
"""
trim = true

[git]
conventional_commits = true
filter_unconventional = true
split_commits = false
commit_parsers = [
{ message = "^[fF]eat", group = "feat"},
{ message = "^[fF]ix", group = "fix"},
{ message = "^[bB]ug", group = "fix"},
{ message = "^[pP]erf", group = "perf"},
{ message = "^[rR]efactor", group = "refactor"},
{ message = "^[uU]pdate", group = "refactor"},
{ message = "^[dD]oc.*", group = "docs", skip = true},
{ message = "^[bB]inder", group = "docs", skip = true},
{ message = "^[nN]otebook.*", group = "docs", skip = true},
{ message = "^[rR][eE][aA][dD].*", group = "docs", skip = true},
{ message = "^[sS]tyl.*", group = "style", skip = true},
{ message = "^[tT]est.*", group = "test", skip = true},
{ message = "^[cC][iI]", skip = true},
{ message = "^[cC][iI]\\(release\\):", skip = true},
{ message = "^[rR]elease", skip = true},
{ message = "^[cC]hore", group = "chore", skip = true},
]
protect_breaking_commits = false
filter_commits = false
tag_pattern = "[0-9].[0-9].[0-9]"
ignore_tags = ""
sort_commits = "oldest"
Loading

0 comments on commit c2268e7

Please sign in to comment.