Skip to content

Commit

Permalink
Add automated release workflow (#350)
Browse files Browse the repository at this point in the history
* move version into package

* add automated release workflow

* bump version to 0.19.5
  • Loading branch information
AlecRosenbaum authored Jun 25, 2024
1 parent f8f0e84 commit ede958a
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 1 deletion.
83 changes: 83 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Release To PyPI

on:
workflow_dispatch:
inputs:
requested_release_tag:
description: 'The tag to use for this release (e.g., `v2.3.0`)'
required: true

jobs:
build_and_upload:
runs-on: 'ubuntu-20.04'
environment: production
permissions:
# id-token for the trusted publisher setup
id-token: write
# for tagging the commit
contents: write
steps:
- uses: actions/checkout@v2

- uses: actions/setup-python@v2
name: Install Python
with:
python-version: 3.8

- run: |
pip install packaging
- name: Normalize the release version
run: |
echo "release_version=`echo '${{ github.event.inputs.requested_release_tag }}' | sed 's/^v//'`" >> $GITHUB_ENV
- name: Normalize the release tag
run: |
echo "release_tag=v${release_version}" >> $GITHUB_ENV
- name: Get the VERSION from setup.py
run: |
echo "package_version=`grep -Po '__version__ = "\K[^"]*' tasktiger/__init__.py`" >> $GITHUB_ENV
- name: Get the latest version from PyPI
run: |
curl https://pypi.org/pypi/tasktiger/json | python -c 'import json, sys; contents=sys.stdin.read(); parsed = json.loads(contents); print("pypi_version=" + parsed["info"]["version"])' >> $GITHUB_ENV
- name: Log all the things
run: |
echo 'Requested release tag `${{ github.event.inputs.requested_release_tag }}`'
echo 'Release version `${{ env.release_version }}`'
echo 'Release tag `${{ env.release_tag }}`'
echo 'version in package `${{ env.package_version }}`'
echo 'Version in PyPI `${{ env.pypi_version }}`'
- name: Verify that the version string we produced looks like a version string
run: |
echo "${{ env.release_version }}" | sed '/^[0-9]\+\.[0-9]\+\.[0-9]\+$/!{q1}'
- name: Verify that the version tag we produced looks like a version tag
run: |
echo "${{ env.release_tag }}" | sed '/^v[0-9]\+\.[0-9]\+\.[0-9]\+$/!{q1}'
- name: Verify that the release version matches the VERSION in the package source
run: |
[[ ${{ env.release_version }} == ${{ env.package_version }} ]]
- name: Verify that the `release_version` is larger/newer than the existing release in PyPI
run: |
python -c 'import sys; from packaging import version; code = 0 if version.parse("${{ env.package_version }}") > version.parse("${{ env.pypi_version }}") else 1; sys.exit(code)'
- name: Verify that the `release_version` is present in the CHANGELOG
run: |
grep ${{ env.release_version }} CHANGELOG.md
- name: Serialize normalized release values as outputs
run: |
echo "release_version=$release_version"
echo "release_tag=$release_tag"
echo "release_version=$release_version" >> $GITHUB_OUTPUT
echo "release_tag=$release_tag" >> $GITHUB_OUTPUT
- name: Tag commit
uses: actions/[email protected]
with:
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/${{ env.release_tag }}',
sha: context.sha
})
- name: Build Source Distribution
run: |
python setup.py sdist
- name: Upload to PyPI
uses: closeio/gh-action-pypi-publish@ec4db0b4ddc65acdf4bff5fa45ac92d78b56bdf0 # v1.9
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## Version 0.19.5

* First version using the automated-release process

## Version 0.19.4

* Log task processing in sync executor ([347](https://github.com/closeio/tasktiger/pull/347))
Expand Down
8 changes: 7 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import re

from setuptools import setup

VERSION_FILE = "tasktiger/__init__.py"
with open(VERSION_FILE, encoding="utf8") as fd:
version = re.search(r'__version__ = ([\'"])(.*?)\1', fd.read()).group(2)

with open("README.rst", encoding="utf-8") as file:
long_description = file.read()

Expand All @@ -9,7 +15,7 @@

setup(
name="tasktiger",
version="0.19.4",
version=version,
url="http://github.com/closeio/tasktiger",
license="MIT",
description="Python task queue",
Expand Down
1 change: 1 addition & 0 deletions tasktiger/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from .tasktiger import TaskTiger, run_worker
from .worker import Worker

__version__ = "0.19.5"
__all__ = [
"TaskTiger",
"Worker",
Expand Down

0 comments on commit ede958a

Please sign in to comment.