PyPI whl build and upload to PyPI test server nightly job (#2317)
This script builds the python 3.10 and 3.11 wheels using python/tflite_micro/pypi_build.sh and then uploads to the test PyPI server with python/tflite_micro/pypi_upload.sh. It is scheduled to run at 1300 UTC each day (0600 or 0700 PST). The runs require approximately 11 minutes.
This job can also be run manually by going to Actions > PyPI Build. There is an option to run only the whl build without upload for troubleshooting.
It also should be relatively obvious how to add a release build option if the live server key was added to repo secrets and the script env block and another optional run block added with the -p <live server key> switch added to a copy of the upload script line.
I have tested the build block, but can't test the upload section since I don't have access to the PYPI_API_KEY secret.
BUG=request from rj
diff --git a/.github/workflows/pypi_build.yml b/.github/workflows/pypi_build.yml
new file mode 100644
index 0000000..58052fe
--- /dev/null
+++ b/.github/workflows/pypi_build.yml
@@ -0,0 +1,50 @@
+# YAML schema for GitHub Actions:
+# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions
+#
+# Helpful YAML parser to clarify YAML syntax:
+# https://yaml-online-parser.appspot.com/
+#
+
+name: PyPI Build
+
+on:
+ schedule:
+ # 1pm UTC is 6am or 7am PT depending on daylight savings.
+ - cron: '0 13 * * *'
+
+ workflow_dispatch:
+ inputs:
+ upload-type:
+ description: 'Upload type'
+ required: true
+ default: 'pypi'
+ type: choice
+ options:
+ - 'pypi'
+ - 'no upload'
+env:
+ TWINE_PASSWORD: ${{ secrets.PYPI_API_KEY }}
+
+jobs:
+ pypi-build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ token: ${{ secrets.TFLM_BOT_REPO_TOKEN }}
+ - name: Build Wheel 3.10
+ run: |
+ python/tflite_micro/pypi_build.sh cp310
+ - name: Build Wheel 3.11
+ run: |
+ python/tflite_micro/pypi_build.sh cp311
+ - name: Check Directory Output
+ run: |
+ ls -l bazel-pypi-out
+ - name: upload to pypi
+ if: |
+ github.event.inputs.upload-type == 'pypi' ||
+ github.event_name == 'schedule'
+ run: |
+ python/tflite_micro/pypi_upload.sh \
+ bazel-pypi-out/tflite_micro-*.whl
\ No newline at end of file