Pārlūkot izejas kodu

feat: add optional publish step to build and release

Joao Andre 1 gadu atpakaļ
vecāks
revīzija
ec40019eee

+ 32 - 1
.github/workflows/build-and-release-dev.yml

@@ -2,6 +2,11 @@ name: Build a dev version for all packages and release them
 
 on:
   workflow_dispatch:
+    inputs:
+      publish_on_pypi:
+        description: "Should the packages be published on Pypi?"
+        default: "false"
+        required: true
 
 jobs:
   fetch-versions:
@@ -83,7 +88,8 @@ jobs:
             ${{needs.fetch-versions.outputs.core_VERSION}} \
             ${{needs.fetch-versions.outputs.gui_VERSION}} \
             ${{needs.fetch-versions.outputs.rest_VERSION}} \
-            ${{needs.fetch-versions.outputs.templates_VERSION}}
+            ${{needs.fetch-versions.outputs.templates_VERSION}} \
+            ${{ github.event.inputs.publish_on_pypi }}
 
       - name: Install dependencies
         run: |
@@ -106,6 +112,14 @@ jobs:
         run: |
           pip install ${{ steps.set-variables.outputs.tar_path }}
 
+      - name: Publish to PyPI
+        if: ${{ github.event.inputs.publish_on_pypi == 'true' }}
+        working-directory: ${{ steps.set-variables.outputs.package_dir }}
+        uses: pypa/gh-action-pypi-publish@release/v1
+        with:
+          user: __token__
+          password: ${{ secrets[format('PYPI_API_TOKEN_{0}', ${{ matrix.package }} )] }}
+
   build-and-release-taipy-dev:
     runs-on: ubuntu-latest
     needs: [ build-and-release-taipy-dev-packages, fetch-versions ]
@@ -126,6 +140,16 @@ jobs:
           echo "release_name=${{needs.fetch-versions.outputs.VERSION}}" >> $GITHUB_OUTPUT
           echo "tar_path=./dist/${{ github.event.repository.name }}-${{needs.fetch-versions.outputs.VERSION}}.tar.gz" >> $GITHUB_OUTPUT
 
+      - name: Update setup.requirements.txt
+        run: |
+          python tools/release/update_setup_requirements.py taipy \
+            ${{needs.fetch-versions.outputs.config_VERSION}} \
+            ${{needs.fetch-versions.outputs.core_VERSION}} \
+            ${{needs.fetch-versions.outputs.gui_VERSION}} \
+            ${{needs.fetch-versions.outputs.rest_VERSION}} \
+            ${{needs.fetch-versions.outputs.templates_VERSION}} \
+            ${{ github.event.inputs.publish_on_pypi }}
+
       - name: Install dependencies
         run: |
           python -m pip install --upgrade pip
@@ -148,6 +172,13 @@ jobs:
         run: |
           python tools/validate_taipy_install.py
 
+      - name: Publish to PyPI
+        if: ${{ github.event.inputs.publish_on_pypi == 'true' }}
+        uses: pypa/gh-action-pypi-publish@release/v1
+        with:
+          user: __token__
+          password: ${{ secrets.PYPI_API_TOKEN }}
+
       - name: Download packages
         run: |
           gh release download ${{ needs.fetch-versions.outputs.config_VERSION }}-config --skip-existing --dir dist

+ 9 - 5
tools/release/update_setup_requirements.py

@@ -5,17 +5,20 @@ from typing import Dict
 BASE_PATH = "./tools/packages"
 
 
-def __build_taipy_package_line(line: str, version: str) -> str:
-    return f"{line.strip()} @ https://github.com/Avaiga/taipy/releases/download/{version}/{version}.tar.gz\n"
+def __build_taipy_package_line(line: str, version: str, publish_on_py_pi: bool) -> str:
+    _line = line.strip()
+    if publish_on_py_pi:
+        return f"{_line}=={version}"
+    return f"{_line} @ https://github.com/Avaiga/taipy/releases/download/{version}/{version}.tar.gz\n"
 
 
-def update_setup_requirements(package: str, versions: Dict) -> None:
+def update_setup_requirements(package: str, versions: Dict, publish_on_py_pi: bool) -> None:
     _path = os.path.join(BASE_PATH, package, "setup.requirements.txt")
     lines = []
     with open(_path, mode="r") as req:
         for line in req:
             if v := versions.get(line.strip()):
-                line = __build_taipy_package_line(line, v)
+                line = __build_taipy_package_line(line, v, publish_on_py_pi)
             lines.append(line)
 
     with open(_path, 'w') as file:
@@ -31,5 +34,6 @@ if __name__ == "__main__":
         "taipy-rest": sys.argv[5],
         "taipy-templates": sys.argv[6],
     }
+    _publish_on_py_pi = bool(sys.argv[7])
 
-    update_setup_requirements(_package, _versions)
+    update_setup_requirements(_package, _versions, _publish_on_py_pi)