diff --git a/.github/workflows/build-and-publish.yaml b/.github/workflows/build-and-publish.yaml new file mode 100644 index 000000000..07568791c --- /dev/null +++ b/.github/workflows/build-and-publish.yaml @@ -0,0 +1,48 @@ +# Copyright The FMS HF Tuning Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Build and Publish FMS-hf-tuning Library + +on: + workflow_dispatch: + inputs: + release-version: + type: string + required: true + description: 'Version number (for example: 0.0.1)' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.9 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r setup_requirements.txt + - name: Build and test with tox + run: tox -e py39 + - name: Build and check wheel package + run: + tox -e build,twinecheck +# Work in progress... need to get a PYPI_TOKEN in the repo +# - name: Publish wheel package on PyPI +# if: github.event_name == 'release' +# uses: pypa/gh-action-pypi-publish@release/v1 +# with: +# password: ${{ secrets.PYPI_TOKEN }} diff --git a/setup_requirements.txt b/setup_requirements.txt index 519d362a1..a1329fac1 100644 --- a/setup_requirements.txt +++ b/setup_requirements.txt @@ -1,4 +1,5 @@ pre-commit>=3.0.4,<4.0 pylint>=2.16.2,<4.0 pydeps>=1.12.12,<2 -tox>=4.4.2,<5 \ No newline at end of file +tox>=4.4.2,<5 +build>=0.10.0,<2.0 diff --git a/tox.ini b/tox.ini index 8485dfc8b..5bbbdc1ee 100644 --- a/tox.ini +++ b/tox.ini @@ -6,6 +6,7 @@ description = run unit tests deps = pytest>=7 -r requirements.txt + wheel>=0.38.4 commands = pytest {posargs:tests} @@ -20,3 +21,17 @@ deps = pylint>=2.16.2,<=3.1.0 -r requirements.txt commands = pylint tuning scripts/*.py build/*.py allowlist_externals = pylint + +[testenv:build] +description = build wheel +deps = + build +commands = python -m build +skip_install = True + +[testenv:twinecheck] +description = check wheel +deps = + twine +commands = twine check dist/* +skip_install = True