From 0e4ecc025fdff364eba675d072e3395a03b46ce4 Mon Sep 17 00:00:00 2001 From: Jesse Whitehouse Date: Tue, 6 Sep 2022 15:05:24 -0500 Subject: [PATCH 1/2] Introduce test deploy to Pypi (borrowed from dbsqlcli) Signed-off-by: Jesse Whitehouse --- .github/workflows/publish-test.yml | 64 ++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .github/workflows/publish-test.yml diff --git a/.github/workflows/publish-test.yml b/.github/workflows/publish-test.yml new file mode 100644 index 000000000..d95e2e3c6 --- /dev/null +++ b/.github/workflows/publish-test.yml @@ -0,0 +1,64 @@ +name: Publish to PyPI [Test] +on: [push] +jobs: + test-pypi: + name: Create patch version number and push to test-pypi + runs-on: ubuntu-latest + steps: + #---------------------------------------------- + # check-out repo and set-up python + #---------------------------------------------- + - name: Check out repository + uses: actions/checkout@v2 + - name: Set up python + id: setup-python + uses: actions/setup-python@v2 + with: + python-version: 3.9 + #---------------------------------------------- + # ----- install & configure poetry ----- + #---------------------------------------------- + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + virtualenvs-create: true + virtualenvs-in-project: true + installer-parallel: true + #---------------------------------------------- + # load cached venv if cache exists + #---------------------------------------------- + - name: Load cached venv + id: cached-poetry-dependencies + uses: actions/cache@v2 + with: + path: .venv + key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }} + #---------------------------------------------- + # install dependencies if cache does not exist + #---------------------------------------------- + - name: Install dependencies + if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + run: poetry install --no-interaction --no-root + #---------------------------------------------- + # Get the current version and increment it (test-pypi requires a unique version number) + #---------------------------------------------- + - name: Get next version + uses: reecetech/version-increment@2022.2.4 + id: version + with: + scheme: semver + increment: patch + #---------------------------------------------- + # Tell poetry to update the version number + #---------------------------------------------- + - name: Update pyproject.toml + run: poetry version ${{ steps.version.outputs.major-version }}.${{ steps.version.outputs.minor-version }}.dev$(date +%s) + #---------------------------------------------- + # Attempt push to test-pypi + #---------------------------------------------- + - name: Build and publish to pypi + uses: JRubics/poetry-publish@v1.10 + with: + pypi_token: ${{ secrets.TEST_PYPI_TOKEN }} + repository_name: "testpypi" + repository_url: "https://test.pypi.org/legacy/" From f8d9e0bd6375557c79ddfd9074a7434b2b1872da Mon Sep 17 00:00:00 2001 From: Jesse Whitehouse Date: Tue, 6 Sep 2022 15:29:15 -0500 Subject: [PATCH 2/2] Add publish workflow Signed-off-by: Jesse Whitehouse --- .github/workflows/publish.yml | 64 +++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 000000000..9ea751d03 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,64 @@ +name: Publish to PyPI [Production] +on: + release: + types: [published] +jobs: + publish: + name: Publish + runs-on: ubuntu-latest + steps: + #---------------------------------------------- + # check-out repo and set-up python + #---------------------------------------------- + - name: Check out repository + uses: actions/checkout@v2 + - name: Set up python + id: setup-python + uses: actions/setup-python@v2 + with: + python-version: 3.9 + #---------------------------------------------- + # ----- install & configure poetry ----- + #---------------------------------------------- + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + virtualenvs-create: true + virtualenvs-in-project: true + installer-parallel: true + #---------------------------------------------- + # load cached venv if cache exists + #---------------------------------------------- + - name: Load cached venv + id: cached-poetry-dependencies + uses: actions/cache@v2 + with: + path: .venv + key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }} + #---------------------------------------------- + # install dependencies if cache does not exist + #---------------------------------------------- + - name: Install dependencies + if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + run: poetry install --no-interaction --no-root + #------------------------------------------------------------------------------------------------ + # Here we use version-increment to fetch the latest tagged version (we won't increment it though) + #------------------------------------------------------------------------------------------------ + - name: Get next version + uses: reecetech/version-increment@2022.2.4 + id: version + with: + scheme: semver + increment: patch + #----------------------------------------------------------------------------- + # Tell poetry to use the `current-version` that was found by the previous step + #----------------------------------------------------------------------------- + - name: Update pyproject.toml + run: poetry version ${{ steps.version.outputs.current-version }} + #---------------------------------------------- + # Attempt push to test-pypi + #---------------------------------------------- + - name: Build and publish to pypi + uses: JRubics/poetry-publish@v1.10 + with: + pypi_token: ${{ secrets.PROD_PYPI_TOKEN }} \ No newline at end of file