From 22db406c3536c071d827446bb41cac20ad244b77 Mon Sep 17 00:00:00 2001 From: Peter Leibiger <kuhnroyal@gmail.com> Date: Mon, 24 May 2021 04:59:35 +0200 Subject: [PATCH] [ci] Move openapi-generator build/docs/samples to github actions (#9550) * [ci] Move openapi-generator build/docs/samples to github actions * Naming * Test failure on samples and docs * Revert code changes after successful docs/sample failure --- .../openapi-generator-test-results.yaml | 19 ++ .github/workflows/openapi-generator.yaml | 214 ++++++++++++++++++ CI/.drone.yml | 2 - CI/circle_parallel.sh | 13 -- shippable.yml | 10 - 5 files changed, 233 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/openapi-generator-test-results.yaml create mode 100644 .github/workflows/openapi-generator.yaml diff --git a/.github/workflows/openapi-generator-test-results.yaml b/.github/workflows/openapi-generator-test-results.yaml new file mode 100644 index 000000000000..f246b16c36b1 --- /dev/null +++ b/.github/workflows/openapi-generator-test-results.yaml @@ -0,0 +1,19 @@ +name: OpenAPI Generator Test Report + +on: + workflow_run: + workflows: ['OpenAPI Generator'] + types: + - completed + +# separate workflow required due to https://github.com/dorny/test-reporter#recommended-setup-for-public-repositories +jobs: + report: + runs-on: ubuntu-latest + steps: + - uses: dorny/test-reporter@v1 + with: + artifact: surefire-test-results + name: JUnit Test results + path: '**/surefire-reports/TEST-*.xml' + reporter: java-junit diff --git a/.github/workflows/openapi-generator.yaml b/.github/workflows/openapi-generator.yaml new file mode 100644 index 000000000000..5bb78a6f3b02 --- /dev/null +++ b/.github/workflows/openapi-generator.yaml @@ -0,0 +1,214 @@ +name: OpenAPI Generator + +on: + push: + branches: + - master + - '[5-9]+.[0-9]+.x' + pull_request: + branches: + - master + - '[5-9]+.[0-9]+.x' + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: cache-maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + !~/.gradle/caches/*/plugin-resolution/ + !~/.m2/repository/org/openapitools/ + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + - name: Run maven + run: mvn --no-snapshot-updates --batch-mode --quiet install -DskipTests -Dorg.slf4j.simpleLogger.defaultLogLevel=error + - run: ls -la modules/openapi-generator-cli/target + - name: Upload openapi-generator-cli.jar artifact + uses: actions/upload-artifact@v2 + with: + name: openapi-generator-cli.jar + path: modules/openapi-generator-cli/target/openapi-generator-cli.jar + retention-days: 1 + + test: + name: Unit tests + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: cache-maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + !~/.gradle/caches/*/plugin-resolution/ + !~/.m2/repository/org/openapitools/ + key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + - name: Run unit tests + run: mvn --no-snapshot-updates --batch-mode --quiet --fail-at-end test -Dorg.slf4j.simpleLogger.defaultLogLevel=error + - name: Publish unit test reports + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: surefire-test-results + path: '**/surefire-reports/TEST-*.xml' + + documentation: + name: Docs up-to-date + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Download openapi-generator-cli.jar artifact + uses: actions/download-artifact@v2 + with: + name: openapi-generator-cli.jar + path: modules/openapi-generator-cli/target + - name: Generate docs + run: | + bash bin/meta-codegen.sh + bash bin/utils/export_docs_generators.sh + bash bin/utils/copy-to-website.sh + bash bin/utils/export_generators_readme.sh + - name: Verify git status + run: | + if [[ "$(git status --porcelain)" != "" ]]; then + echo "UNCOMMITTED CHANGES ERROR" + echo "There are uncommitted changes in working tree after execution of 'bin/ensure-up-to-date'" + echo "Perform git diff" + git --no-pager diff + echo "Perform git status" + git status + echo -e "\nThis script runs in pull requests against the anticipated merge commit (as if the PR was merged now)." + echo "When you see unexpected files here, it likely means that there are newer commits in master that you need to " + echo -e "rebase or merge into your branch.\n" + echo "Please run 'bin/utils/ensure-up-to-date' locally and commit changes (UNCOMMITTED CHANGES ERROR)" + exit 1 + fi + + samples: + name: Samples up-to-date + needs: + - build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Download openapi-generator-cli.jar artifact + uses: actions/download-artifact@v2 + with: + name: openapi-generator-cli.jar + path: modules/openapi-generator-cli/target + - name: Generate samples + run: bash bin/generate-samples.sh + - name: Verify git status + run: | + if [[ "$(git status --porcelain)" != "" ]]; then + echo "UNCOMMITTED CHANGES ERROR" + echo "There are uncommitted changes in working tree after execution of 'bin/generate-samples.sh'" + echo "Perform git diff" + git --no-pager diff + echo "Perform git status" + git status + echo -e "\nThis script runs in pull requests against the anticipated merge commit (as if the PR was merged now)." + echo "When you see unexpected files here, it likely means that there are newer commits in master that you need to " + echo -e "rebase or merge into your branch.\n" + echo "Please run 'bin/generate-samples.sh' locally and commit changes (UNCOMMITTED CHANGES ERROR)" + exit 1 + fi + + test-maven-plugin: + name: Maven plugin tests + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: cache-maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + !~/.gradle/caches/*/plugin-resolution/ + !~/.m2/repository/org/openapitools/ + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-test-maven-plugin-${{ env.cache-name }}- + ${{ runner.os }}-test-maven-plugin- + - name: Run tests + run: | + mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/java-client.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error + mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/multi-module/pom.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error + mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/kotlin.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error + mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/spring.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error + + test-gradle-plugin: + name: Gradle plugin tests + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + - name: Cache maven dependencies + uses: actions/cache@v2 + env: + cache-name: cache-maven-repository + with: + path: | + ~/.m2/repository + ~/.gradle + !~/.gradle/caches/modules-2/modules-2.lock + !~/.gradle/caches/*/plugin-resolution/ + !~/.m2/repository/org/openapitools/ + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-test-gradle-plugin-${{ env.cache-name }}- + ${{ runner.os }}-test-gradle-plugin- + - name: Run tests + run: | + (cd modules/openapi-generator-gradle-plugin/samples/local-spec && ./gradlew buildGoSdk) + (cd modules/openapi-generator-gradle-plugin/samples/local-spec && ./gradlew openApiGenerate) diff --git a/CI/.drone.yml b/CI/.drone.yml index 032d64b9e154..073d7332a433 100644 --- a/CI/.drone.yml +++ b/CI/.drone.yml @@ -7,8 +7,6 @@ steps: commands: - ./mvnw --quiet clean install -Dorg.slf4j.simpleLogger.defaultLogLevel=error - ./mvnw --quiet verify -Psamples.droneio -Dorg.slf4j.simpleLogger.defaultLogLevel=error - # run ensure up-to-date - - /bin/bash bin/utils/ensure-up-to-date # test java native client - ./mvnw clean test -f samples/client/petstore/java/native/pom.xml - ./mvnw clean test -f samples/client/petstore/java/native-async/pom.xml diff --git a/CI/circle_parallel.sh b/CI/circle_parallel.sh index 36e0c179b240..f1a5a529a791 100755 --- a/CI/circle_parallel.sh +++ b/CI/circle_parallel.sh @@ -24,19 +24,6 @@ if [ "$NODE_INDEX" = "1" ]; then ls -l /home/circleci/.ivy2/cache elif [ "$NODE_INDEX" = "2" ]; then - # run ensure-up-to-date sample script on SNAPSHOT version only - project_version=`mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout` - if [[ $project_version == *"-SNAPSHOT" ]]; then - echo "Running node $NODE_INDEX to test ensure-up-to-date" - java -version - - # clear any changes to the samples - git checkout -- . - - # look for outdated samples - #./bin/utils/ensure-up-to-date - # UPDATE: moved to drone.io - fi echo "Running node $NODE_INDEX to test haskell" # install haskell curl -sSL https://get.haskellstack.org/ | sh diff --git a/shippable.yml b/shippable.yml index 5dc40c6fa41b..009806b31a34 100644 --- a/shippable.yml +++ b/shippable.yml @@ -21,7 +21,6 @@ build: - export PATH=/opt/gradle/gradle-5.6.4/bin:$PATH - gradle -v - java -version - - mvn --no-snapshot-updates --quiet clean install -Dmaven.javadoc.skip=true # ensure all modifications created by 'mature' generators are in the git repo # below move to CircleCI ./bin/utils/ensure-up-to-date # prepare environment for tests @@ -49,12 +48,3 @@ build: - mix --version # test samples defined in pom.xml - mvn --no-snapshot-updates --quiet verify -P samples.shippable -Dmaven.javadoc.skip=true - # test maven plugin - - mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/java-client.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error - - mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/multi-module/pom.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error - - mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/kotlin.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error - - mvn --no-snapshot-updates --quiet clean compile -f modules/openapi-generator-maven-plugin/examples/spring.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error - # test gradle plugin - - (cd modules/openapi-generator-gradle-plugin/samples/local-spec && ./gradlew buildGoSdk) - - (cd modules/openapi-generator-gradle-plugin/samples/local-spec && ./gradlew openApiGenerate) -