forked from MODFLOW-USGS/modflowapi
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from w-bonelli/v0.1.1
Release 0.1.1
- Loading branch information
Showing
8 changed files
with
2,778 additions
and
4 deletions.
There are no files selected for viewing
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
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" |
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
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
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. | ||
|
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
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" |
Oops, something went wrong.