From 48ec39bb043740e7cecbee2fd08448fbd0db05bd Mon Sep 17 00:00:00 2001 From: Bruno Ferreira Date: Tue, 9 Jan 2024 23:00:09 +0000 Subject: [PATCH 1/6] Create python-publish.yml --- .github/workflows/python-publish.yml | 49 ++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/python-publish.yml diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 000000000..d9e8d7de6 --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,49 @@ +# These workflows will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +name: Upload Python Package + +on: + release: + types: [created] + +jobs: + deploy: + runs-on: ubuntu-latest + permissions: + id-token: write + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v3 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine + - name: Build distribution + run: | + cd mlcube + python setup.py sdist bdist_wheel + - name: Publish + uses: pypa/gh-action-pypi-publish@release/v1 + with: + verify-metadata: true + skip-existing: true + packages-dir: mlcube/dist/ + repository-url: https://upload.pypi.org/legacy/ + verbose: true + env: + LOGLEVEL: DEBUG + +# dispatch: +# needs: deploy +# runs-on: ubuntu-latest +# steps: +# - name: Repository Dispatch +# uses: peter-evans/repository-dispatch@v2 +# with: +# token: ${{ secrets.MLCOMMONS_REPO_ACCESS }} +# repository: mlcommons/mlcube +# event-type: publish-runners From 1fbcd5b3097a8a66bf8c3b29a7171de59753188a Mon Sep 17 00:00:00 2001 From: Bruno Ferreira Date: Wed, 10 Jan 2024 00:44:59 +0000 Subject: [PATCH 2/6] Update python-publish.yml --- .github/workflows/python-publish.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index d9e8d7de6..e67ef783f 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -24,15 +24,15 @@ jobs: pip install setuptools wheel twine - name: Build distribution run: | - cd mlcube - python setup.py sdist bdist_wheel + cd python/mlcroissant + python -m build - name: Publish uses: pypa/gh-action-pypi-publish@release/v1 with: verify-metadata: true skip-existing: true - packages-dir: mlcube/dist/ - repository-url: https://upload.pypi.org/legacy/ + packages-dir: python/mlcroissant/dist + repository-url: https://test.pypi.org/legacy/ verbose: true env: LOGLEVEL: DEBUG From 390551f82a94e46ad21e6f93518a2e35fba92561 Mon Sep 17 00:00:00 2001 From: Bruno Ferreira Date: Wed, 10 Jan 2024 01:00:50 +0000 Subject: [PATCH 3/6] Fix python-publish.yml; added build dependency --- .github/workflows/python-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index e67ef783f..2fdf67f40 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -21,7 +21,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel twine + pip install setuptools wheel twine build - name: Build distribution run: | cd python/mlcroissant From ba6f2f7536eeaa0119c2e9efa482dacecee9bec4 Mon Sep 17 00:00:00 2001 From: Bruno Ferreira Date: Wed, 17 Jan 2024 01:21:49 +0000 Subject: [PATCH 4/6] Changed publish URL to production upload.pypi.org --- .github/workflows/python-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 2fdf67f40..a81272d82 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -32,7 +32,7 @@ jobs: verify-metadata: true skip-existing: true packages-dir: python/mlcroissant/dist - repository-url: https://test.pypi.org/legacy/ + repository-url: https://upload.pypi.org/legacy/ verbose: true env: LOGLEVEL: DEBUG From 737e63c82d711ad5cd3493adc13b97c8cd1827d1 Mon Sep 17 00:00:00 2001 From: Bruno Ferreira Date: Tue, 6 Feb 2024 01:46:20 +0000 Subject: [PATCH 5/6] Removed commented code; added note directing readers to a script with multi-repository publishing --- .github/workflows/python-publish.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index a81272d82..41a77662c 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -37,13 +37,5 @@ jobs: env: LOGLEVEL: DEBUG -# dispatch: -# needs: deploy -# runs-on: ubuntu-latest -# steps: -# - name: Repository Dispatch -# uses: peter-evans/repository-dispatch@v2 -# with: -# token: ${{ secrets.MLCOMMONS_REPO_ACCESS }} -# repository: mlcommons/mlcube -# event-type: publish-runners +# If you wish to publish the package to multiple repositories at once, get inspiration from +# https://github.com/mlcommons/mlcube/blob/master/.github/workflows/python-publish.yml. From 7f79750993cbffc2bef4d03c82384e6f09870fc3 Mon Sep 17 00:00:00 2001 From: Bruno Ferreira Date: Tue, 6 Feb 2024 01:52:46 +0000 Subject: [PATCH 6/6] Tweaked technical README to document the automatic package publishing. --- python/mlcroissant/README.md | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/python/mlcroissant/README.md b/python/mlcroissant/README.md index d0612aac2..0c0423b69 100644 --- a/python/mlcroissant/README.md +++ b/python/mlcroissant/README.md @@ -130,31 +130,10 @@ This will: 1. print extra information, like the generated nodes; 2. save the generated structure graph to a folder indicated in the logs. -## Publishing wheels +## Publishing packages -Publishing is done manually. -We are in the process of setting up an automatic deployment with GitHub Actions. +To publish a package, 1. Bump the version in `croissant/python/mlcroissant/pyproject.toml`. -1. Configure Twine locally ([full tutorial](https://packaging.python.org/en/latest/tutorials/packaging-projects/)): -``` -[distutils] - index-servers = - pypi - mlcroissant - -[pypi] -username = -password = - -[mlcroissant] -repository = https://upload.pypi.org/legacy/ -username = __token__ -password = # generate the password on https://pypi.org/manage/account/token/ -``` -1. Build locally and push to PyPI: -```bash -rm -rf dist/ -python -m build -python -m twine upload --repository mlcroissant dist/* -``` +2. Publish a release in GitHub. The workflow script `python-publish.yml` will trigger and publish the package to PyPI. +