151 lines
5.4 KiB
YAML
151 lines
5.4 KiB
YAML
---
|
|
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
|
|
required: false
|
|
repository-url: # Canonical alias for `repository_url`
|
|
description: The repository URL to use
|
|
required: false
|
|
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
|
|
default: https://upload.pypi.org/legacy/
|
|
packages-dir: # Canonical alias for `packages_dir`
|
|
description: The target directory for distribution
|
|
required: false
|
|
# default: dist # TODO: uncomment once alias removed
|
|
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`
|
|
description: Check metadata before uploading
|
|
required: false
|
|
# default: 'true' # TODO: uncomment once alias removed
|
|
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`
|
|
description: >-
|
|
Do not fail if a Python package distribution
|
|
exists in the target package index
|
|
required: false
|
|
# default: 'false' # TODO: uncomment once alias removed
|
|
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'
|
|
verbose:
|
|
description: Show verbose output.
|
|
required: false
|
|
default: 'false'
|
|
print-hash: # Canonical alias for `print_hash`
|
|
description: Show hash values of files to be uploaded
|
|
required: false
|
|
# default: 'false' # TODO: uncomment once alias removed
|
|
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'
|
|
attestations:
|
|
description: >-
|
|
[EXPERIMENTAL]
|
|
Enable experimental support for PEP 740 attestations.
|
|
Only works with PyPI and TestPyPI via Trusted Publishing.
|
|
required: false
|
|
default: 'true'
|
|
branding:
|
|
color: yellow
|
|
icon: upload-cloud
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- 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
|
|
REF=${{ env.ACTION_REF || github.ref_name }}
|
|
REPO=${{ env.ACTION_REPO || github.repository }}
|
|
echo "ref=$REF" >>"$GITHUB_OUTPUT"
|
|
echo "repo=$REPO" >>"$GITHUB_OUTPUT"
|
|
shell: bash
|
|
env:
|
|
ACTION_REF: ${{ github.action_ref }}
|
|
ACTION_REPO: ${{ github.action_repository }}
|
|
- name: Set Docker image name and tag
|
|
run: |
|
|
# Set Docker image name and tag
|
|
# if action run was triggered by a pull request to this repo,
|
|
# build image from Dockerfile because it has not been pushed to GHCR,
|
|
# else pull image from GHCR
|
|
if [[ $GITHUB_EVENT_NAME == "pull_request" ]] &&
|
|
[[ $GITHUB_REPOSITORY == "pypa/gh-action-pypi-publish" ]]; then
|
|
IMAGE="../../../Dockerfile"
|
|
else
|
|
REF=${{ steps.set-repo-and-ref.outputs.ref }}
|
|
REPO=${{ steps.set-repo-and-ref.outputs.repo }}
|
|
IMAGE="docker://ghcr.io/$REPO:${REF/'/'/'-'}"
|
|
fi
|
|
FILE=".github/actions/run-docker-container/action.yml"
|
|
sed -i -e "s|{{image}}|$IMAGE|g" "$FILE"
|
|
shell: bash
|
|
- name: Run Docker container
|
|
uses: ./.github/actions/run-docker-container
|
|
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 }}
|