From e92ab6e1cfeb800b0aec57c6ee166ab502b3971f Mon Sep 17 00:00:00 2001 From: Marco Collovati Date: Mon, 1 Jan 2024 16:54:28 +0100 Subject: [PATCH] chore(actions): add workflow to test latest versions --- .../workflows/validation-latest-versions.yml | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 .github/workflows/validation-latest-versions.yml diff --git a/.github/workflows/validation-latest-versions.yml b/.github/workflows/validation-latest-versions.yml new file mode 100644 index 00000000..b0b87695 --- /dev/null +++ b/.github/workflows/validation-latest-versions.yml @@ -0,0 +1,98 @@ +name: vertx-vaadin latest versions validation +on: + workflow_dispatch: + pull_request: +# schedule: +# - cron: '0 22 * * *' +env: + JAVA_VERSION: 11 +jobs: + build-matrix: + name: Build matrix + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.matrix.outputs.matrix }} + steps: + - id: matrix + run: | + branches=(development) + matrix=$(for branch in $branches; do \ + git show $branch:pom.xml | grep -E '<(vaadin\.(platform|flow)|vertx)\.version>' \ + | sed -E 's/.*(platform|flow|vertx).*>(([0-9]+\.[0-9]+)\..*)<.*/"\1": "\2","\1Minor":"\3"/g' | paste -s -d',' \ + | awk --assign BRANCH=$branch '{print "{\"branch\":\""BRANCH"\","$0"}"}'; \ + done | paste -s -d',' | awk '{print "["$i"]"}' \ + | jq '[ .[] | {branch,versions:{vertx,vaadin:.platform,flow:flow},search:{vertx,vaadin:(.platformMinor+".*"),flow:(flowMinor+".*")}},{branch,versions:{vertx:.vertx,vaadin:.platform,flow:.flow},search:{vertx:(.vertxMinor+".*"),vaadin:.platform,flow:.flow}} ]') + echo "matrix=${matrix}" >> "$GITHUB_OUTPUT" + build: + name: Vert.x ${{ matrix.versions.vertx }}, Vaadin ${{ matrix.versions.vaadin }}, Flow ${{ matrix.versions.flow }} + needs: [build-matrix] + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }} + timeout-minutes: 30 + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ matrix.branch }} + - name: Set up Java + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: 'temurin' + cache: maven + - uses: browser-actions/setup-chrome@latest + id: setup-chrome + if: ${{ !vars.QH_DISABLE_CHROME_INSTALL }} + with: + chrome-version: stable + - name: Set versions + run: | + set -x -e -o pipefail + vertx=$(curl "https://search.maven.org/solrsearch/select?q=g:io.vertx+AND+a:vertx-core+AND+v:${{ matrix.search.vertx}}&core=gav&rows=1&wt=json" |jq -r '.response.docs | .[].v) + vaadin=$(curl "https://search.maven.org/solrsearch/select?q=g:com.vaadin+AND+a:vaadin-bom+AND+v:${{ matrix.search.vaadin}}&core=gav&rows=1&wt=json" |jq -r '.response.docs | .[].v) + flow=$(curl "https://search.maven.org/solrsearch/select?q=g:com.vaadin+AND+a:flow-server+AND+v:${{ matrix.search.flow }}&core=gav&rows=1&wt=json" |jq -r '.response.docs | .[].v) + mvn -N -ntp versions:set-property -Dproperty=vertx.version -DnewVersion="$vertx" + mvn -N -ntp versions:set-property -Dproperty=vaadin.platform.version -DnewVersion="$vaadin" + mvn -N -ntp versions:set-property -Dproperty=vaadin.flow.version -DnewVersion="$flow" + - name: Build + run: | + set -x -e -o pipefail + mvn -V -e -B -ntp -DskipTests -DskipVertxRun=true install -Pflow-ui-tests + - name: Test + env: + VAADIN_OFFLINE_KEY: ${{ secrets.VAADIN_OFFLINE_KEY }} + run: | + set -x -e -o pipefail + mvn -V -e -B -ntp verify -Dmaven.javadoc.skip=false -DtrimStackTrace=false + - name: UI Test 1 + env: + VAADIN_OFFLINE_KEY: ${{ secrets.VAADIN_OFFLINE_KEY }} + run: | + set -x -e -o pipefail + cd $GITHUB_WORKSPACE/vertx-vaadin-tests + rm -rf frontend/generated + mvn -V -e -B -ntp verify -Dmaven.javadoc.skip=false -pl=:vertx-vaadin-test-root-context -DtrimStackTrace=false \ + -Dwebdriver.chrome.driver=$(which chromedriver) \ + -Duitest.chrome-version=$CHROME_VERSION + - name: UI Test 2 + env: + VAADIN_OFFLINE_KEY: ${{ secrets.VAADIN_OFFLINE_KEY }} + run: | + set -x -e -o pipefail + cd $GITHUB_WORKSPACE/vertx-vaadin-tests/ + mvn -V -e -B -ntp verify -DtrimStackTrace=false -pl=-:vertx-vaadin-test-root-context -Dwebdriver.chrome.driver=$(which chromedriver) + - name: Package test output files + if: ${{ failure() || success() }} + run: find . -name surefire-reports -o -name failsafe-reports -o -name verticle.log | tar -czf tests-report-${{ matrix.branch }}_vertx-${{ matrix.vertx }}_vaadin-${{ matrix.vaadin }}_flow-${{ matrix.flow }}.tgz -T - + - uses: actions/upload-artifact@v3 + if: ${{ failure() || success() }} + with: + name: tests-output-${{ matrix.branch }}_vertx-${{ matrix.vertx }}_vaadin-${{ matrix.vaadin }}_flow-${{ matrix.flow }} + path: tests-report-*.tgz + - name: Publish Unit Test Results + if: ${{ failure() || success() }} + uses: EnricoMi/publish-unit-test-result-action@v2 + with: + junit_files: "**/target/*-reports/TEST*.xml"