Release #14
Workflow file for this run
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: | |
tags: | |
- v*.*.* | |
env: | |
PREPARATION_COMMIT: '[github-actions.ci] auto update powerplants.csv for release ${{ github.ref_name }}' | |
jobs: | |
check-preparation: | |
name: Check if release is prepared | |
runs-on: ubuntu-latest | |
outputs: | |
prepared: ${{ steps.validate.outputs.prepared }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Validate commit message | |
id: validate | |
run: | | |
# Check if last commit is the expected commit message | |
COMMIT_MESSAGE=$(git log -1 --pretty=%B) | |
echo "Expected: '${{ env.PREPARATION_COMMIT }}'" | |
echo "Received: '$COMMIT_MESSAGE'" | |
prepared="false" | |
if [[ "$COMMIT_MESSAGE" == "${{ env.PREPARATION_COMMIT }}" ]]; then | |
prepared="true" | |
fi | |
echo "prepared=$prepared" >> $GITHUB_OUTPUT | |
test: | |
name: Run test workflow | |
needs: [check-preparation] | |
# Run test workflow before building and releasing | |
if: ${{ needs.check-preparation.outputs.prepared == 'false' }} | |
uses: ./.github/workflows/test.yml | |
prepare-release: | |
name: Prepare release | |
needs: [test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Generate token for PyPSA Bot | |
id: generate-token | |
uses: actions/create-github-app-token@v1 | |
with: | |
app-id: ${{ vars.PYPSA_BOT_ID }} | |
private-key: ${{ secrets.PYPSA_BOT_PRIVATE_KEY }} | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Find the branch for commit/ tag | |
run: | | |
branch=$(git branch -r --contains ${{ github.sha }} | grep -v 'HEAD' | head -n 1 | sed 's|origin/||' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') | |
echo "Branch found: $branch" | |
echo "BRANCH_NAME=$branch" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: ${{ env.BRANCH_NAME }} | |
token: ${{ steps.generate-token.outputs.token }} | |
# Start of preparation script | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.12 | |
- name: Install package | |
run: | | |
python -m pip install uv | |
uv pip install --system ".[dev]" | |
uv pip install --system cartopy | |
- name: Create dataset | |
run: | | |
import powerplantmatching as pm | |
df = pm.powerplants(update=True) | |
df.to_csv("powerplants.csv", index_label="id") | |
fig, ax = df.powerplant.plot_map(figsize=(22, 16)) | |
fig.savefig('doc/powerplants.png') | |
shell: python | |
# End of preparation script | |
- name: Remove previous tag | |
run: | | |
git tag -d ${{ github.ref_name }} | |
git push origin --delete ${{ github.ref_name }} | |
- name: Commit changes | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
branch: ${{ env.BRANCH_NAME }} | |
commit_message: '${{ env.PREPARATION_COMMIT }}' | |
tagging_message: '${{ github.ref_name }}' | |
push_options: '${{ github.ref_name }}' | |
build: | |
name: Build and verify package | |
needs: [check-preparation] | |
if: ${{ needs.check-preparation.outputs.prepared == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: hynek/build-and-inspect-python-package@v2 | |
with: | |
upload-name-suffix: "-release" | |
release: | |
name: Create GitHub release | |
needs: [build] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: softprops/action-gh-release@v2 | |
with: | |
body: | | |
Revised release notes are available in the [documentation](https://${{ github.event.repository.name }}.readthedocs.io/en/latest/release-notes.html). | |
append_body: true | |
generate_release_notes: true | |
publish: | |
name: Publish to PyPI | |
needs: [build] | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/project/${{ github.event.repository.name }} | |
permissions: | |
id-token: write | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: Packages-release | |
path: dist | |
- uses: pypa/gh-action-pypi-publish@release/v1 |