diff --git a/.github/workflows/manual-deployment.yml b/.github/workflows/manual-deployment.yml new file mode 100644 index 0000000..ba542b2 --- /dev/null +++ b/.github/workflows/manual-deployment.yml @@ -0,0 +1,135 @@ +name: Manual PyPI Deployment + +on: + workflow_dispatch: + +env: + DATAWRAPPER_ACCESS_TOKEN: ${{ secrets.DATAWRAPPER_ACCESS_TOKEN }} + +jobs: + lint-python: + name: Lint Python code + runs-on: ubuntu-latest + steps: + - id: checkout + name: Checkout + uses: actions/checkout@v4 + + - id: setup-python + name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + cache: "pipenv" + + - id: install-pipenv + name: Install pipenv + run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python + shell: bash + + - id: install-python-dependencies + name: Install Python dependencies + run: pipenv sync --dev + shell: bash + + - id: lint + name: Lint Python code + run: pipenv run flake8 ./datawrapper --verbose + shell: bash + + mypy-python: + name: Static-types check + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - id: setup-python + name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + cache: "pipenv" + + - id: install-pipenv + name: Install pipenv + run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python + shell: bash + + - id: install-python-dependencies + name: Install Python dependencies + run: pipenv sync --dev + shell: bash + + - id: mypy + name: Run mypy + run: pipenv run mypy ./datawrapper --ignore-missing-imports --verbose + shell: bash + + build: + name: Build release candidate + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - id: setup-python + name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + cache: "pipenv" + + - id: install-pipenv + name: Install pipenv + run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python + shell: bash + + - id: install-python-dependencies + name: Install Python dependencies + run: pipenv install --dev --deploy + shell: bash + + - id: build-source + name: Build source release + run: pipenv run python setup.py sdist + shell: bash + + - id: build-binary + name: Build binary release + run: pipenv run python setup.py bdist_wheel + shell: bash + + - id: check + name: Check release + run: pipenv run twine check dist/* + shell: bash + + - id: save + name: Save artifact + uses: actions/upload-artifact@v3 + with: + name: release-candidate + path: ./dist + if-no-files-found: error + + release: + name: PyPI release + runs-on: ubuntu-latest + needs: [build] + steps: + - id: fetch + name: Fetch artifact + uses: actions/download-artifact@v3 + with: + name: release-candidate + path: ./dist + + - id: publish + name: Publish release + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} + verbose: true + verify-metadata: false