2019-08-21 04:48:52 +08:00
|
|
|
---
|
|
|
|
name: pypi-publish
|
|
|
|
description: Upload Python distribution packages to PyPI
|
|
|
|
inputs:
|
|
|
|
user:
|
|
|
|
description: PyPI user
|
|
|
|
required: false
|
|
|
|
default: __token__
|
|
|
|
password:
|
|
|
|
description: Password for your PyPI user or an access token
|
2023-04-27 23:30:43 +08:00
|
|
|
required: false
|
2023-03-11 08:18:41 +08:00
|
|
|
repository-url: # Canonical alias for `repository_url`
|
2019-08-21 04:48:52 +08:00
|
|
|
description: The repository URL to use
|
|
|
|
required: false
|
2023-03-11 08:18:41 +08:00
|
|
|
repository_url: # DEPRECATED ALIAS; TODO: Remove in v3+
|
|
|
|
description: >-
|
|
|
|
[DEPRECATED]
|
|
|
|
The repository URL to use
|
|
|
|
deprecationMessage: >-
|
|
|
|
The inputs have been normalized to use kebab-case.
|
|
|
|
Use `repository-url` instead.
|
|
|
|
required: false
|
2023-03-16 16:39:57 +08:00
|
|
|
default: https://upload.pypi.org/legacy/
|
2023-03-11 08:18:41 +08:00
|
|
|
packages-dir: # Canonical alias for `packages_dir`
|
2019-12-06 07:25:02 +08:00
|
|
|
description: The target directory for distribution
|
|
|
|
required: false
|
2023-03-11 10:06:39 +08:00
|
|
|
# default: dist # TODO: uncomment once alias removed
|
2023-03-11 08:18:41 +08:00
|
|
|
packages_dir: # DEPRECATED ALIAS; TODO: Remove in v3+
|
|
|
|
description: >-
|
|
|
|
[DEPRECATED]
|
|
|
|
The target directory for distribution
|
|
|
|
deprecationMessage: >-
|
|
|
|
The inputs have been normalized to use kebab-case.
|
|
|
|
Use `packages-dir` instead.
|
|
|
|
required: false
|
|
|
|
default: dist
|
|
|
|
verify-metadata: # Canonical alias for `verify_metadata`
|
2020-06-03 23:04:52 +08:00
|
|
|
description: Check metadata before uploading
|
2020-06-02 23:08:43 +08:00
|
|
|
required: false
|
2023-03-11 10:06:39 +08:00
|
|
|
# default: 'true' # TODO: uncomment once alias removed
|
2023-03-11 08:18:41 +08:00
|
|
|
verify_metadata: # DEPRECATED ALIAS; TODO: Remove in v3+
|
|
|
|
description: >-
|
|
|
|
[DEPRECATED]
|
|
|
|
Check metadata before uploading
|
|
|
|
deprecationMessage: >-
|
|
|
|
The inputs have been normalized to use kebab-case.
|
|
|
|
Use `verify-metadata` instead.
|
|
|
|
required: false
|
|
|
|
default: 'true'
|
|
|
|
skip-existing: # Canonical alias for `skip_existing`
|
2020-06-20 03:30:53 +08:00
|
|
|
description: >-
|
|
|
|
Do not fail if a Python package distribution
|
|
|
|
exists in the target package index
|
|
|
|
required: false
|
2023-03-11 10:06:39 +08:00
|
|
|
# default: 'false' # TODO: uncomment once alias removed
|
2023-03-11 08:18:41 +08:00
|
|
|
skip_existing: # DEPRECATED ALIAS; TODO: Remove in v3+
|
|
|
|
description: >-
|
|
|
|
[DEPRECATED]
|
|
|
|
Do not fail if a Python package distribution
|
|
|
|
exists in the target package index
|
|
|
|
deprecationMessage: >-
|
|
|
|
The inputs have been normalized to use kebab-case.
|
|
|
|
Use `skip-existing` instead.
|
|
|
|
required: false
|
|
|
|
default: 'false'
|
2020-09-15 12:31:21 +08:00
|
|
|
verbose:
|
|
|
|
description: Show verbose output.
|
|
|
|
required: false
|
2022-12-07 04:44:04 +08:00
|
|
|
default: 'false'
|
2023-03-11 08:18:41 +08:00
|
|
|
print-hash: # Canonical alias for `print_hash`
|
2022-01-08 12:12:15 +08:00
|
|
|
description: Show hash values of files to be uploaded
|
2022-01-08 00:24:27 +08:00
|
|
|
required: false
|
2023-03-11 10:06:39 +08:00
|
|
|
# default: 'false' # TODO: uncomment once alias removed
|
2023-03-11 08:18:41 +08:00
|
|
|
print_hash: # DEPRECATED ALIAS; TODO: Remove in v3+
|
|
|
|
description: >-
|
|
|
|
[DEPRECATED]
|
|
|
|
Show hash values of files to be uploaded
|
|
|
|
deprecationMessage: >-
|
|
|
|
The inputs have been normalized to use kebab-case.
|
|
|
|
Use `print-hash` instead.
|
|
|
|
required: false
|
|
|
|
default: 'false'
|
2024-09-01 08:50:29 +08:00
|
|
|
attestations:
|
|
|
|
description: >-
|
|
|
|
[EXPERIMENTAL]
|
|
|
|
Enable experimental support for PEP 740 attestations.
|
|
|
|
Only works with PyPI and TestPyPI via Trusted Publishing.
|
|
|
|
required: false
|
2024-10-29 02:31:58 +08:00
|
|
|
default: 'true'
|
2019-08-21 04:48:52 +08:00
|
|
|
branding:
|
|
|
|
color: yellow
|
|
|
|
icon: upload-cloud
|
|
|
|
runs:
|
2024-04-16 15:02:03 +08:00
|
|
|
using: composite
|
|
|
|
steps:
|
2024-06-12 00:53:35 +08:00
|
|
|
- name: Fail-fast in unsupported environments
|
|
|
|
if: runner.os != 'Linux'
|
|
|
|
run: |
|
|
|
|
>&2 echo This action is only able to run under GNU/Linux environments
|
|
|
|
exit 1
|
|
|
|
shell: bash -eEuo pipefail {0}
|
2024-04-16 15:02:03 +08:00
|
|
|
- name: Reset path if needed
|
|
|
|
run: |
|
|
|
|
# Reset path if needed
|
|
|
|
# https://github.com/pypa/gh-action-pypi-publish/issues/112
|
|
|
|
if [[ $PATH != *"/usr/bin"* ]]; then
|
|
|
|
echo "\$PATH=$PATH. Resetting \$PATH for GitHub Actions."
|
|
|
|
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
|
|
echo "PATH=$PATH" >>"$GITHUB_ENV"
|
|
|
|
echo "$PATH" >>"$GITHUB_PATH"
|
|
|
|
echo "\$PATH reset. \$PATH=$PATH"
|
|
|
|
fi
|
|
|
|
shell: bash
|
|
|
|
- name: Set repo and ref from which to run Docker container action
|
|
|
|
id: set-repo-and-ref
|
|
|
|
run: |
|
|
|
|
# Set repo and ref from which to run Docker container action
|
|
|
|
# to handle cases in which `github.action_` context is not set
|
|
|
|
# https://github.com/actions/runner/issues/2473
|
2024-05-31 09:34:34 +08:00
|
|
|
REF=${{ env.ACTION_REF || env.PR_REF || github.ref_name }}
|
|
|
|
REPO=${{ env.ACTION_REPO || env.PR_REPO || github.repository }}
|
2024-06-10 08:08:19 +08:00
|
|
|
REPO_ID=${{ env.PR_REPO_ID || github.repository_id }}
|
2024-04-16 15:02:03 +08:00
|
|
|
echo "ref=$REF" >>"$GITHUB_OUTPUT"
|
|
|
|
echo "repo=$REPO" >>"$GITHUB_OUTPUT"
|
2024-06-10 08:08:19 +08:00
|
|
|
echo "repo-id=$REPO_ID" >>"$GITHUB_OUTPUT"
|
2024-04-16 15:02:03 +08:00
|
|
|
shell: bash
|
|
|
|
env:
|
|
|
|
ACTION_REF: ${{ github.action_ref }}
|
|
|
|
ACTION_REPO: ${{ github.action_repository }}
|
2024-05-31 09:34:34 +08:00
|
|
|
PR_REF: ${{ github.event.pull_request.head.ref }}
|
|
|
|
PR_REPO: ${{ github.event.pull_request.head.repo.full_name }}
|
2024-06-10 08:08:19 +08:00
|
|
|
PR_REPO_ID: ${{ github.event.pull_request.base.repo.id }}
|
2024-11-06 23:13:48 +08:00
|
|
|
- name: Discover pre-installed Python
|
|
|
|
id: pre-installed-python
|
|
|
|
run: |
|
|
|
|
# 🔎 Discover pre-installed Python
|
|
|
|
echo "python-path=$(command -v python3 || :)" | tee -a "${GITHUB_OUTPUT}"
|
|
|
|
shell: bash
|
|
|
|
- name: Install Python 3
|
|
|
|
if: steps.pre-installed-python.outputs.python-path == ''
|
|
|
|
id: new-python
|
|
|
|
uses: actions/setup-python@v5
|
|
|
|
with:
|
|
|
|
python-version: 3.x
|
2024-05-28 01:45:20 +08:00
|
|
|
- name: Create Docker container action
|
2024-04-16 15:02:03 +08:00
|
|
|
run: |
|
2024-05-28 01:45:20 +08:00
|
|
|
# Create Docker container action
|
2024-11-06 23:13:48 +08:00
|
|
|
${{
|
|
|
|
steps.pre-installed-python.outputs.python-path == ''
|
|
|
|
&& steps.new-python.outputs.python-path
|
|
|
|
|| steps.pre-installed-python.outputs.python-path
|
2024-11-19 18:46:32 +08:00
|
|
|
}} '$GITHUB_ACTION_PATH/create-docker-action.py'
|
2024-11-19 18:49:52 +08:00
|
|
|
# Use proposed workaround for ${{ github.action_path }} not working
|
|
|
|
# inside containers
|
2024-11-19 18:46:32 +08:00
|
|
|
# https://github.com/actions/runner/issues/2185#issuecomment-1683545859
|
2024-05-28 01:45:20 +08:00
|
|
|
env:
|
|
|
|
REF: ${{ steps.set-repo-and-ref.outputs.ref }}
|
|
|
|
REPO: ${{ steps.set-repo-and-ref.outputs.repo }}
|
2024-06-10 08:08:19 +08:00
|
|
|
REPO_ID: ${{ steps.set-repo-and-ref.outputs.repo-id }}
|
2024-04-16 15:02:03 +08:00
|
|
|
shell: bash
|
|
|
|
- name: Run Docker container
|
2024-11-06 21:00:51 +08:00
|
|
|
# The generated trampoline action must exist in the allowlisted
|
|
|
|
# runner-defined working directory so it can be referenced by the
|
|
|
|
# relative path starting with `./`.
|
|
|
|
#
|
|
|
|
# This mutates the end-user's workspace slightly but uses a path
|
|
|
|
# that is unlikely to clash with somebody else's use.
|
|
|
|
#
|
|
|
|
# We cannot use randomized paths because the composite action
|
|
|
|
# syntax does not allow accessing variables in `uses:`. This
|
|
|
|
# means that we end up having to hardcode this path both here and
|
|
|
|
# in `create-docker-action.py`.
|
|
|
|
uses: ./.github/.tmp/.generated-actions/run-pypi-publish-in-docker-container
|
2024-04-16 15:02:03 +08:00
|
|
|
with:
|
|
|
|
user: ${{ inputs.user }}
|
|
|
|
password: ${{ inputs.password }}
|
|
|
|
repository-url: ${{ inputs.repository-url || inputs.repository_url }}
|
|
|
|
packages-dir: ${{ inputs.packages-dir || inputs.packages_dir }}
|
|
|
|
verify-metadata: ${{ inputs.verify-metadata || inputs.verify_metadata }}
|
|
|
|
skip-existing: ${{ inputs.skip-existing || inputs.skip_existing }}
|
|
|
|
verbose: ${{ inputs.verbose }}
|
|
|
|
print-hash: ${{ inputs.print-hash || inputs.print_hash }}
|
|
|
|
attestations: ${{ inputs.attestations }}
|