Skip to content

ci: get all history for a change log generator #75

ci: get all history for a change log generator

ci: get all history for a change log generator #75

Workflow file for this run

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Tests
on:
push:
tags: '*'
branches: [ master, main ]
pull_request:
branches: [ master, main ]
jobs:
verify_style:
runs-on: 'ubuntu-latest'
steps:
-
uses: actions/checkout@v4
-
name: Set up Python 3
uses: actions/setup-python@v4
with:
python-version: '3.x'
architecture: 'x64'
-
name: Install dependencies
run: |
python -m pip install --upgrade pip invoke
invoke setup --devel --tests
-
name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
python/bin/python -m flake8 instruct/ --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
python/bin/python -m flake8 instruct/ --ignore=E203,W503 --count --exit-zero --max-complexity=103 --max-line-length=127 --statistics
-
name: Check style with black
run: |
cat instruct/about.py
python/bin/python -m black --version
python/bin/python -m black --check instruct
verify_types:
runs-on: 'ubuntu-latest'
steps:
-
uses: actions/checkout@v4
-
name: Set up Python 3
uses: actions/setup-python@v4
with:
python-version: '3.11'
architecture: 'x64'
-
name: Install dependencies
run: |
python -m pip install --upgrade pip invoke
invoke setup --devel --tests
-
name: validate types
run: |
python/bin/python -m mypy instruct
update-changelog:
needs: [verify_style, verify_types]
runs-on: 'ubuntu-latest'
permissions:
contents: write
steps:
-
uses: actions/checkout@v4
fetch-depth: 0

Check failure on line 74 in .github/workflows/build.yml

View workflow run for this annotation

GitHub Actions / Tests

Invalid workflow file

The workflow is not valid. .github/workflows/build.yml (Line: 74, Col: 9): Unexpected value 'fetch-depth'
-
name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: '3.11'
architecture: 'x64'
-
name: Setup
run: |
python -m pip install --upgrade pip invoke typing-extensions
invoke setup --devel --no-project
-
name: Update changelog
run: |
invoke update-changes
if ! git diff-index --quiet HEAD --
then
git config user.name "$(git log -n 1 --pretty=format:%an)"
git config user.email "$(git log -n 1 --pretty=format:%ae)"
git add CHANGES.rst
git commit -m "docs: update CHANGES.rst"
invoke update-changes
git add CHANGES.rst
git commit --amend
git push
exit 253
fi
test_matrix:
needs: [verify_style, verify_types, update-changelog]
strategy:
fail-fast: false
matrix:
experimental: [false]
arch:
- 'x64'
python_version:
- '3.7'
- '3.8'
- '3.9'
- '3.10'
- '3.11'
- '3.12'
- 'pypy3.7'
- 'pypy3.8'
- 'pypy3.9'
os:
- 'ubuntu-latest'
include:
-
python_version: 'pypy3.10'
experimental: true
arch: 'x64'
os: ubuntu-latest
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
steps:
-
uses: actions/checkout@v4
-
name: Set up Python ${{ matrix.python_version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python_version }}
architecture: ${{ matrix.arch }}
-
name: Install dependencies
run: |
python -m pip install --upgrade pip invoke typing-extensions
invoke setup --tests
-
name: Test with pytest
run: |
python/bin/python -m pytest
pypi-publish:
needs: [test_matrix, verify_style, update-changelog]
runs-on: 'ubuntu-latest'
environment:
name: pypi
url: https://pypi.org/p/instruct
permissions:
id-token: write
contents: write
steps:
-
uses: actions/checkout@v4
-
name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: '3.11'
architecture: 'x64'
-
name: Set some variables...
id: version
run: |
echo "CURRENT_VERSION=$(grep -vE '^#' CURRENT_VERSION.txt | head -1)" >> "$GITHUB_OUTPUT"
if [ "x${{ github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/v') }}" = 'xtrue' ]; then
echo "GIT_VERSION=$(echo '${{ github.ref_name }}' | sed 's/^.//')" >> "$GITHUB_OUTPUT"
fi
-
name: Warn tag version matches the source version
if: ${{ github.ref_type != 'tag' }}
run: |
if [ 'x${{ steps.version.outputs.GIT_VERSION }}' != 'x${{ steps.version.outputs.CURRENT_VERSION }}' ]; then
echo '::warn file=CURRENT_VERSION.txt,line=2,title=Version mismatch::Expected ${{ steps.version.outputs.GIT_VERSION }} but got ${{ steps.version.outputs.CURRENT_VERSION }} instead.
If you make a tag from this, it *will* error out.'
fi
-
name: Assert tag version matches the source version
if: ${{ github.ref_type == 'tag' }}
run: |
if [ 'x${{ steps.version.outputs.GIT_VERSION }}' != 'x${{ steps.version.outputs.CURRENT_VERSION }}' ]; then
echo '::error file=CURRENT_VERSION.txt,line=2,title=Version mismatch::Expected ${{ steps.version.outputs.GIT_VERSION }} but got ${{ steps.version.outputs.CURRENT_VERSION }} instead.
Suggest you fix that and delete the tag.'
exit 254
fi
-
name: Setup
run: |
python -m pip install --upgrade pip invoke typing-extensions
invoke setup --devel --no-project
-
name: Create artifacts
id: artifacts
run: |
python/bin/python -m build
-
name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: ${{ github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/v') }}
with:
skip-existing: false
-
name: Create Release
if: ${{ github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/v') }}
id: upload-release-asset
uses: softprops/action-gh-release@v1
with:
body_path: CHANGES.rst
name: Release ${{ steps.version.outputs.CURRENT_VERSION }}
files:
dist/instruct*