Skip to content

Commit

Permalink
Experiment with hynek/build-and-inspect-python-package
Browse files Browse the repository at this point in the history
  • Loading branch information
rmartin16 committed May 26, 2024
1 parent a4b75f4 commit 0739c7b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 64 deletions.
33 changes: 16 additions & 17 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
- main

concurrency:
group: ${{ github.ref }}
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

defaults:
Expand Down Expand Up @@ -162,28 +162,27 @@ jobs:
uses: ./.github/workflows/python-package-create.yml
with:
repository: beeware/${{ matrix.repo }}
tox-source: ${{ matrix.tox-source }}
tox-factors: ${{ matrix.tox-factors }}
distribution-path: ${{ matrix.dist-path }}
build-subdirectory: ${{ matrix.build-subdir }}
runner-os: ${{ matrix.runner-os }}
strategy:
fail-fast: false
matrix:
repo: [ briefcase, gbulb, rubicon-objc, toga ]
name: [ briefcase, gbulb, rubicon-objc, toga, toga-android ]
include:
- tox-source: .[dev]
- dist-path: dist
- repo: briefcase
tox-source: .[dev]
tox-factors: -with-automation
dist-path: dist
- repo: gbulb
tox-source: tox
dist-path: dist
- repo: toga
tox-source: ./core[dev]
dist-path: "*/dist/*"
- runner-os: ubuntu-latest
- name: briefcase
repo: briefcase
- name: gbulb
repo: gbulb
- name: rubicon-objc
repo: rubicon-objc
runner-os: macos-14
- name: toga
repo: toga
build-subdir: core
- name: toga-android
repo: toga
build-subdir: android

test-verify-projects-briefcase:
name: Verify Project
Expand Down
60 changes: 13 additions & 47 deletions .github/workflows/python-package-create.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,14 @@ name: Create Python Package
on:
workflow_call:
inputs:
python-version:
description: "Python version to use; defaults to latest Python release."
default: "3.X"
type: string
repository:
description: "GitHub repository to checkout; defaults to repo running this workflow."
default: ${{ github.repository }}
type: string
tox-source:
description: "The arguments for `pip install` to install tox; use ./path/to/package[dev] for the repo's pinned version."
default: ".[dev]"
type: string
tox-factors:
description: "The tox factors to append to the package command."
default: ""
type: string
build-subdirectory:
description: "The subdirectory to build as a wheel."
default: ""
type: string
distribution-path:
description: "Relative filepath to distribution(s); e.g. */dist/*"
default: "dist"
type: string
runner-os:
description: "Runner OS to use to run tox; defaults to ubuntu-latest"
default: "ubuntu-latest"
Expand All @@ -53,46 +37,28 @@ jobs:
package:
name: Create Python Package
runs-on: ${{ inputs.runner-os }}
permissions:
id-token: write
contents: read
attestations: write
outputs:
artifact-name: packages-${{ steps.package.outputs.name }}
artifact-name: "Packages-${{ steps.package.outputs.name }}"
steps:

- name: Determine Package Name
id: package
run: echo "name=$(basename '${{ inputs.repository }}')" >> ${GITHUB_OUTPUT}
id: config
run: |
NAME=$(basename '${{ inputs.repository }}')${{ inputs.build-subdirectory && format('-{0}', inputs.build-subdirectory) || '' }}
echo "package-name=${NAME}" | tee -a ${GITHUB_OUTPUT}
- name: Checkout
uses: actions/[email protected]
with:
repository: ${{ inputs.repository }}
fetch-depth: 0 # Fetch all refs so setuptools_scm can generate the correct version number

- name: Setup Python
uses: actions/[email protected]
with:
python-version: ${{ inputs.python-version }}
cache: pip
cache-dependency-path: |
**/setup.cfg
**/pyproject.toml
- name: Update pip
run: python -m pip install -U pip

- name: Install tox
run: python -m pip install ${{ inputs.tox-source }}

- name: Build Wheels
if: inputs.build-subdirectory == ''
run: tox -e package${{ inputs.tox-factors }}

- name: Build Wheels from Subdirectory
if: inputs.build-subdirectory != ''
run: tox -e package${{ inputs.tox-factors }} -- ${{ inputs.build-subdirectory }}

- name: Upload Package
uses: actions/[email protected]
- name: Build & Upload Package
uses: hynek/[email protected]
with:
name: packages-${{ steps.package.outputs.name }}${{ inputs.build-subdirectory && format('-{0}', inputs.build-subdirectory) || '' }}
path: ${{ inputs.distribution-path }}
if-no-files-found: error
path: ${{ inputs.build-subdirectory || '.' }}
upload-name-suffix: ${{ format('-{0}', steps.config.outputs.package-name) }}

0 comments on commit 0739c7b

Please sign in to comment.