From 520b1e2dde373209a67b9bda5ee065c8ea850954 Mon Sep 17 00:00:00 2001 From: Landung 'Don' Setiawan Date: Thu, 22 Aug 2024 16:02:08 -0700 Subject: [PATCH] ci: Add CD Github configuration --- .github/workflows/cd.yml | 90 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .github/workflows/cd.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..a32814b --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,90 @@ +name: CD + +on: + workflow_dispatch: + push: + branches: + - main + release: + types: + - published + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + FORCE_COLOR: 3 + +jobs: + dist: + name: Distribution build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: hynek/build-and-inspect-python-package@v2 + + test-built-dist: + needs: [dist] + name: Test built distribution + runs-on: ubuntu-latest + permissions: + id-token: write + steps: + - uses: actions/setup-python@v5.1.1 + name: Install Python + with: + python-version: "3.10" + - uses: actions/download-artifact@v4 + with: + name: Packages + path: dist + - name: List contents of built dist + run: | + ls -ltrh + ls -ltrh dist + - name: Publish to Test PyPI + uses: pypa/gh-action-pypi-publish@v1.9.0 + with: + repository-url: https://test.pypi.org/legacy/ + verbose: true + skip-existing: true + - name: Check pypi packages + run: | + sleep 3 + python -m pip install --upgrade pip + + echo "=== Testing wheel file ===" + # Install wheel to get dependencies and check import + python -m pip install --extra-index-url https://test.pypi.org/simple --upgrade --pre snowexsql + python -c "import snowexsql; print(snowexsql.__version__)" + echo "=== Done testing wheel file ===" + + echo "=== Testing source tar file ===" + # Install tar gz and check import + python -m pip uninstall --yes snowexsql + python -m pip install --extra-index-url https://test.pypi.org/simple --upgrade --pre --no-binary=snowexsql snowexsql + python -c "import snowexsql; print(snowexsql.__version__)" + echo "=== Done testing source tar file ===" + + publish: + needs: [dist, test-built-dist] + name: Publish to PyPI + environment: pypi + permissions: + id-token: write + runs-on: ubuntu-latest + if: github.event_name == 'release' && github.event.action == 'published' + + steps: + - uses: actions/download-artifact@v4 + with: + name: artifact + path: dist + + - uses: pypa/gh-action-pypi-publish@v1.9.0 + if: startsWith(github.ref, 'refs/tags')