blob: 125b45ec99859206c52bb4e970a3564e855216aa [file] [log] [blame]
name: Release actions
on:
push:
tags:
- '*.*.*'
jobs:
build_docs:
name: "Build documentation tarball"
runs-on: ubuntu-18.04
steps:
- name: Checkout code
uses: actions/checkout@v2
# BuildStream requires tags to be able to find its version.
with:
fetch-depth: 0
- name: Give `testuser` ownership of the source directory
run: sudo chown -R 1000:1000 ${GITHUB_WORKSPACE}
- name: Build documentation using Docker Compose
run: |
docker-compose \
--env-file ${GITHUB_WORKSPACE}/.github/common.env \
--file ${GITHUB_WORKSPACE}/.github/compose/ci.docker-compose.yml \
run \
docs
# Restore permissions to the current user
sudo chown -R ${USER} ${GITHUB_WORKSPACE}
tar -C doc/build/html -zcf docs.tgz .
- uses: actions/upload-artifact@v3
with:
name: docs
path: docs.tgz
build_sdist:
name: "Build Python source distribution tarball"
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Build sdist
run: pipx run build --sdist
- uses: actions/upload-artifact@v3
with:
name: sdist
path: dist/*.tar.gz
build_wheels:
name: Build Python wheel packages on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Fetch latest BuildBox release
run: ${GITHUB_WORKSPACE}/.github/wheel-helpers/fetch-latest-buildbox-release.sh
- name: Build wheels
run: pipx run cibuildwheel==2.8.1
- uses: actions/upload-artifact@v3
with:
name: wheels
path: ./wheelhouse/*.whl
test_wheels:
name: "Test Python packages: ${{ matrix.test-name }}"
needs: [build_wheels]
runs-on: ubuntu-20.04
strategy:
matrix:
# The names here should map to a valid service defined in
# "../compose/ci.docker-compose.yml"
test-name:
- wheels-manylinux_2_28-cp37
- wheels-manylinux_2_28-cp38
- wheels-manylinux_2_28-cp39
- wheels-manylinux_2_28-cp310
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/download-artifact@v3
with:
name: wheels
path: ./wheelhouse
- name: Run tests with Docker Compose
run: |
${GITHUB_WORKSPACE}/.github/run-ci.sh ${{ matrix.test-name }}
upload_github_release:
name: Upload GitHub release assets
needs: [build_docs, build_sdist, build_wheels, test_wheels]
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/download-artifact@v3
with:
name: docs
- name: Upload release assets
run: |
tag_name="${GITHUB_REF##*/}"
hub release create -a "docs.tgz" -m "$tag_name" "$tag_name"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
upload_pypi_release:
name: Upload PyPI release assets
needs: [build_docs, build_sdist, build_wheels, test_wheels]
runs-on: ubuntu-20.04
steps:
- uses: actions/download-artifact@v3
with:
name: sdist
path: dist
- uses: actions/download-artifact@v3
with:
name: wheels
path: dist
- name: Upload to PyPI
run: |
pipx run twine upload --repository pypi --username __token__ --password "${{ secrets.PYPI_TOKEN }}" dist/*