You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
6.1 KiB
255 lines
6.1 KiB
# |
|
# 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:<<parameters.version>> |
|
android: |
|
parameters: |
|
version: |
|
description: 'jdk version to use' |
|
default: '8' |
|
type: string |
|
docker: |
|
- image: circleci/openjdk:<<parameters.version>> |
|
# 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: <<parameters.jdk>> |
|
<<: *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: <<parameters.jdk>> |
|
<<: *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: <<parameters.jdk>> |
|
<<: *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 |
|
|
|
|