This is an automated email from the ASF dual-hosted git repository. chesnay pushed a commit to branch ci_utils in repository https://gitbox.apache.org/repos/asf/flink-connector-shared-utils.git
The following commit(s) were added to refs/heads/ci_utils by this push: new 9a49516 Add re-usable CI workflow 9a49516 is described below commit 9a4951622e80ecb11d72ede29f75076031cf2845 Author: Chesnay Schepler <ches...@apache.org> AuthorDate: Tue Dec 13 10:53:13 2022 +0100 Add re-usable CI workflow --- .github/workflows/ci.yml | 111 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9080021 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,111 @@ +################################################################################ +# 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. +################################################################################ + +on: + workflow_call: + inputs: + flink_url: + description: "Url to Flink binary." + required: true + type: string + flink_version: + description: "Flink version to test against." + required: true + type: string + cache_flink_binary: + description: "Whether to cache the Flink binary. Should be false for SNAPSHOT URLs, true otherwise." + required: true + type: boolean + timeout_global: + description: "The timeout in minutes for the entire workflow." + required: false + type: number + default: 40 + timeout_test: + description: "The timeout in minutes for the test compile&step." + required: false + type: number + default: 30 + +jobs: + compile_and_test: + runs-on: ubuntu-latest + strategy: + matrix: + jdk: [8, 11] + timeout-minutes: ${{ inputs.timeout_global }} + env: + MVN_COMMON_OPTIONS: -U -B --no-transfer-progress -Dflink.version=${{ inputs.flink_version }} + MVN_CONNECTION_OPTIONS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 + FLINK_CACHE_DIR: "/tmp/cache/flink" + MVN_BUILD_OUTPUT_FILE: "/tmp/mvn_build_output.out" + MVN_VALIDATION_DIR: "/tmp/flink-validation-deployment" + steps: + - run: echo "Running CI pipeline for JDK version ${{ matrix.jdk }}" + + - name: Check out repository code + uses: actions/checkout@v2 + + - name: Set JDK + uses: actions/setup-java@v2 + with: + java-version: ${{ matrix.jdk }} + distribution: 'temurin' + cache: 'maven' + + - name: Set Maven 3.8.6 + uses: stCarolas/setup-maven@v4.2 + with: + maven-version: 3.8.6 + + - name: Create cache dirs + run: mkdir -p ${{ env.FLINK_CACHE_DIR }} + + - name: Cache Flink binary + if: ${{ inputs.cache_flink_binary == 'true' }} + uses: actions/cache@v3 + id: cache-flink + with: + path: ${{ env.FLINK_CACHE_DIR }} + key: ${{ inputs.flink_url }} + + - name: Download Flink binary + working-directory: ${{ env.FLINK_CACHE_DIR }} + if: steps.cache-flink.outputs.cache-hit != 'true' + run: wget -q -c ${{ inputs.flink_url }} -O - | tar -xz + + - name: Compile and test + timeout-minutes: ${{ inputs.timeout_test }} + run: | + set -o pipefail + + mvn clean deploy ${MVN_COMMON_OPTIONS} \ + -DaltDeploymentRepository=validation_repository::default::file:${{ env.MVN_VALIDATION_DIR }} \ + -Dscala-2.12 \ + -Prun-end-to-end-tests -DdistDir=${{ env.FLINK_CACHE_DIR }}/flink-${{ inputs.flink_version }} \ + -Dflink.convergence.phase=install -Pcheck-convergence \ + ${{ env.MVN_CONNECTION_OPTIONS }} \ + -Dlog4j.configurationFile=file://$(pwd)/tools/ci/log4j.properties \ + | tee ${{ env.MVN_BUILD_OUTPUT_FILE }} + + - name: Check licensing + run: | + mvn ${MVN_COMMON_OPTIONS} exec:java@check-license -N \ + -Dexec.args="${{ env.MVN_BUILD_OUTPUT_FILE }} $(pwd) ${{ env.MVN_VALIDATION_DIR }}" \ + ${{ env.MVN_CONNECTION_OPTIONS }} \ + -Dlog4j.configurationFile=file://$(pwd)/tools/ci/log4j.properties \ No newline at end of file