Skip to content

Commit

Permalink
ci(publish): add publish.yml ci for publishing to pypi
Browse files Browse the repository at this point in the history
  • Loading branch information
WSH032 committed Nov 26, 2023
1 parent de61841 commit 7343653
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 7 deletions.
12 changes: 8 additions & 4 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
# copy from: https://github.com/frankie567/httpx-ws/blob/main/.github/workflows/docs.yml

name: Build documentation
name: Deploy documentation


# Since document updates may be frequent,
# we do not run tests when deploying documents,
# instead test during the PR stage.
on:
push:
branches:
Expand All @@ -19,7 +23,7 @@ defaults:
shell: bash

jobs:
build:
build-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -41,8 +45,8 @@ jobs:
with:
path: ./site

deploy:
needs: build
deploy-docs:
needs: build-docs
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/lint-test.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
# WARNING: Do not change the name of this file, keep `lint-test.yml`.

name: Lint check and test


# We only automatically run checks for PRs.
# It is best to avoid direct commits to the main branch, instead make a PR for checks.
# For the pushes to the main branch, the checks is done by `publish.yml` when publish.
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
workflow_dispatch:
# NOTE: set `secrets: inherit` when call this workflow from other workflow.
workflow_call:


jobs:
lint-check:
Expand Down
80 changes: 80 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# refer to: https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/

name: Publish Python 🐍 distribution πŸ“¦ to PyPI and TestPyPI

# NOTE: We do not restrict branches here,
# instead restrict branches in the `environment` - `pypi`.
on:
push:
tags:
- v*

jobs:
lint-test:
name: Lint check and test πŸ§ͺ
uses: ./.github/workflows/lint-test.yml
secrets: inherit # IMPORTANT: sub-workflow needs secrets for uploading codecov

build-dist:
needs:
- lint-test
name: Build distribution πŸ“¦
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install hatch
- name: Build a binary wheel and a source tarball
run: |
hatch build
- name: Store the distribution packages
uses: actions/upload-artifact@v3
with:
name: python-package-distributions
path: dist/
if-no-files-found: error

publish-to-pypi:
needs:
- build-dist
name: Publish Python 🐍 distribution πŸ“¦ to PyPI
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/fastapi-proxy-lib
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Publish distribution πŸ“¦ to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

github-release:
needs:
- publish-to-pypi
name: Create GitHub release 🏷️
runs-on: ubuntu-latest
permissions:
contents: write # IMPORTANT: mandatory for creating release
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Create release
uses: ncipollo/release-action@v1
with:
draft: true
body: ${{ github.event.head_commit.message }}
artifacts: dist/*.whl,dist/*.tar.gz

0 comments on commit 7343653

Please sign in to comment.