Uploaded image for project: 'Qt Cloud'
  1. Qt Cloud
  2. CLOUD-1

Qt CI Cloud MVP

    XMLWordPrintable

Details

    • Backend

    Description

      This feature is being implemented by the Gemini project MVP already. The idea is to offer embedded device compilation in the cloud for faster progress using cloud capacity and additional Git-related tooling that makes development easier.

      https://bugreports.qt.io/browse/QTBUG-98148

      This MVP consists of:

      • an API to manage CI jobs in the cloud
      • a solution to notify web hooks from the cloud CI service
      • a UI to access the services in the IDE
      • a dashboard to track CI status in the IDE

      Initially, the Qt cloud mvp is designed with Gitlab in mind and later we should extend it to Github (and may be other providers)

      https://git.qt.io/playground/qtcloud/-/issues/1#api-to-manage-ci-jobs-in-the-cloud

      API to manage CI jobs in the cloud

      Gitlab provides REST APIs which are used to manage their projects, pipelines and jobs. List of all such APIs can be found here: https://docs.gitlab.com/ee/api/api_resources.html. All of these API's can be accessed using the private_token.

      https://git.qt.io/playground/qtcloud/-/issues/1#a-solution-to-notify-the-qt-creator-of-build-status

      A solution to notify the Qt creator of build status

      When a build is running remotely, the developer should be notified of it's status using Integrations or Webhooks provided by the Gitlab. This is required to keep the Qt creator UI updated of the current CI status and to keep the developer up-to-date about the build so that they can take relevant actions post successful build, for example (but not limited to):

      • Create a merge request
      • Promote the build to Release testing

      For this purpose, a number of options were studied including PUSH notification options via PushBullet (supported by Gitlab), Firebase Push notifications, Webhooks. Finally Webhook method was decided to be used in this project.
      https://git.qt.io/playground/qtcloud/-/issues/1#how-to-use-webhook-in-this-projectHow to use webhook in this project:

      We will use an external service called Ngrok (https://ngrok.com) for this purpose. When the user is starting Qt creator and have the Qt-cloud-dashboard configured, we will start "NGROK tunnel" to expose a specific port on developer's computer.

      Once the post is exposed, we will run a simple HTTP web server which listens to the webhook and then, update the Gitlab project about this incoming Webhook. We will use all relevant ways to add security to this webhook including that the URLs generated will be random and will be accessed only via relevant access tokens.

      https://git.qt.io/playground/qtcloud/-/issues/1#a-ui-to-access-the-functionality-in-the-qt-creator

      A UI to access the functionality in the Qt creator

      All the CI related activities can be tracked and viewed in this dashboard.

      – check the linked issues.

      Attachments

        Activity

          People

            Unassigned Unassigned
            anttisiukola Antti Siukola
            Tino Pyssysalo Tino Pyssysalo
            Antti Siukola Antti Siukola
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: