You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/06/08 08:17:51 UTC
[camel] branch main updated: CAMEL-19427: added a tester bot for the core code
This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new f8ff7b47368 CAMEL-19427: added a tester bot for the core code
f8ff7b47368 is described below
commit f8ff7b473689f7300d75b5eefa8f48d89600005f
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Thu Jun 8 10:16:40 2023 +0200
CAMEL-19427: added a tester bot for the core code
---
.github/actions/quick-test/quick-test.sh | 147 +++++++++++++++++++++----------
.github/workflows/component-pr.yaml | 50 ++++++++---
2 files changed, 140 insertions(+), 57 deletions(-)
diff --git a/.github/actions/quick-test/quick-test.sh b/.github/actions/quick-test/quick-test.sh
index e1051cc41d3..5a1ac781dba 100755
--- a/.github/actions/quick-test/quick-test.sh
+++ b/.github/actions/quick-test/quick-test.sh
@@ -34,6 +34,14 @@ testDate=$(date '+%Y-%m-%d-%H%M%S')
logDir=${basedir}/automated-build-log
testHost=$(hostname)
+# How to test this code:
+#
+# Set the GITHUB_STEP_SUMMARY variable and select a commit range containing changes core, components or both:
+# GITHUB_STEP_SUMMARY=$HOME/tmp/step-summary.txt ./.github/actions/quick-test/quick-test.sh beginning end.
+#
+# For instance:
+# GITHUB_STEP_SUMMARY=$HOME/tmp/step-summary.txt ./.github/actions/quick-test/quick-test.sh 74e90da8ec55afe5065d5de495df7fe7a 9e05505d7eaad98c55d67a09cae8aa9505253c72
+
function notifySuccess() {
local component=$1
local total=$2
@@ -52,6 +60,39 @@ function notifyError() {
echo "| ${component} | :x: fail" >> $GITHUB_STEP_SUMMARY
}
+function resetCounters() {
+ current=0
+ failures=0
+ successes=0
+}
+
+function setResultValue() {
+ local value=$1
+ local file=$2
+
+ echo "$1" > "$file"
+}
+
+function setComponentTestResults() {
+ local tested=$1
+ local failures=$2
+ local successes=$3
+
+ setResultValue "$tested" "${logDir}/components-tested"
+ setResultValue "$failures" "${logDir}/components-failures"
+ setResultValue "$successes" "${logDir}/components-successes"
+}
+
+function setCoreTestResults() {
+ local tested=$1
+ local failures=$2
+ local successes=$3
+
+ setResultValue "$tested" "${logDir}/core-tested"
+ setResultValue "$failures" "${logDir}/core-failures"
+ setResultValue "$successes" "${logDir}/core-successes"
+}
+
function runTest() {
local component=$1
local total=$2
@@ -104,62 +145,74 @@ function coreTest() {
find . -iname '*test*.log' -exec mv {} "${logDir}"/ \;
}
-function main() {
- local current=0
- local startCommit=${1:-""}
- local endCommit=${2:-""}
-
- mkdir -p "${logDir}"
+function testComponents() {
+ local current=0
+ local startCommit=${1:-""}
+ local endCommit=${2:-""}
- echo "Searching for camel core changes"
- local core=$(git diff "${startCommit}..${endCommit}" --name-only --pretty=format:"" | grep -e '^core' | grep -v -e '^$' | cut -d / -f 1 | uniq | sort)
- if [[ ! -z "${core}" ]] ; then
- coreTest
- fi
+ mkdir -p "${logDir}"
- echo "Searching for modified components"
- local components=$(git diff "${startCommit}..${endCommit}" --name-only --pretty=format:"" | grep -e '^components' | grep -v "camel-aws" | grep -v -e '^$' | cut -d / -f 1-2 | uniq | sort)
- local componentsAws=$(git diff "${startCommit}..${endCommit}" --name-only --pretty=format:"" | grep -e '^components' | grep "camel-aws" | grep -v -e '^$' | cut -d / -f 1-3 | uniq | sort)
+ echo "Searching for modified components"
+ local components=$(git diff "${startCommit}..${endCommit}" --name-only --pretty=format:"" | grep -e '^components' | grep -v "camel-aws" | grep -v -e '^$' | cut -d / -f 1-2 | uniq | sort)
+ local componentsAws=$(git diff "${startCommit}..${endCommit}" --name-only --pretty=format:"" | grep -e '^components' | grep "camel-aws" | grep -v -e '^$' | cut -d / -f 1-3 | uniq | sort)
- if [[ -z "${components}" ]] ; then
- components="${componentsAws}"
- else
- components=$(printf '%s\n%s' "${components}" "${componentsAws}")
- fi
+ if [[ -z "${components}" ]] ; then
+ components="${componentsAws}"
+ else
+ components=$(printf '%s\n%s' "${components}" "${componentsAws}")
+ fi
- local total=$(echo "${components}" | grep -v -e '^$' | wc -l)
+ local total=$(echo "${components}" | grep -v -e '^$' | wc -l)
- echo "${total}" > "${logDir}/total"
- if [[ ${total} -eq 0 ]]; then
- echo "0" > "${logDir}/tested"
- echo "0" > "${logDir}/failures"
- echo "0" > "${logDir}/successes"
- exit 0
- else
- if [[ ${total} -gt ${maxNumberOfTestableComponents} ]]; then
- echo "0" > "${logDir}/tested"
- echo "0" > "${logDir}/failures"
- echo "0" > "${logDir}/successes"
+ echo "${total}" > "${logDir}/components-total"
+ if [[ ${total} -eq 0 ]]; then
+ setComponentTestResults 0 0 0
exit 0
+ else
+ if [[ ${total} -gt ${maxNumberOfTestableComponents} ]]; then
+ setComponentTestResults 0 0 0
+ exit 0
+ fi
fi
- fi
- echo "It will test the following ${total} components:"
- echo "${components}"
+ echo "It will test the following ${total} components:"
+ echo "${components}"
- echo "" >> $GITHUB_STEP_SUMMARY
- echo "| Component | Result |" >> $GITHUB_STEP_SUMMARY
- echo "| --- | --- |" >> $GITHUB_STEP_SUMMARY
- current=0
- for component in $(echo $components); do
- ((current++))
- componentTest "${component}" "${total}" "${current}"
- done
-
- echo "${total}" > "${logDir}/tested"
- echo "${failures}" > "${logDir}/failures"
- echo "${successes}" > "${logDir}/successes"
- exit "${failures}"
+ echo "" >> $GITHUB_STEP_SUMMARY
+ echo "| Component | Result |" >> $GITHUB_STEP_SUMMARY
+ echo "| --- | --- |" >> $GITHUB_STEP_SUMMARY
+
+ resetCounters
+ for component in $(echo $components); do
+ ((current++))
+ componentTest "${component}" "${total}" "${current}"
+ done
+
+ setComponentTestResults "$total" "$failures" "$successes"
+
+ exit "${failures}"
+}
+
+function testCore() {
+ local current=0
+ local startCommit=${1:-""}
+ local endCommit=${2:-""}
+
+ mkdir -p "${logDir}"
+ resetCounters
+
+ setCoreTestResults 0 0 0
+ echo "Searching for camel core changes"
+ local core=$(git diff "${startCommit}..${endCommit}" --name-only --pretty=format:"" | grep -e '^core' | grep -v -e '^$' | cut -d / -f 1 | uniq | sort)
+ if [[ ! -z "${core}" ]] ; then
+ coreTest
+ setCoreTestResults "1" "$failures" "$successes"
+ fi
+}
+
+function main() {
+ testCore "$@"
+ testComponents "$@"
}
main "$@"
diff --git a/.github/workflows/component-pr.yaml b/.github/workflows/component-pr.yaml
index 869419395a7..1680b077baa 100644
--- a/.github/workflows/component-pr.yaml
+++ b/.github/workflows/component-pr.yaml
@@ -100,29 +100,59 @@ jobs:
script: |
let fs = require('fs');
let issue_number = Number(fs.readFileSync('./pr_number'));
- let total = Number(fs.readFileSync('./total'));
- let tested = Number(fs.readFileSync('./tested'));
- let failures = Number(fs.readFileSync('./failures'));
- let successes = Number(fs.readFileSync('./successes'));
+ let componentsTotal = Number(fs.readFileSync('./components-total'));
+ let componentsTested = Number(fs.readFileSync('./components-tested'));
+ let componentsFailures = Number(fs.readFileSync('./components-failures'));
+ let componentsSuccesses = Number(fs.readFileSync('./components-successes'));
var message = ""
- if (tested === 0) {
- if (total === 0) {
+ if (componentsTested === 0) {
+ if (componentsTotal === 0) {
message = ":no_entry_sign: There are (likely) no components to be tested in this PR"
} else {
- if (total > 20) {
- message = `:leftwards_arrow_with_hook: There are either **too many** changes to be tested in this PR or the code **needs be rebased**: (${total} components likely to be affected)`
+ if (componentsTotal > 20) {
+ message = `:leftwards_arrow_with_hook: There are either **too many** changes to be tested in this PR or the code **needs be rebased**: (${componentsTotal} components likely to be affected)`
}
}
} else {
- message = `### Components tested:
+ message = `### Components test results:
| Total | Tested | Failed :x: | Passed :white_check_mark: |
| --- | --- | --- | --- |
- | ${total} | ${tested} | ${failures} | ${successes} |`
+ | ${componentsTotal} | ${componentsTested} | ${componentsFailures} | ${componentsSuccesses} |`
}
+ await github.rest.issues.createComment({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: issue_number,
+ body: message
+ });
+ - uses: actions/github-script@v6
+ if: |
+ github.event_name == 'workflow_run'
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ script: |
+ let fs = require('fs');
+ let issue_number = Number(fs.readFileSync('./pr_number'));
+ let coreTested = Number(fs.readFileSync('./core-tested'));
+ let coreFailures = Number(fs.readFileSync('./core-failures'));
+ let coreSuccesses = Number(fs.readFileSync('./core-successes'));
+
+ var message = ""
+
+ if (coreTested === 0) {
+ message = ":no_entry_sign: There are (likely) no changes in core core to be tested in this PR"
+ } else {
+ message = `### Core test results:
+
+ | Tested | Failed :x: | Passed :white_check_mark: |
+ | --- | --- | --- |
+ | ${coreTested} | ${coreFailures} | ${coreSuccesses} |`
+ }
+
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,