ci: build: split publishing and building into separate jobs (#9970)

https://github.com/pypa/gh-action-pypi-publish suggests separating building from publishing
for security reasons.
This commit is contained in:
skshetry
2023-09-23 18:05:03 +05:45
committed by GitHub
parent 1fa9f1f6ea
commit 6502234022
+58 -15
View File
@@ -1,20 +1,22 @@
name: Build package name: Build and upload package
on: on:
push: push:
branches: branches:
- main - main
release: release:
types: [released, prereleased] types:
- published
workflow_dispatch: workflow_dispatch:
env:
FORCE_COLOR: 1
permissions: permissions:
contents: read contents: read
jobs: jobs:
pip: build:
permissions: name: Build & Verify package
contents: read
id-token: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -26,24 +28,65 @@ jobs:
python-version: 3.8 python-version: 3.8
- run: python -m pip install --upgrade pip setuptools_scm build twine - run: python -m pip install --upgrade pip setuptools_scm build twine
- name: Force version for Test PyPI upload - name: Force version for Test PyPI upload
if: ${{ !startsWith(github.ref, 'refs/tags') }} if: ${{ !startsWith(github.ref, 'refs/tags') }}
run: echo version=$(python -m setuptools_scm | awk -F+ '{print $1}' | tail -1) >> $GITHUB_ENV run: echo version=$(python -m setuptools_scm | awk -F+ '{print $1}' | tail -1) >> $GITHUB_ENV
- run: | - run: echo 'PKG = "pip"'>dvc/_build.py
echo 'PKG = "pip"'>dvc/_build.py - run: python -m build
python -m build
env: env:
SETUPTOOLS_SCM_PRETEND_VERSION: ${{ env.version }} SETUPTOOLS_SCM_PRETEND_VERSION_FOR_DVC: ${{ env.version }}
- run: twine check --strict dist/* - run: twine check --strict dist/*
- name: Publish to PyPI - uses: actions/upload-artifact@v3
if: github.event_name == 'release' with:
uses: pypa/gh-action-pypi-publish@release/v1 name: Packages
path: dist/
- name: Publish to Test PyPI test-pypi-publish:
if: ${{ github.event_name == 'release' || (github.event_name == 'push' && github.ref == 'refs/heads/main') }} name: Publish dev package to test.pypi.org
runs-on: ubuntu-latest
needs: build
if: ${{ github.event.action == 'published' || (github.repository == 'iterative/dvc' && github.event_name == 'push' && github.ref == 'refs/heads/main') }}
environment:
name: test-pypi
url: https://test.pypi.org/p/dvc
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v3
with:
name: Packages
path: dist
- name: Upload package to Test PyPI
uses: pypa/gh-action-pypi-publish@release/v1 uses: pypa/gh-action-pypi-publish@release/v1
with: with:
repository-url: https://test.pypi.org/legacy/ repository-url: https://test.pypi.org/legacy/
skip-existing: true skip-existing: true
pypi-publish:
name: Publish released package to pypi.org
runs-on: ubuntu-latest
needs: build
if: github.event.action == 'published'
environment:
name: pypi
url: https://pypi.org/p/dvc
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v3
with:
name: Packages
path: dist
- name: Upload package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1