You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by dg...@apache.org on 2023/01/25 02:30:38 UTC

[openwhisk-runtime-go] branch master updated: Define GitHub action for build/test/publish (#181)

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

dgrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-runtime-go.git


The following commit(s) were added to refs/heads/master by this push:
     new 2b05119  Define GitHub action for build/test/publish  (#181)
2b05119 is described below

commit 2b0511977194c942ab730e369c62f9b95a1e9b7a
Author: David Grove <dg...@users.noreply.github.com>
AuthorDate: Tue Jan 24 21:30:32 2023 -0500

    Define GitHub action for build/test/publish  (#181)
---
 .github/workflows/ci.yaml                          | 108 +++++++++++++++++++++
 .../ActionLoopGoContainerTests.scala               |   3 +-
 2 files changed, 110 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 0000000..0357d58
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,108 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+name: Continuous Integration
+
+on:
+  push:
+    branches: [ master ]
+    tags: [ '*' ]
+  pull_request:
+    branches: [ master ]
+    types: [ opened, synchronize, reopened ]
+  schedule:
+    - cron: '30 1 * * 1,3,5'
+
+permissions: read-all
+
+jobs:
+  ci:
+    runs-on: ubuntu-22.04
+    env:
+      PUSH_NIGHTLY: ${{ (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/master' }}
+      PUSH_RELEASE: ${{ github.event_name == 'push' && github.ref_type == 'tag' }}
+    steps:
+      # Checkout just this repo and run scanCode before we do anything else
+      - name: Checkout runtime repo
+        uses: actions/checkout@v3
+        with:
+          path: runtime
+      - name: Scan Code
+        uses: apache/openwhisk-utilities/scancode@master
+
+      # Install core OpenWhisk artifacts needed to build/test anything else
+      - name: Checkout OpenWhisk core repo
+        uses: actions/checkout@v3
+        with:
+          repository: apache/openwhisk
+          path: core
+      - name: Setup Java
+        uses: actions/setup-java@v3
+        with:
+          distribution: 'temurin'
+          java-version: '11'
+      - name: Compile and Install Core OpenWhisk
+        working-directory: core
+        run: |
+          ./gradlew :tests:compileTestScala
+          ./gradlew install
+
+      # Build this repository
+      - name: Build Runtime
+        working-directory: runtime
+        run: |
+          ./gradlew distDocker
+
+      # Test this repository
+      - name: Test Runtime
+        working-directory: runtime
+        run: |
+          ./gradlew :tests:checkScalafmtAll
+          ./gradlew :tests:test
+
+      # Conditionally publish runtime images to DockerHub
+      # Important: naming convention for release tags is runtime@version
+      # For this repo expected tags:
+      #   actionloop@X.Y.Z
+      #   golang1.N@X.Y.Z
+      - name: Docker Login
+        if: ${{ env.PUSH_NIGHTLY  == 'true' || env.PUSH_RELEASE == 'true' }}
+        uses: docker/login-action@v2
+        with:
+          username: ${{ secrets.DOCKERHUB_USER_OPENWHISK }}
+          password: ${{ secrets.DOCKERHUB_TOKEN_OPENWHISK }}
+      - name: Push Nightly Images
+        if: ${{ env.PUSH_NIGHTLY  == 'true' }}
+        working-directory: runtime
+        run: |
+          SHORT_COMMIT=$(git rev-parse --short "$GITHUB_SHA")
+          ./gradlew :actionloop:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
+          ./gradlew :actionloop:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
+          ./gradlew :golang1.17:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
+          ./gradlew :golang1.17:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
+          ./gradlew :golang1.18:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
+          ./gradlew :golang1.18:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
+          ./gradlew :golang1.19:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly
+          ./gradlew :golang1.19:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT
+      - name: Push Release Images
+        if: ${{ env.PUSH_RELEASE == 'true' }}
+        working-directory: runtime
+        run: |
+          RUNTIME_NAME=${GITHUB_REF_NAME%@*}
+          IMAGE_TAG=${GITHUB_REF_NAME##*@}
+          ./gradlew :core:$RUNTIME_NAME:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$IMAGE_TAG
diff --git a/tests/src/test/scala/runtime/actionContainers/ActionLoopGoContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/ActionLoopGoContainerTests.scala
index 6344d94..b77ccfc 100644
--- a/tests/src/test/scala/runtime/actionContainers/ActionLoopGoContainerTests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/ActionLoopGoContainerTests.scala
@@ -177,7 +177,8 @@ abstract class ActionLoopGoContainerTests
       ))
     withActionLoopContainer { c =>
       c.init(initPayload(src))._1 shouldBe (200)
-      val result = c.runForJsArray(runPayload(JsArray(JsString("a"), JsString("b"))))
+      val result =
+        c.runForJsArray(runPayload(JsArray(JsString("a"), JsString("b"))))
       result._1 shouldBe (200)
       result._2 shouldBe Some(JsArray(JsString("a"), JsString("b")))
     }