Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 22 additions & 63 deletions .github/workflows/pypi-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@ name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI
# Ref: https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/

on:
workflow_dispatch:
push:
branches: ["**"]
tags-ignore: ["**"]
pull_request:
release:
types:
- published
types: [published]
pull_request:
workflow_dispatch:

jobs:
build:
name: Build distribution 📦
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.8"
python-version: "3.x"
- name: Install pypa/build
run: >-
python3 -m
Expand All @@ -33,79 +33,36 @@ jobs:
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/
name: dist
path: dist

publish-to-pypi:
name: >-
Publish Python 🐍 distribution 📦 to PyPI
name: Publish Python 🐍 distribution 📦 to PyPI
needs: build
if: github.event_name == 'release' || startsWith(github.ref, 'refs/tags/')
Copy link

Copilot AI Sep 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The condition startsWith(github.ref, 'refs/tags/') will never be true since the workflow no longer triggers on tag pushes. The workflow only triggers on release events, pull requests, and workflow dispatch. Consider removing this redundant condition.

Copilot uses AI. Check for mistakes.
needs:
- build
runs-on: ubuntu-latest

environment:
name: pypi
url: https://pypi.org/p/adam-robotics

permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
name: dist
path: dist
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

github-release:
name: >-
Sign the Python 🐍 distribution 📦 with Sigstore
and upload them to GitHub Release
needs:
- publish-to-pypi
runs-on: ubuntu-latest

permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: >-
gh release create
'${{ github.ref_name }}'
--repo '${{ github.repository }}'
--notes ""
- name: Upload artifact signatures to GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
# Upload to GitHub Release using the `gh` CLI.
# `dist/` contains the built packages, and the
# sigstore-produced signatures and certificates.
run: >-
gh release upload
'${{ github.ref_name }}' dist/**
--repo '${{ github.repository }}'


publish-to-testpypi:
name: Publish Python 🐍 distribution 📦 to TestPyPI
needs: build
if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/')
needs:
- build
runs-on: ubuntu-latest

environment:
Expand All @@ -119,9 +76,11 @@ jobs:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
name: dist
path: dist
- name: Publish distribution 📦 to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
verbose: true
skip-existing: true
5 changes: 4 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[build-system]
requires = ["setuptools>=64", "setuptools_scm>=8", "wheel"]
build-backend = "setuptools.build_meta"
requires = ["wheel", "setuptools>=45", "setuptools_scm[toml]>=6.0"]

[project]
name = "adam-robotics"
Expand Down Expand Up @@ -57,6 +57,9 @@ all = ["jax", "jaxlib", "casadi>=3.6", "torch", "jax2torch"]
"Documentation" = "https://adam-robotics.readthedocs.io/en/latest/"
"Source" = "https://github.com/ami-iit/adam"

[tool.setuptools_scm]
local_scheme = "dirty-tag"

[tool.setuptools]
package-dir = { "" = "src" } # keeps the src/ layout

Expand Down
Loading