name: Release run-name: bump ${{ inputs.version }} version by @${{ github.actor }} on: workflow_dispatch: inputs: version: type: choice description: 'part of the project version to update' options: - major - minor - patch required: true env: PIP_NO_OPTION: on PIP_NO_CLEAN: on PIP_PREFER_BINARY: on permissions: contents: write packages: write concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: false jobs: release: runs-on: ubuntu-latest timeout-minutes: 10 outputs: tag: ${{ steps.release.outputs.tag }} steps: - name: Checkout repo uses: actions/checkout@v4 with: fetch-depth: 1 - name: Cache requirements uses: actions/cache@v4 env: cache-name: cache-requirements with: path: ~/.cache/pip key: ${{ env.cache-name }}-${{ hashFiles('requirements.txt') }} restore-keys: | ${{ env.cache-name }}- - name: Setup python uses: actions/setup-python@v5 with: python-version: 3.11 - name: Install requirements run: make setup - name: Configure git env: MEX_BOT_EMAIL: ${{ vars.MEX_BOT_EMAIL }} MEX_BOT_USER: ${{ vars.MEX_BOT_USER }} SIGNING_KEY: ${{ secrets.SIGNING_KEY }} SIGNING_PUB: ${{ secrets.SIGNING_PUB }} run: | eval "$(ssh-agent -s)" pdm setup-commit-signing - name: Release new version id: release env: GH_TOKEN: ${{ secrets.WORKFLOW_TOKEN }} run: | pdm release ${{ inputs.version }} echo "tag=$(git describe --abbrev=0 --tags)" >> "$GITHUB_OUTPUT" distribute: runs-on: ubuntu-latest timeout-minutes: 10 needs: release steps: - name: Checkout repo uses: actions/checkout@v4 with: fetch-depth: 1 - name: Cache requirements uses: actions/cache@v4 env: cache-name: cache-requirements with: path: ~/.cache/pip key: ${{ env.cache-name }}-${{ hashFiles('requirements.txt') }} restore-keys: | ${{ env.cache-name }}- - name: Setup python uses: actions/setup-python@v5 with: python-version: 3.11 - name: Install requirements run: make setup - name: Build wheel and sdist distros and create a github release env: GH_TOKEN: ${{ secrets.WORKFLOW_TOKEN }} PDM_CHECK_UPDATE: False run: | gh release create ${{ needs.release.outputs.tag }} --generate-notes --latest --verify-tag pdm build --dest dist for filename in dist/*; do gh release upload ${{ needs.release.outputs.tag }} ${filename}; done