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

ctubbsii pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new 04ac8b222d Make use of GitHub Actions environment files (#3024)
04ac8b222d is described below

commit 04ac8b222d866fab2552087cbffa150c2d402a3c
Author: Christopher Tubbs <ctubb...@apache.org>
AuthorDate: Fri Oct 14 16:52:49 2022 -0400

    Make use of GitHub Actions environment files (#3024)
    
    set-output was previously used to create the IT matrix, but it is now
    deprecated. So, this change makes use of the environment files instead.
    
    See 
https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#environment-files
    
    Note: the emitted key=value should not quote the value, or else it will be
    parsed as a String instead of a JSON type. This took me so long to figure
    out, so I'm sharing it here. Also, if you change the name of the output
    property, make sure you update the mapping of the step output to the job
    output to use the new name.
---
 .github/workflows/maven-full-its.yaml |  2 +-
 contrib/ci/it-matrix.sh               | 42 ++++++++++++++++++++++++-----------
 2 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/maven-full-its.yaml 
b/.github/workflows/maven-full-its.yaml
index 047ded2fee..a70eea19a7 100644
--- a/.github/workflows/maven-full-its.yaml
+++ b/.github/workflows/maven-full-its.yaml
@@ -72,7 +72,7 @@ jobs:
     needs: fastbuild
     timeout-minutes: 5
     outputs:
-      matrix: ${{ steps.set-matrix.outputs.matrix }}
+      matrix: ${{ steps.set-matrix.outputs.CUSTOM_MATRIX }}
     runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v3
diff --git a/contrib/ci/it-matrix.sh b/contrib/ci/it-matrix.sh
index f84c93fc57..6e0f809ce6 100755
--- a/contrib/ci/it-matrix.sh
+++ b/contrib/ci/it-matrix.sh
@@ -22,16 +22,32 @@ testsPerJob=15
 if [[ -n $1 && $1 =~ ^[0-9]*$ ]]; then
   testsPerJob=$1
 fi
-echo "Creating matrix (tests per job: $testsPerJob)..."
-
-gitRootDir=$(git rev-parse --show-toplevel)
-# this only works because our test paths don't have spaces; we should keep it 
that way
-count=0
-echo -n '::set-output name=matrix::{"profile":['
-for x in $(find "$gitRootDir" -name '*IT.java' -exec basename '{}' .java \; | 
sort -u | xargs -n "$testsPerJob" | tr ' ' ','); do
-  [[ $count -gt 0 ]] && echo -n ','
-  echo -n "{\"name\":\"task_$count\",\"its\":\"$x\"}"
-  ((count = count + 1))
-done
-echo ']}'
-echo "Finished creating matrix ($count tasks)"
+
+# set these to /dev/null if they aren't defined in the environment
+GITHUB_OUTPUT="${GITHUB_OUTPUT:-/dev/null}"
+GITHUB_STEP_SUMMARY="${GITHUB_STEP_SUMMARY:-/dev/null}"
+
+function createTestMatrix() {
+
+  local count=0
+  local chunk=$1
+  local batch
+  local gitRootDir
+
+  { echo "Creating matrix (tests per job: $chunk)..." | tee -a 
"$GITHUB_STEP_SUMMARY"; } 1>&2
+
+  gitRootDir=$(git rev-parse --show-toplevel)
+
+  # this only works because our test paths don't have spaces; we should keep 
it that way
+  echo -n '{"profile":['
+  for batch in $(find "$gitRootDir" -name '*IT.java' -exec basename '{}' .java 
\; | sort -u | xargs -n "$chunk" | tr ' ' ','); do
+    [[ $count -gt 0 ]] && echo -n ','
+    echo -n '{"name":"task_'"$count"'","its":"'"$batch"'"}'
+    ((count = count + 1))
+  done
+  echo ']}'
+
+  { echo "Finished creating matrix ($count tasks)" | tee 
"$GITHUB_STEP_SUMMARY"; } 1>&2
+}
+
+echo "CUSTOM_MATRIX=$(createTestMatrix "$testsPerJob")" | tee -a 
"$GITHUB_OUTPUT"

Reply via email to