Skip to content

release

release #10

Workflow file for this run

name: release
on:
workflow_dispatch:
inputs:
version:
required: true
default: 'x.y.z'
permissions:
contents: write
pull-requests: write
jobs:
checks:
name: Version check
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
id: repo
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
- name: Set up Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: 3.14.0
- name: Get latest release from pip
id: latestreleased
run: |
PREVIOUS_VERSION=$(python -m pip index versions CodeEntropy | grep "CodeEntropy" | cut -d "(" -f2 | cut -d ")" -f1)
echo "pip_tag=$PREVIOUS_VERSION" >> "$GITHUB_OUTPUT"
echo $PREVIOUS_VERSION
- name: version comparison
id: compare
run: |
pip3 install semver
output=$(pysemver compare ${{ steps.latestreleased.outputs.pip_tag }} ${{ github.event.inputs.version }})
if [ $output -ge 0 ]; then exit 1; fi
version:
name: prepare ${{ github.event.inputs.version }}
needs: checks
runs-on: ubuntu-24.04
steps:
- name: checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
- name: Change version in repo and CITATION.cff
run: |
# Update Python package version
sed -i "s/__version__ =.*/__version__ = \"${{ github.event.inputs.version }}\"/g" CodeEntropy/__init__.py
# Update CITATION.cff version and date-released
if [ -f CITATION.cff ]; then
sed -i -E "s/^(version:\s*).*/\1${{ github.event.inputs.version }}/" CITATION.cff
sed -i -E "s/^(date-released:\s*).*/\1'$(date -u +%F)'/" CITATION.cff
fi
- name: send PR
id: pr_id
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
commit-message: Update version to ${{ github.event.inputs.version }}
branch: version-update
title: "Update to version ${{ github.event.inputs.version }}"
body: |
Update version
- Update the __init__.py with new release
- Update CITATION.cff version & date-released
- Auto-generated by [CI]
committer: version-updater <[email protected]>
author: version-updater <[email protected]>
base: main
signoff: false
draft: false
- name: auto approve review
uses: hmarr/auto-approve-action@f0939ea97e9205ef24d872e76833fa908a770363 # v4.0.0
with:
pull-request-number: ${{ steps.pr_id.outputs.pull-request-number }}
review-message: "Auto approved version bump PR"
github-token: ${{ secrets.AUTO_PR_MERGE }}
- name: merge PR
run: gh pr merge --merge --delete-branch --auto "${{ steps.pr_id.outputs.pull-request-number }}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag:
name: tag release
needs: version
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
with:
ref: main
- name: tag v${{ github.event.inputs.version }}
run: |
git config user.name github-actions
git config user.email [email protected]
git tag ${{ github.event.inputs.version }}
git push origin tag ${{ github.event.inputs.version }}
release:
name: make github release
needs: tag
runs-on: ubuntu-24.04
steps:
- name: create release
uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2.4.2
with:
name: v${{ github.event.inputs.version }}
generate_release_notes: true
tag_name: ${{ github.event.inputs.version }}
pypi:
name: make pypi release
needs: [tag, release]
runs-on: ubuntu-24.04
steps:
- name: checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
with:
ref: main
- name: Set up Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: 3.14.0
- name: Install flit
run: |
python -m pip install --upgrade pip
python -m pip install flit~=3.9
- name: Build and publish
run: |
flit publish
env:
FLIT_USERNAME: __token__
FLIT_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}