From 25e06f26c0e6889aa04515619d7493493677f605 Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Tue, 14 Feb 2023 19:47:42 -0600 Subject: [PATCH] Improve workflow to publish khoj to pypi - Use emoji's to improve visual indicator of action step - Rename to pypi instead of the more ambiguous publish name Publish could mean publish docker image, publish to pypi, MELPA or Obsidian plugin - Update workflow badge, link pypi badge to khoj pypi package page - Use pypa official github action to upload package to (test) pypi instead of doing it manually using twine - Upload python package artifact for easier access for testing. As uploading to testpypi doesn't work for PRs by others from forked repos --- .github/workflows/{publish.yml => pypi.yml} | 80 ++++++++------------- README.md | 2 +- 2 files changed, 31 insertions(+), 51 deletions(-) rename .github/workflows/{publish.yml => pypi.yml} (50%) diff --git a/.github/workflows/publish.yml b/.github/workflows/pypi.yml similarity index 50% rename from .github/workflows/publish.yml rename to .github/workflows/pypi.yml index c797b7bc..27bfc3ed 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/pypi.yml @@ -1,4 +1,4 @@ -name: publish +name: pypi on: push: @@ -9,21 +9,23 @@ on: paths: - src/khoj/** - setup.py - - .github/workflows/publish.yml + - .github/workflows/pypi.yml pull_request: branches: - 'master' paths: - src/khoj/** - setup.py - - .github/workflows/publish.yml + - .github/workflows/pypi.yml jobs: publish: - name: Publish App to PyPI + name: Publish Python Package to PyPI runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Set up Python 3.10 uses: actions/setup-python@v4 @@ -39,61 +41,22 @@ jobs: run: | pip install --upgrade . - - name: Publish Release to PyPI - if: startsWith(github.ref, 'refs/tags') - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_KEY }} - run: | - # Setup Environment for Reproducible Builds - export PYTHONHASHSEED=42 - export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) - - # Build PyPi Package - rm -rf dist - python -m build - - # Validate PyPi Package - check-wheel-contents dist/*.whl - twine check dist/* - - # Upload PyPi Package - twine upload --verbose dist/* - - - name: Publish Master to PyPI + - name: 📝 Set Pre-Release Version for Master if: github.ref == 'refs/heads/master' - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_KEY }} run: | # Set Pre-Release Version sed -E -i "s/version=(.*)',/version=\1a$(date +%s)',/g" setup.py - # Setup Environment for Reproducible Builds - export PYTHONHASHSEED=42 - export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) - - # Build PyPi Package - rm -rf dist - python -m build - - # Validate PyPi Package - check-wheel-contents dist/*.whl - twine check dist/* - - # Upload PyPi Package - twine upload --verbose dist/* - - - name: Publish Repo PR to Test PyPI - if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} + - name: 📝 Set Development Version for PR + if: github.event_name == 'pull_request' env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_KEY }} PULL_REQUEST_NUMBER: ${{ github.event.number }} run: | # Set Development Release Version sed -E -i "s/version=(.*)',/version=\1.dev$PULL_REQUEST_NUMBER$(date +%s)',/g" setup.py + - name: ⚙️ Build Python Package + run: | # Setup Environment for Reproducible Builds export PYTHONHASHSEED=42 export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) @@ -102,9 +65,26 @@ jobs: rm -rf dist python -m build + - name: 👀 Validate Python Package + run: | # Validate PyPi Package check-wheel-contents dist/*.whl twine check dist/* - # Upload PyPi Package - twine upload -r testpypi --verbose dist/* \ No newline at end of file + - name: ⏫ Upload Python Package Artifacts + - uses: actions/upload-artifact@v3 + with: + path: dist/* + + - name: 📦 Publish Python Package from Master or Release to PyPI + if: startsWith(github.ref, 'refs/tags') || github.ref == 'refs/heads/master' + uses: pypa/gh-action-pypi-publish@release/v1.6.4 + with: + password: ${{ secrets.PYPI_API_KEY }} + + - name: 📦 Publish Python Package from Repo PR to Test PyPI + if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} + uses: pypa/gh-action-pypi-publish@release/v1.6.4 + with: + password: ${{ secrets.PYPI_API_KEY }} + repository_url: https://test.pypi.org/legacy/ \ No newline at end of file diff --git a/README.md b/README.md index 55c269fc..0cea42b5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Khoj 🦅 [![build](https://github.com/debanjum/khoj/actions/workflows/build.yml/badge.svg)](https://github.com/debanjum/khoj/actions/workflows/build.yml) [![test](https://github.com/debanjum/khoj/actions/workflows/test.yml/badge.svg)](https://github.com/debanjum/khoj/actions/workflows/test.yml) -[![publish](https://github.com/debanjum/khoj/actions/workflows/publish.yml/badge.svg)](https://github.com/debanjum/khoj/actions/workflows/publish.yml) +[![pypi](https://github.com/debanjum/khoj/actions/workflows/pypi.yml/badge.svg)](https://pypi.org/project/khoj-assistant/) *A natural language search engine for your personal notes, transactions and images*