# # Copyright 2012-2020 The Feign Authors # # Licensed 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. # orbs: android: circleci/android@1.0.3 # common executors executors: java: parameters: version: description: 'jdk version to use' default: '8' type: string docker: - image: circleci/openjdk:<> android: parameters: version: description: 'jdk version to use' default: '8' type: string docker: - image: circleci/openjdk:<> # common commands commands: resolve-dependencies: description: 'Download and prepare all dependencies' steps: - run: name: 'Resolving Dependencies' command: | mvn dependency:resolve-plugins go-offline:resolve-dependencies -DskipTests=true verify-formatting: steps: - run: name: 'Verify formatting' command: | scripts/no-git-changes.sh configure-gpg: steps: - run: name: 'Configure GPG keys' command: | echo -e "$GPG_KEY" | gpg --batch --no-tty --import --yes nexus-deploy: steps: - run: name: 'Deploy Core Modules Sonatype' command: | mvn -nsu -s .circleci/settings.xml -P release -pl -:feign-benchmark -DskipTests=true deploy nexus-deploy-jdk11: steps: - run: name: 'Build JDK 11 Release modules locally' command: | mvn -B -nsu -s .circleci/settings.xml -P java11 -pl :feign-java11 -am -DskipTests=true install - run: name: 'Deploy JDK 11 Modules to Sonatype' command: | mvn -B -nsu -s .circleci/settings.xml -P release,java11 -pl :feign-java11 -DskipTests=true deploy # our job defaults defaults: &defaults working_directory: ~/feign environment: # Customize the JVM maximum heap limit MAVEN_OPTS: -Xmx3200m # branch filters master-only: &master-only branches: only: master tags-only: &tags-only branches: ignore: /.*/ tags: only: /.*/ all-branches: &all-branches branches: ignore: master tags: ignore: /.*/ version: 2.1 jobs: test: parameters: jdk: description: 'jdk version to use' default: '8' type: string executor: name: java version: <> <<: *defaults steps: - checkout - restore_cache: keys: - feign-dependencies-{{ checksum "pom.xml" }} - feign-dependencies- - resolve-dependencies - save_cache: paths: - ~/.m2 key: feign-dependencies-{{ checksum "pom.xml" }} - run: name: 'Test' command: | mvn -o test - verify-formatting android-test: # These next lines define the Android machine image executor: https://circleci.com/docs/2.0/executor-types/ executor: name: android/android-machine steps: # Checkout the code as the first step. - checkout # The next step will run the unit tests - android/run-tests: test-command: ./gradlew lint testDebug --continue deploy: parameters: jdk: description: 'jdk version to use' default: '8' type: string executor: name: java version: <> <<: *defaults steps: - checkout - restore_cache: keys: - feign-dependencies-{{ checksum "pom.xml" }} - feign-dependencies- - resolve-dependencies - configure-gpg - nexus-deploy deploy-jdk11: parameters: jdk: description: 'jdk version to use' default: '11' type: string executor: name: java version: <> <<: *defaults steps: - checkout - restore_cache: keys: - feign-dependencies-{{ checksum "pom.xml" }} - feign-dependencies- - resolve-dependencies - configure-gpg - nexus-deploy-jdk11 workflows: version: 2 build: jobs: - test: jdk: '8' name: 'jdk 8' filters: <<: *all-branches - test: jdk: '11' name: 'jdk 11' filters: <<: *all-branches - test: jdk: '14-buster' name: 'jdk 14' filters: <<: *all-branches - test: name: 'android test' snapshot: jobs: - test: jdk: '8' name: 'jdk 8' filters: <<: *master-only - test: jdk: '11' name: 'jdk 11' filters: <<: *master-only - test: jdk: '14-buster' name: 'jdk 14' filters: <<: *master-only - deploy: jdk: '8' name: 'deploy snapshot' requires: - 'jdk 8' - 'jdk 11' - 'jdk 14' context: Sonatype filters: <<: *master-only - deploy-jdk11: jdk: '11' name: 'deploy jdk11 snapshot modules' requires: - 'jdk 11' - 'deploy snapshot' context: Sonatype filters: <<: *master-only release: jobs: - deploy: jdk: '8' name: 'release to maven central' context: Sonatype filters: <<: *tags-only - deploy-jdk11: jdk: '11' name: 'release jdk11 artifacts to maven central' requires: - 'release to maven central' context: Sonatype filters: <<: *tags-only