Skip the release if it exists #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow will install Python dependencies, run tests and lint with a single version of Python | |
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python | |
name: SplitRaster Package Release and Publish | |
on: | |
push: | |
branches: [master] | |
tags: | |
- v* | |
pull_request: | |
branches: [master] | |
jobs: | |
format_and_check: | |
runs-on: ubuntu-latest | |
environment: production | |
steps: | |
- uses: actions/checkout@v3 | |
- 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 black flake8 | |
- name: Format with Black | |
run: | | |
black --check . | |
build: | |
needs: format_and_check | |
runs-on: ubuntu-latest | |
environment: production | |
strategy: | |
matrix: | |
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pytest | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
- name: Install setuptools | |
run: | | |
pip install setuptools wheel | |
- name: Build Python package | |
run: | | |
python setup.py sdist bdist_wheel | |
- name: Install Python Package | |
run: | | |
pip install dist/*.whl | |
- name: Test with pytest | |
run: | | |
pytest test.py -v | |
deploy: | |
needs: build | |
runs-on: ubuntu-latest | |
environment: production | |
steps: | |
- uses: actions/checkout@v3 | |
- 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 pytest | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
- name: Install setuptools | |
run: | | |
pip install setuptools wheel | |
- name: re-Build Python package | |
run: | | |
python setup.py sdist bdist_wheel | |
- name: Install Python Package | |
run: | | |
pip install dist/*.whl | |
- name: Install twine | |
run: | | |
python -m pip install --upgrade pip | |
pip install twine | |
- name: Upload to PyPI | |
env: | |
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} | |
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
run: | | |
python -m twine upload --skip-existing dist/* | |
release: | |
needs: deploy | |
runs-on: ubuntu-latest | |
environment: production | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Get Package version | |
id: get_version | |
run: | | |
echo ::set-output name=version::$(python setup.py --version) | |
- name: Check if release exists | |
id: check_release | |
run: | | |
RELEASE_ID=$(curl --silent --show-error --location --fail --retry 3 --output /dev/null --write-out "%{http_code}" --header "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/releases/tags/${{ steps.get_version.outputs.version }}") | |
echo "::set-output name=exists::$([[ "$RELEASE_ID" != "404" ]] && echo true || echo false)" | |
- name: Create Release | |
id: create_release | |
if: ${{ !steps.check_release.outputs.exists }} | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ steps.get_version.outputs.version }} | |
release_name: Release ${{ steps.get_version.outputs.version }} | |
draft: false | |
prerelease: false | |
deploy_docs: | |
needs: release | |
runs-on: ubuntu-latest | |
environment: production | |
steps: | |
- uses: actions/checkout@v3 | |
- 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 mkdocs | |
- name: Deploy to GitHub Pages | |
run: | | |
mkdocs gh-deploy --force |