diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index 506aa9dff..1966010b3 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -19,10 +19,14 @@ name: "Build Plugin Agent" description: "Build Plugin Agent before running a plugin test" inputs: - java_version: - description: "The Java version under which this test case will run" + base_image_java: + description: "The Java Docker image under which this test case will run" required: false - default: "jdk8" + default: "adoptopenjdk/openjdk8:alpine" + base_image_tomcat: + description: "The Tomcat Docker image under which this test case will run" + required: false + default: "tomcat:8.5-jdk8-openjdk" runs: using: "composite" steps: @@ -58,14 +62,24 @@ runs: run: | echo "::group::Build Docker Image" # Retry one more time due to frequent "maven connection reset" - ./mvnw --batch-mode -f test/plugin/pom.xml clean package -Dmaven.test.skip -P${{ inputs.java_version }} || \ - ./mvnw --batch-mode -f test/plugin/pom.xml clean package -Dmaven.test.skip -P${{ inputs.java_version }} + ./mvnw --batch-mode -f test/plugin/pom.xml \ + -Dmaven.test.skip \ + -Dbase_image_java=${{ inputs.base_image_java }} \ + -Dbase_image_tomcat=${{ inputs.base_image_tomcat }} \ + -Dcontainer_image_version=1.0.0 \ + clean package || \ + ./mvnw --batch-mode -f test/plugin/pom.xml \ + -Dmaven.test.skip \ + -Dbase_image_java=${{ inputs.base_image_java }} \ + -Dbase_image_tomcat=${{ inputs.base_image_tomcat }} \ + -Dcontainer_image_version=1.0.0 \ + clean package echo "::endgroup::" echo "::group::Save Docker Image" mkdir -p test-containers - docker save -o test-containers/skywalking-agent-test-jvm-${{ inputs.java_version }}-1.0.0.tgz skywalking/agent-test-jvm:${{ inputs.java_version }}-1.0.0 - docker save -o test-containers/skywalking-agent-test-tomcat-${{ inputs.java_version }}-1.0.0.tgz skywalking/agent-test-tomcat:${{ inputs.java_version }}-1.0.0 + docker save -o test-containers/skywalking-agent-test-jvm-1.0.0.tgz skywalking/agent-test-jvm:1.0.0 + docker save -o test-containers/skywalking-agent-test-tomcat-1.0.0.tgz skywalking/agent-test-tomcat:1.0.0 echo "::endgroup::" - uses: actions/upload-artifact@v2 name: Upload Test Containers diff --git a/.github/actions/run/action.yml b/.github/actions/run/action.yml index b264c3773..57b711de0 100644 --- a/.github/actions/run/action.yml +++ b/.github/actions/run/action.yml @@ -22,10 +22,6 @@ inputs: test_case: description: "The plugin test name" required: true - java_version: - description: "The Java version under which this test case will run" - required: false - default: "jdk8" runs: using: "composite" steps: @@ -39,11 +35,11 @@ runs: - name: Load Test Containers shell: bash run: | - if ls test-containers/skywalking-agent-test-jvm-${{ inputs.java_version }}-1.0.0.tgz; then - docker load -i test-containers/skywalking-agent-test-jvm-${{ inputs.java_version }}-1.0.0.tgz + if ls test-containers/skywalking-agent-test-jvm-1.0.0.tgz; then + docker load -i test-containers/skywalking-agent-test-jvm-1.0.0.tgz fi - if ls test-containers/skywalking-agent-test-tomcat-${{ inputs.java_version }}-1.0.0.tgz; then - docker load -i test-containers/skywalking-agent-test-tomcat-${{ inputs.java_version }}-1.0.0.tgz + if ls test-containers/skywalking-agent-test-tomcat-1.0.0.tgz; then + docker load -i test-containers/skywalking-agent-test-tomcat-1.0.0.tgz fi - name: Cache local Maven repository uses: actions/cache@v2 diff --git a/.github/workflows/plugins-jdk14-test.0.yaml b/.github/workflows/plugins-jdk14-test.0.yaml index 88d693c34..90ab78d0c 100644 --- a/.github/workflows/plugins-jdk14-test.0.yaml +++ b/.github/workflows/plugins-jdk14-test.0.yaml @@ -47,7 +47,8 @@ jobs: - name: Build uses: ./.github/actions/build with: - java_version: jdk14 + base_image_java: adoptopenjdk/openjdk14:alpine + base_image_tomcat: tomcat:8.5-jdk14-openjdk test: needs: [ build ] @@ -70,4 +71,4 @@ jobs: uses: ./.github/actions/run with: test_case: ${{ matrix.case }} - java_version: jdk14 + diff --git a/.github/workflows/plugins-jdk17-test.0.yaml b/.github/workflows/plugins-jdk17-test.0.yaml index 0d025dce6..d5bd5db8d 100644 --- a/.github/workflows/plugins-jdk17-test.0.yaml +++ b/.github/workflows/plugins-jdk17-test.0.yaml @@ -47,7 +47,8 @@ jobs: - name: Build uses: ./.github/actions/build with: - java_version: jdk17 + base_image_java: eclipse-temurin:17-alpine + base_image_tomcat: tomcat:8.5-jdk17-openjdk test: needs: [ build ] @@ -70,4 +71,3 @@ jobs: uses: ./.github/actions/run with: test_case: ${{ matrix.case }} - java_version: jdk17 diff --git a/CHANGES.md b/CHANGES.md index aec6f186a..9f921926c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -20,6 +20,7 @@ Release Notes. * Add vertx-core-4.x plugin. * Renamed graphql-12.x-plugin to graphql-12.x-15.x-plugin and graphql-12.x-scenario to graphql-12.x-15.x-scenario. * Add graphql-16plus plugin. +* [Test] Support to configure plugin test base images. #### Documentation * Add link about java agent injector. diff --git a/docs/en/setup/service-agent/java-agent/Plugin-test.md b/docs/en/setup/service-agent/java-agent/Plugin-test.md index 84769ba2a..39453b60e 100644 --- a/docs/en/setup/service-agent/java-agent/Plugin-test.md +++ b/docs/en/setup/service-agent/java-agent/Plugin-test.md @@ -20,7 +20,8 @@ The test framework provides `JVM-container` and `Tomcat-container` base images i ### JVM-container Image Introduction -[JVM-container](../../../../../test/plugin/containers/jvm-container) uses `adoptopenjdk/openjdk8:alpine-jre` as the base image. `JVM-container` supports JDK14 and JDK17 as well, which inherits `adoptopenjdk/openjdk8:alpine-jre` and `eclipse-temurin:17-alpine`. +[JVM-container](../../../../../test/plugin/containers/jvm-container) uses `adoptopenjdk/openjdk8:alpine-jre` as the base image. `JVM-container` supports JDK14 and JDK17 as well in CI, which inherits `adoptopenjdk/openjdk8:alpine-jre` and `eclipse-temurin:17-alpine`. +It is supported to custom the base Java docker image by specify `base_image_java`. The test case project must be packaged as `project-name.zip`, including `startup.sh` and uber jar, by using `mvn clean package`. Take the following test projects as examples: @@ -31,7 +32,8 @@ Take the following test projects as examples: ### Tomcat-container Image Introduction -[Tomcat-container](../../../../../test/plugin/containers/tomcat-container) uses `tomcat:8.5-jdk8-openjdk`, `tomcat:8.5-jdk14-openjdk` or `tomcat:8.5-jdk17-openjdk` as the base image. +[Tomcat-container](../../../../../test/plugin/containers/tomcat-container) uses `tomcat:8.5-jdk8-openjdk`, `tomcat:8.5-jdk14-openjdk`, `tomcat:8.5-jdk17-openjdk` as the base image. +It is supported to custom the base Tomcat docker image by specify `base_image_tomcat`. The test case project must be packaged as `project-name.war` by using `mvn package`. Take the following test project as an example diff --git a/test/plugin/containers/jvm-container/pom.xml b/test/plugin/containers/jvm-container/pom.xml index cc1297eaa..bb8fdeb60 100644 --- a/test/plugin/containers/jvm-container/pom.xml +++ b/test/plugin/containers/jvm-container/pom.xml @@ -40,9 +40,9 @@ - skywalking/agent-test-jvm:${java.version}-${project.version} + skywalking/agent-test-jvm:${container_image_version} - ${base.image.java} + ${base_image_java} /usr/local/skywalking/scenario dir @@ -71,32 +71,4 @@ - - - - jdk8 - - true - - - adoptopenjdk/openjdk8:alpine - jdk8 - - - - jdk14 - - adoptopenjdk/openjdk14:alpine - jdk14 - - - - jdk17 - - eclipse-temurin:17-alpine - jdk17 - - - - diff --git a/test/plugin/containers/tomcat-container/pom.xml b/test/plugin/containers/tomcat-container/pom.xml index de77c929f..afeaf3c6b 100644 --- a/test/plugin/containers/tomcat-container/pom.xml +++ b/test/plugin/containers/tomcat-container/pom.xml @@ -40,9 +40,9 @@ - skywalking/agent-test-tomcat:${java.version}-${project.version} + skywalking/agent-test-tomcat:${container_image_version} - ${base.image.tomcat} + ${base_image_tomcat} /usr/local/skywalking/scenario "" @@ -74,31 +74,4 @@ - - - - jdk8 - - true - - - tomcat:8.5-jdk8-openjdk - jdk8 - - - - jdk14 - - tomcat:8.5-jdk14-openjdk - jdk14 - - - - jdk17 - - tomcat:8.5-jdk17-openjdk - jdk17 - - - \ No newline at end of file diff --git a/test/plugin/run.sh b/test/plugin/run.sh index 3e5b7d45e..8056ec65e 100755 --- a/test/plugin/run.sh +++ b/test/plugin/run.sh @@ -30,7 +30,9 @@ jacoco_home="${home}"/../jacoco scenarios_home="${home}/scenarios" num_of_testcases= -image_version="jdk8-1.0.0" +container_image_version="1.0.0" +base_image_java="adoptopenjdk/openjdk8:alpine" +base_image_tomcat="tomcat:8.5-jdk8-openjdk" jacoco_version="${JACOCO_VERSION:-0.8.6}" os="$(uname)" @@ -40,6 +42,9 @@ print_help() { echo -e "\t-f, --force_build \t\t do force to build Plugin-Test tools and images" echo -e "\t--cleanup, \t\t\t remove the related images and directories" echo -e "\t--debug, \t\t\t to save the log files and actualData.yaml" + echo -e "\t--container_image_version, \t specify the container docker image version. default 1.0.0" + echo -e "\t--base_image_java, \t\t specify the base java image name. the default is \"adoptopenjdk/openjdk8:alpine\"" + echo -e "\t--base_image_tomcat, \t\t specify the base tomcat image name. the default is \"tomcat:8.5-jdk8-openjdk\"" } parse_commandline() { @@ -56,12 +61,26 @@ parse_commandline() { --debug) debug_mode="on"; ;; - --image_version) - image_version="$2" + --container_image_version) + container_image_version="$2" shift ;; - --image_version=*) - image_version="${_key##--image_version=}" + --container_image_version=*) + container_image_version="${_key##--container_image_version=}" + ;; + --base_image_java) + base_image_java="$2" + shift + ;; + --base_image_java=*) + base_image_java="${_key##--base_image_java=}" + ;; + --base_image_tomcat) + base_image_tomcat="$2" + shift + ;; + --base_image_tomcat=*) + base_image_tomcat="${_key##--base_image_tomcat=}" ;; -h|--help) print_help @@ -157,8 +176,13 @@ sed -i '' '/<\/sourceDirectories>/i\'$'\n''scenarios\/'"$scenar sed -i '/<\/sourceDirectories>/i scenarios\/'"$scenario_name"'<\/sourceDirectory>' ./pom.xml if [[ "$force_build" == "on" ]]; then - profile=$(echo ${image_version} | grep -oE "jdk[0-9]+") - ${mvnw} --batch-mode -f ${home}/pom.xml clean package -DskipTests -P${profile} + ${mvnw} --batch-mode \ + -f ${home}/pom.xml \ + -DskipTests \ + -Dbase_image_java=${base_image_java} \ + -Dbase_image_tomcat=${base_image_tomcat} \ + -Dcontainer_image_version=${container_image_version} \ + clean package fi # remove scenario_name into plugin/pom.xml sed -i '' '/scenarios\/'"$scenario_name"'<\/sourceDirectory>/d' ./pom.xml \ @@ -224,7 +248,7 @@ do -Dagent.dir=${_agent_home} \ -Djacoco.home=${jacoco_home} \ -Ddebug.mode=${debug_mode} \ - -Ddocker.image.version=${image_version} \ + -Ddocker.image.version=${container_image_version} \ ${plugin_runner_helper} 1>${case_work_logs_dir}/helper.log [[ $? -ne 0 ]] && exitWithMessage "${testcase_name}, generate script failure!"