diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 0000000..618cb38 --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,73 @@ +# This workflow will upload a Python Package to PyPI 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. + +name: Upload Python Package + +# on: +# release: +# types: [published] + +on: + workflow_dispatch: + +permissions: + contents: read + +jobs: + release-build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.10" + + - name: Build release distributions + run: | + # NOTE: put your own distribution build steps here. + python -m pip install build + python -m build + + - name: Upload distributions + uses: actions/upload-artifact@v4 + with: + name: release-dists + path: dist/ + + pypi-publish: + runs-on: ubuntu-latest + needs: + - release-build + permissions: + # IMPORTANT: this permission is mandatory for trusted publishing + id-token: write + + # Dedicated environments with protections for publishing are strongly recommended. + # For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules + environment: + name: pypi + # OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status: + url: https://pypi.org/p/robotics_application_manager + # + # ALTERNATIVE: if your GitHub Release name is the PyPI project version string + # ALTERNATIVE: exactly, uncomment the following line instead: + # url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }} + + steps: + - name: Retrieve release distributions + uses: actions/download-artifact@v4 + with: + name: release-dists + path: dist/ + + - name: Publish release distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ diff --git a/robotics_application_manager/libs/process_utils.py b/robotics_application_manager/libs/process_utils.py index ecc61c7..14c28c9 100644 --- a/robotics_application_manager/libs/process_utils.py +++ b/robotics_application_manager/libs/process_utils.py @@ -75,7 +75,7 @@ def is_xserver_running(display): return os.path.exists(x_socket_path) -def wait_for_xserver(display, timeout=30): +def wait_for_xserver(display, timeout=120): """ Wait for the X server to start within a specified timeout period. diff --git a/robotics_application_manager/manager/vnc/vnc_server.py b/robotics_application_manager/manager/vnc/vnc_server.py index 7085233..24129cb 100755 --- a/robotics_application_manager/manager/vnc/vnc_server.py +++ b/robotics_application_manager/manager/vnc/vnc_server.py @@ -115,13 +115,13 @@ def start_vnc_gpu(self, display, internal_port, external_port, dri_path): self.wait_for_port("localhost", internal_port) self.wait_for_port("localhost", external_port) - def wait_for_port(self, host, port, timeout=20): + def wait_for_port(self, host, port, timeout=120): """Wait for a TCP port on a host to become available within a timeout period. Args: host (str): Hostname or IP address to check. port (int): Port number to check. - timeout (int, optional): Maximum time to wait in seconds. Defaults to 20. + timeout (int, optional): Maximum time to wait in seconds. Defaults to 120. Raises: TimeoutError: If the port does not become available within the timeout.