name: deploy on: workflow_dispatch: inputs: version: description: 'Release version' required: true default: '1.2.3' # Set permissions at the job level. permissions: {} jobs: package: runs-on: ubuntu-latest env: SETUPTOOLS_SCM_PRETEND_VERSION: ${{ github.event.inputs.version }} timeout-minutes: 10 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false - name: Build and Check Package uses: hynek/build-and-inspect-python-package@v1.5.4 deploy: if: github.repository == 'pytest-dev/pytest' needs: [package] runs-on: ubuntu-latest environment: deploy timeout-minutes: 30 permissions: id-token: write contents: write steps: - uses: actions/checkout@v4 - name: Download Package uses: actions/download-artifact@v3 with: name: Packages path: dist - name: Publish package to PyPI uses: pypa/gh-action-pypi-publish@v1.8.10 - name: Push tag run: | git config user.name "pytest bot" git config user.email "pytestbot@gmail.com" git tag --annotate --message=v${{ github.event.inputs.version }} ${{ github.event.inputs.version }} ${{ github.sha }} git push origin ${{ github.event.inputs.version }} release-notes: # todo: generate the content in the build job # the goal being of using a github action script to push the release data # after success instead of creating a complete python/tox env needs: [deploy] runs-on: ubuntu-latest timeout-minutes: 30 permissions: contents: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.11" - name: Install tox run: | python -m pip install --upgrade pip pip install --upgrade tox - name: Publish GitHub release notes env: GH_RELEASE_NOTES_TOKEN: ${{ github.token }} run: | sudo apt-get install pandoc tox -e publish-gh-release-notes