2023-02-11 23:33:14 -05:00
# 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.
2023-02-12 00:21:02 -05:00
name : Publish
2023-02-11 23:33:14 -05:00
on :
2023-02-12 00:45:23 -05:00
workflow_dispatch :
2023-02-12 01:24:14 -05:00
push :
# Sequence of patterns matched against refs/tags
tags :
- 'release/v*' # Push events to matching v*, i.e. v1.0, v20.15.10
2023-02-11 23:33:14 -05:00
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
2023-02-12 00:21:02 -05:00
2023-02-12 00:26:30 -05:00
- name : Build package
run : poetry build
2023-02-12 01:24:14 -05:00
- name : Set Versions
2023-02-12 02:07:49 -05:00
uses : actions/github-script@v6.4.0
2023-02-12 01:24:14 -05:00
id : set_version
with :
script : |
2023-02-12 02:07:49 -05:00
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)
2023-02-12 01:24:14 -05:00
2023-02-12 00:26:30 -05:00
2023-02-12 01:24:14 -05:00
# - 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 :
2023-02-12 01:57:55 -05:00
GITHUB_TOKEN : ${{ secrets.GH_API_TOKEN }}
2023-02-12 00:21:02 -05:00
with :
2023-02-12 01:24:14 -05:00
tag_name : ${{ github.ref }}
2023-02-12 02:13:31 -05:00
release_name : ${{ steps.set_version.outputs.tag }}
2023-02-12 01:24:14 -05:00
draft : true
prerelease : false
- name : Upload Release Artefact
uses : actions/upload-release-asset@v1
env :
2023-02-12 01:57:55 -05:00
GITHUB_TOKEN : ${{ secrets.GH_API_TOKEN }}
2023-02-12 01:24:14 -05:00
with :
upload_url : ${{ steps.create_release.outputs.upload_url }}
2023-02-12 02:13:31 -05:00
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
2023-02-12 01:24:14 -05:00
asset_content_type : application/zip
2023-02-11 23:33:14 -05:00
- name : Publish to PyPI
2023-02-12 01:24:14 -05:00
run : poetry publish --username __token__ --password ${{ secrets.PYPI_API_TOKEN }}
2023-02-11 23:33:14 -05:00