This is an automated email from the ASF dual-hosted git repository.

tvb pushed a commit to branch tristan/remote-execution-testing
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 3d9fd1310d05120d8845b897d82660baf027ac9b
Author: Tristan van Berkom <[email protected]>
AuthorDate: Wed Jan 20 16:08:22 2021 +0900

    .github: Added remote execution CI
    
    Summary of changes:
    
      * .github/compose/ci.remote-execution-cluster.yml
    
         Added this remote execution cluster definition based on the
         one we were using in gitlab.
    
         This will bring up an action cache, execution service and storage
         service which can be accessed from outside of the docker on ports
         50051 and 50052.
    
      * .github/compose/ci.remote-execution-test.yml
    
        Added this composition which will use host networking more to run the
        remote execution tests adjacent to the cluster, without requiring
        docker-in-docker.
    
      * .github/workflows/ci.yml
    
        Added the `remote-execution` job to the main CI, this will
        bring up the cluster, run the tests, and then fetch logs from
        the cluster and bring down the cluster.
---
 .github/compose/ci.remote-execution-cluster.yml | 67 +++++++++++++++++++++++++
 .github/compose/ci.remote-execution-test.yml    | 36 +++++++++++++
 .github/workflows/ci.yml                        | 41 +++++++++++++++
 3 files changed, 144 insertions(+)

diff --git a/.github/compose/ci.remote-execution-cluster.yml 
b/.github/compose/ci.remote-execution-cluster.yml
new file mode 100644
index 0000000..fd45c45
--- /dev/null
+++ b/.github/compose/ci.remote-execution-cluster.yml
@@ -0,0 +1,67 @@
+##
+# BuildGrid Compose manifest for BuildStream.
+#
+# Spins-up a unnamed and unauthenticated grid:
+#  - Controller + CAS + AC at http://localhost:50051
+#  - Ref. + CAS at: http://localhost:50052
+#
+# BuildStream configuration snippet:
+#
+#    artifacts:
+#      url: http://localhost:50052
+#      push: true
+#    remote-execution:
+#      execution-service:
+#        url: http://localhost:50051
+#      action-cache-service:
+#        url: http://localhost:50051
+#      storage-service:
+#        url: http://localhost:50051
+#
+# Basic usage:
+#  - docker-compose -f buildgrid-compose.yml up
+#  - docker-compose -f buildgrid-compose.yml down
+#
+version: "3.2"
+
+services:
+  controller:
+    image: 
registry.gitlab.com/buildgrid/buildgrid.hub.docker.com/buildgrid:nightly
+    command: [
+      "bgd", "server", "start", "-v",
+      "/etc/buildgrid/default.conf"]
+    ports:
+      - 50051:50051
+    networks:
+      - grid
+
+  bot:
+    image: 
registry.gitlab.com/buildgrid/buildgrid.hub.docker.com/buildbox:nightly
+    command: [
+      "sh", "-c", "sleep 15 && ( buildbox-casd 
--cas-remote=http://controller:50051 /var/lib/buildgrid/cache & buildbox-worker 
--bots-remote=http://controller:50051 
--cas-remote=unix:/var/lib/buildgrid/cache/casd.sock 
--buildbox-run=buildbox-run-bubblewrap --runner-arg=--use-localcas --platform 
OSFamily=linux --platform ISA=x86-64 --verbose )"]
+    privileged: true
+    volumes:
+      - type: volume
+        source: cache
+        target: /var/lib/buildgrid/cache
+    depends_on:
+      - controller
+    networks:
+      - grid
+
+  storage:
+    image: 
registry.gitlab.com/buildgrid/buildgrid.hub.docker.com/buildgrid:nightly
+    command: [
+      "bgd", "server", "start", "-v",
+      "/etc/buildgrid/artifacts.conf"]
+    ports:
+      - 50052:50052
+    networks:
+      - grid
+
+networks:
+  grid:
+    driver: bridge
+
+volumes:
+  cache:
diff --git a/.github/compose/ci.remote-execution-test.yml 
b/.github/compose/ci.remote-execution-test.yml
new file mode 100644
index 0000000..dbdaa72
--- /dev/null
+++ b/.github/compose/ci.remote-execution-test.yml
@@ -0,0 +1,36 @@
+version: '3.4'
+
+services:
+
+  test:
+    image: 
registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:32-${CI_IMAGE_VERSION:-latest}
+    command: tox -vvvvv -- --color=yes --remote-execution
+    environment:
+      TOXENV: ${CI_ALL_MAIN}
+      ARTIFACT_CACHE_SERVICE: http://localhost:50052
+      REMOTE_EXECUTION_SERVICE: http://localhost:50051
+      SOURCE_CACHE_SERVICE: http://localhost:50052
+
+    # Some of the remote execution tests still require running a local sandbox
+    # to run `bst shell` on some build results even though they were built
+    # remotely, so we need to enable priviledged mode for this container as 
well.
+    #
+    privileged: true
+    devices:
+      - /dev/fuse:/dev/fuse
+
+    # Mount the local directory and set the working directory
+    # to run the tests from.
+    #
+    volumes:
+      - ../..:/home/testuser/buildstream
+    working_dir: /home/testuser/buildstream
+
+    # The ci.remote-execution-cluster.yml takes care of bringing up
+    # a remote execution cluster, exposing the ports 50052 and 50051
+    # on the localhost network.
+    #
+    # We need to use host networking mode in order to be able to
+    # properly resolve these services.
+    #
+    network_mode: host
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7d97d02..5eac80b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -76,6 +76,47 @@ jobs:
             run \
             ${{ matrix.test-name }}
 
+  remote-execution:
+    runs-on: ubuntu-20.04
+    continue-on-error: ${{ matrix.allow-failure || false }}
+
+    strategy:
+      fail-fast: false
+
+    steps:
+      - name: Check out repository
+        uses: actions/checkout@v2
+        # BuildStream requires tags to be able to find its version.
+        with:
+          fetch-depth: 0
+
+      - name: Give `testuser` ownership of the source directory
+        run: sudo chown -R 1000:1000 ${GITHUB_WORKSPACE}
+
+      - name: Bring up the RE cluster
+        run: |
+          docker-compose \
+            --env-file ${GITHUB_WORKSPACE}/.github/common.env \
+            --file 
${GITHUB_WORKSPACE}/.github/compose/ci.remote-execution-cluster.yml up --detach
+
+      - name: Run the remote execution tests
+        run: |
+          docker-compose \
+            --env-file ${GITHUB_WORKSPACE}/.github/common.env \
+            --file 
${GITHUB_WORKSPACE}/.github/compose/ci.remote-execution-test.yml run test
+
+      - name: Bring down the RE cluster
+        run: |
+          docker-compose \
+            --env-file ${GITHUB_WORKSPACE}/.github/common.env \
+            --file 
${GITHUB_WORKSPACE}/.github/compose/ci.remote-execution-cluster.yml stop
+          docker-compose \
+            --env-file ${GITHUB_WORKSPACE}/.github/common.env \
+            --file 
${GITHUB_WORKSPACE}/.github/compose/ci.remote-execution-cluster.yml logs
+          docker-compose \
+            --env-file ${GITHUB_WORKSPACE}/.github/common.env \
+            --file 
${GITHUB_WORKSPACE}/.github/compose/ci.remote-execution-cluster.yml down
+
   docs:
     runs-on: ubuntu-20.04
     steps:

Reply via email to