From 1a1b89274a44b9a62a1d41c9e48744066d943a0d Mon Sep 17 00:00:00 2001 From: Jonny Carter Date: Thu, 5 Dec 2024 15:50:03 -0600 Subject: [PATCH] Move workflows file and add many more workflows from CircleCI --- .github/workflows/check.yml | 72 ------ .github/workflows/test-workflows.yml | 362 +++++++++++++++++++++++++++ 2 files changed, 362 insertions(+), 72 deletions(-) delete mode 100644 .github/workflows/check.yml create mode 100644 .github/workflows/test-workflows.yml diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml deleted file mode 100644 index 396c408db..000000000 --- a/.github/workflows/check.yml +++ /dev/null @@ -1,72 +0,0 @@ -# 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. - -name: CI - -on: - push: - branches: - - master - - task/213-github-actions-for-ci - pull_request: - -jobs: - check: - runs-on: ubuntu-latest - container: - image: eclipse-temurin:21-jdk - env: - GRADLE_OPTS: -Xmx1024m -XX:MaxMetaspaceSize=256m - GRADLE_USER_HOME: .gradle-home - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Restore Gradle cache - uses: actions/cache@v4 - with: - path: .gradle-home - key: gradle-home-check-${{ github.ref }} - restore-keys: | - gradle-home-check-${{ github.ref }} - gradle-home-check-master - gradle-home-check - - - name: Run Gradle tasks - run: ./gradlew --no-daemon --max-workers 4 --parallel -Pci module:check internal:check integration:check doc:site:check --continue - - - name: Copy all test results to a directory - run: | - mkdir -p ~/test-results/junit/ - find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/test-results/junit/ \; - - - name: Store test results - if: success() || failure() - uses: actions/upload-artifact@v4 - with: - name: test-results - path: ~/test-results/ - - - name: Store build reports - uses: actions/upload-artifact@v4 - with: - name: build-reports - path: build/reports - - - name: Save Gradle cache - uses: actions/cache@v4 - with: - path: .gradle-home - key: gradle-home-check-${{ github.ref }}-${{ github.run_id }} diff --git a/.github/workflows/test-workflows.yml b/.github/workflows/test-workflows.yml new file mode 100644 index 000000000..822112040 --- /dev/null +++ b/.github/workflows/test-workflows.yml @@ -0,0 +1,362 @@ +# 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. + +name: CI + +on: + push: + branches: + - master + - task/213-github-actions-for-ci + pull_request: + +jobs: + check: + runs-on: ubuntu-latest + container: + image: eclipse-temurin:21-jdk + env: + GRADLE_OPTS: -Xmx1024m -XX:MaxMetaspaceSize=256m + GRADLE_USER_HOME: .gradle-home + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Restore Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-check-${{ github.ref }} + restore-keys: | + gradle-home-check-${{ github.ref }} + gradle-home-check-master + gradle-home-check + + - name: Run Gradle tasks + run: ./gradlew --no-daemon --max-workers 4 --parallel -Pci module:check internal:check integration:check doc:site:check --continue + + - name: Copy all test results to a directory + run: | + mkdir -p ~/test-results/junit/ + find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/test-results/junit/ \; + + - name: Store test results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: ~/test-results/ + + - name: Store build reports + uses: actions/upload-artifact@v4 + with: + name: build-reports + path: build/reports + + - name: Save Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-check-${{ github.ref }}-${{ github.run_id }} + dockerised-cross-browser: + runs-on: ubuntu-latest + container: + image: eclipse-temurin:21-jdk + env: + GRADLE_OPTS: -Xmx1024m -XX:MaxMetaspaceSize=256m + GRADLE_USER_HOME: .gradle-home + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Docker + uses: docker/setup-buildx-action@v4 + + - name: Restore Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-dockerised-crossbrowser-${{ github.ref }} + restore-keys: | + gradle-home-dockerised-crossbrowser-${{ github.ref }} + gradle-home-dockerised-crossbrowser-master + gradle-home-dockerised-crossbrowser + + - name: Run Gradle tasks + run: ./gradlew --no-daemon --max-workers 4 --parallel -Pci allDockerisedCrossBrowserTests + + - name: Copy all test results to a directory + run: | + mkdir -p ~/test-results/junit/ + find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/test-results/junit/ \; + + - name: Store test results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: ~/test-results/ + + - name: Store build reports + uses: actions/upload-artifact@v4 + with: + name: build-reports + path: build/reports + + - name: Save Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-dockerised-crossbrowser-${{ github.ref }}-${{ github.run_id }} + manual: + runs-on: ubuntu-latest + container: + image: selenium/standalone-firefox + env: + GRADLE_OPTS: -Xmx1024m -XX:MaxMetaspaceSize=256m + GRADLE_USER_HOME: .gradle-home + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Docker + uses: docker/setup-buildx-action@v4 + + - name: Restore Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-manual-machine-${{ github.ref }} + restore-keys: | + gradle-home-manual-machine-${{ github.ref }} + gradle-home-manual-machine-master + gradle-home-manual-machine + + - name: Run Gradle tasks + run: | + Xvfb :99 -screen 1 1280x1024x16 -nolisten tcp > /dev/null 2>&1 & + ./gradlew --no-daemon --max-workers 4 --parallel -Pci :doc:manual-snippets:check :doc:manual-snippets:fixtures:check :doc:manual-snippets:real-browser:check :doc:manual:build :doc:asciidoctor-extension:check + + - name: Copy all test results to a directory + run: | + mkdir -p ~/test-results/junit/ + find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/test-results/junit/ \; + + - name: Store test results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: ~/test-results/ + + - name: Store build reports + uses: actions/upload-artifact@v4 + with: + name: build-reports + path: build/reports + + - name: Save Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-manual-machine-${{ github.ref }}-${{ github.run_id }} + local-cross-browser: + runs-on: ubuntu-latest + container: + image: selenium/standalone-chromium + env: + GRADLE_OPTS: -Xmx1024m -XX:MaxMetaspaceSize=256m + GRADLE_USER_HOME: .gradle-home + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Restore Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-local-crossbrowser-${{ github.ref }} + restore-keys: | + gradle-home-local-crossbrowser-${{ github.ref }} + gradle-home-local-crossbrowser-master + gradle-home-local-crossbrowser + + - name: Run Gradle tasks + run: ./gradlew --no-daemon --max-workers 4 --parallel -p module -Pci localChromeTest + + - name: Copy all test results to a directory + run: | + mkdir -p ~/test-results/junit/ + find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/test-results/junit/ \; + + - name: Store test results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: ~/test-results/ + + - name: Store build reports + uses: actions/upload-artifact@v4 + with: + name: build-reports + path: build/reports + + - name: Save Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-local-crossbrowser-${{ github.ref }}-${{ github.run_id }} + saucelabs: + runs-on: ubuntu-latest + container: + image: eclipse-temurin:21-jdk + env: + GRADLE_OPTS: -Xmx1024m -XX:MaxMetaspaceSize=256m + GRADLE_USER_HOME: .gradle-home + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Restore Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-saucelabs-${{ github.ref }} + restore-keys: | + gradle-home-saucelabs-${{ github.ref }} + gradle-home-saucelabs-master + gradle-home-saucelabs + + - name: Run Gradle tasks + run: ./gradlew --no-daemon -Pci --max-workers 5 --parallel allSauceLabsTests + + - name: Copy all test results to a directory + run: | + mkdir -p ~/test-results/junit/ + find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/test-results/junit/ \; + + - name: Store test results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: ~/test-results/ + + - name: Store build reports + uses: actions/upload-artifact@v4 + with: + name: build-reports + path: build/reports + + - name: Save Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-saucelabs-${{ github.ref }}-${{ github.run_id }} + non-ie: + runs-on: ubuntu-latest + container: + image: eclipse-temurin:21-jdk + env: + GRADLE_OPTS: -Xmx1024m -XX:MaxMetaspaceSize=256m + GRADLE_USER_HOME: .gradle-home + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Restore Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-non-ie-${{ github.ref }} + restore-keys: | + gradle-home-non-ie-${{ github.ref }} + gradle-home-non-ie-master + gradle-home-non-ie + + - name: Run Gradle tasks + run: ./gradlew --no-daemon -Pci --max-workers 5 --parallel nonIeBrowserStackTests + + - name: Copy all test results to a directory + run: | + mkdir -p ~/test-results/junit/ + find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/test-results/junit/ \; + + - name: Store test results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: ~/test-results/ + + - name: Store build reports + uses: actions/upload-artifact@v4 + with: + name: build-reports + path: build/reports + + - name: Save Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-non-ie-${{ github.ref }}-${{ github.run_id }} + ie: + runs-on: ubuntu-latest + container: + image: eclipse-temurin:21-jdk + env: + GRADLE_OPTS: -Xmx1024m -XX:MaxMetaspaceSize=256m + GRADLE_USER_HOME: .gradle-home + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Restore Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-ie-${{ github.ref }} + restore-keys: | + gradle-home-ie-${{ github.ref }} + gradle-home-ie-master + gradle-home-ie + + - name: Run Gradle tasks + run: ./gradlew --no-daemon -Pci --max-workers 5 --parallel ieBrowserStackTests + + - name: Copy all test results to a directory + run: | + mkdir -p ~/test-results/junit/ + find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/test-results/junit/ \; + + - name: Store test results + if: success() || failure() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: ~/test-results/ + + - name: Store build reports + uses: actions/upload-artifact@v4 + with: + name: build-reports + path: build/reports + + - name: Save Gradle cache + uses: actions/cache@v4 + with: + path: .gradle-home + key: gradle-home-ie-${{ github.ref }}-${{ github.run_id }}