# This workflow will upload a Python Package using Twine when a release is created # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries # This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: Publish on: workflow_dispatch: push: # Sequence of patterns matched against refs/tags tags: - 'release/v*' # Push events to matching v*, i.e. v1.0, v20.15.10 permissions: contents: read jobs: deploy: runs-on: [self-hosted, linux] steps: - uses: actions/checkout@v2 with: fetch-depth: 1 - name: Set up Python 3.9 uses: actions/setup-python@v4 with: python-version: 3.9 - name: Install Poetry Action uses: snok/install-poetry@v1.3.3 - name: Cache Poetry virtualenv uses: actions/cache@v3 id: cache with: path: ~/.virtualenvs key: poetry-${{ hashFiles('**/poetry.lock') }} restore-keys: | poetry-${{ hashFiles('**/poetry.lock') }} - name: Install Dependencies run: poetry install if: steps.cache.outputs.cache-hit != 'true' - name: Test with pytest run: poetry run pytest -m "not skip_ci" tests - name: Build package run: poetry build - name: Set Versions uses: actions/github-script@v6.4.0 id: set_version with: script: | const tag = context.ref.substring(18) const no_v = tag.replace('v', '') const dash_index = no_v.lastIndexOf('-') const no_dash = (dash_index > -1) ? no_v.substring(0, dash_index) : no_v core.setOutput('tag', tag) core.setOutput('no-v', no_v) core.setOutput('no-dash', no_dash) # - name: Upload a Build Artifact # uses: actions/upload-artifact@v3.1.2 # with: # # Artifact name # name: "pip package" # # A file, directory or wildcard pattern that describes what to upload # path: "dist/*" # # The desired behavior if no files are found using the provided path. # if-no-files-found: error - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GH_API_TOKEN }} with: tag_name: ${{ github.ref }} release_name: ${{ steps.set_version.outputs.tag }} draft: true prerelease: false - name: Upload Release Artefact uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GH_API_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./dist/rnsh-${{ steps.set_version.outputs.no-v }}-py3-none-any.whl asset_name: rnsh-${{ steps.set_version.outputs.no-v }}-py3-none-any.whl asset_content_type: application/zip - name: Publish to PyPI run: poetry publish --username __token__ --password ${{ secrets.PYPI_API_TOKEN }}