-
Notifications
You must be signed in to change notification settings - Fork 309
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a934423
commit ba19260
Showing
2 changed files
with
226 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,220 @@ | ||
version: 2.1 | ||
orbs: | ||
slack: circleci/slack@3.4.2 | ||
win: circleci/windows@5.0.0 | ||
executors: | ||
small_executor: | ||
docker: | ||
- image: cimg/openjdk:21.0.2 | ||
auth: &docker-auth | ||
# Don't panic, throw away account to avoid Docker rate limits when downloading. | ||
# Second reason we're doing this is so that forked PRs from external contributors works ie env vars aren't visible to forked PRs from within contexts | ||
username: "cddockeruser" | ||
password: "fa8651f2-88be-48b7-98ce-e711bd376252" | ||
resource_class: small | ||
working_directory: ~/project | ||
environment: | ||
JAVA_TOOL_OPTIONS: -Xmx1500m | ||
GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.parallel=true | ||
|
||
trivy_executor: | ||
docker: | ||
- image: docker:stable-git | ||
auth: | ||
<<: *docker-auth | ||
resource_class: small | ||
working_directory: ~/project | ||
|
||
medium_executor: | ||
docker: | ||
- image: cimg/openjdk:21.0.2 | ||
auth: | ||
<<: *docker-auth | ||
resource_class: medium | ||
working_directory: ~/project | ||
environment: | ||
DOCKER_CLI_EXPERIMENTAL: enabled | ||
JAVA_TOOL_OPTIONS: -Xmx1500m | ||
GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.parallel=true | ||
|
||
medium_plus_executor: | ||
docker: | ||
- image: cimg/openjdk:21.0.2 | ||
auth: | ||
<<: *docker-auth | ||
resource_class: "medium+" | ||
working_directory: ~/project | ||
environment: | ||
JAVA_TOOL_OPTIONS: -Xmx1500m | ||
GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.parallel=true | ||
|
||
large_executor: | ||
docker: | ||
- image: cimg/openjdk:21.0.2 | ||
auth: | ||
<<: *docker-auth | ||
resource_class: large | ||
working_directory: ~/project | ||
environment: | ||
JAVA_TOOL_OPTIONS: -Xmx3g | ||
GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.parallel=true | ||
|
||
machine_executor_amd64: | ||
machine: | ||
image: ubuntu-2204:2024.01.1 # https://circleci.com/developer/machine/image/ubuntu-2204 | ||
docker_layer_caching: true | ||
working_directory: ~/project | ||
environment: | ||
architecture: "amd64" | ||
platform: "linux/amd64" | ||
|
||
machine_large_executor_amd64: | ||
machine: | ||
image: ubuntu-2204:2024.01.1 # https://circleci.com/developer/machine/image/ubuntu-2204 | ||
docker_layer_caching: true | ||
resource_class: large | ||
working_directory: ~/project | ||
environment: | ||
architecture: "amd64" | ||
platform: "linux/amd64" | ||
|
||
machine_executor_arm64: | ||
machine: | ||
image: ubuntu-2204:2024.01.1 # https://circleci.com/developer/machine/image/ubuntu-2204 | ||
resource_class: arm.medium | ||
environment: | ||
architecture: "arm64" | ||
platform: "linux/arm64" | ||
|
||
node_executor: | ||
docker: | ||
- image: circleci/node:16-bullseye | ||
auth: | ||
<<: *docker-auth | ||
|
||
commands: | ||
install_java_21: | ||
description: "Install Java 21" | ||
steps: | ||
- run: | ||
name: "Install Java 21" | ||
command: | | ||
sudo apt update | ||
sudo apt install -y openjdk-21-jdk | ||
if [ "$(uname -m)" = "aarch64" ]; then | ||
ARCH="arm64" | ||
else | ||
ARCH="amd64" | ||
fi | ||
sudo update-alternatives --set java /usr/lib/jvm/java-21-openjdk-$ARCH/bin/java | ||
sudo update-alternatives --set javac /usr/lib/jvm/java-21-openjdk-$ARCH/bin/javac | ||
prepare: | ||
description: "Prepare" | ||
steps: | ||
- checkout | ||
- restore_cache: | ||
name: Restore cached gradle dependencies | ||
keys: | ||
- deps-{{ checksum "build.gradle" }}-{{ checksum "gradle/versions.gradle" }}-{{ .Branch }}-{{ .Revision }} | ||
- deps-{{ checksum "build.gradle" }}-{{ checksum "gradle/versions.gradle" }} | ||
capture_test_results: | ||
description: "Capture test results" | ||
steps: | ||
- run: | ||
name: "Gather test results" | ||
when: "always" | ||
command: | | ||
FILES=`find . -name test-results` | ||
for FILE in $FILES | ||
do | ||
MODULE=`echo "$FILE" | sed -e 's@./\(.*\)/build/test-results@\1@'` | ||
TARGET="build/test-results/$MODULE" | ||
mkdir -p "$TARGET" | ||
find ${FILE} -mindepth 2 -maxdepth 2 -print0 | xargs -0 -I{} cp -rf {} $TARGET | ||
done | ||
- store_test_results: | ||
path: build/test-results | ||
|
||
capture_test_artifacts: | ||
description: "Capture test artifacts" | ||
steps: | ||
- run: | ||
name: "Gather test artifacts" | ||
when: "always" | ||
command: | | ||
FILES=`find . -name test-artifacts` | ||
for FILE in $FILES | ||
do | ||
MODULE=`echo "$FILE" | sed -e 's@./\(.*\)/build/test-artifacts@\1@'` | ||
TARGET="build/test-artifacts/$MODULE" | ||
mkdir -p "$TARGET" | ||
cp -rf ${FILE}/*/* "$TARGET" | ||
done | ||
- store_artifacts: | ||
path: build/test-artifacts | ||
|
||
docker_trust_sign: | ||
description: "Sign docker images" | ||
steps: | ||
- run: | ||
name: "Sign Docker images" | ||
command: | | ||
docker login --username "${DOCKER_USER_RW}" --password "${DOCKER_PASSWORD_RW}" | ||
# dct signing setup | ||
mkdir -p $HOME/.docker/trust/private | ||
echo $DCT_KEY | base64 --decode > $HOME/.docker/trust/private/$DCT_HASH.key | ||
chmod 600 $HOME/.docker/trust/private/$DCT_HASH.key | ||
docker trust key load $HOME/.docker/trust/private/$DCT_HASH.key --name ecosystem | ||
docker_publish_images: | ||
description: "Upload the docker images" | ||
steps: | ||
- run: | ||
name: "Publish Docker Images" | ||
command: | | ||
docker login --username "${DOCKER_USER_RW}" --password "${DOCKER_PASSWORD_RW}" | ||
./gradlew --no-daemon --parallel -Pbranch=${CIRCLE_BRANCH} -PincludeCommitHashInDockerTag=<< pipeline.parameters.include_commit_hash_in_docker_tag >> uploadDocker | ||
notify: | ||
description: "Notify Slack" | ||
steps: | ||
- slack/status: | ||
mentions: "team-centaur" | ||
fail_only: true | ||
only_for_branches: 'master' | ||
|
||
parameters: | ||
include_commit_hash_in_docker_tag: | ||
type: boolean | ||
default: false | ||
|
||
jobs: | ||
assemble: | ||
executor: large_executor | ||
steps: | ||
- prepare | ||
- run: | ||
name: Assemble | ||
command: | | ||
./gradlew --no-daemon --parallel clean compileJava compileTestJava compileJmhJava compileIntegrationTestJava compileAcceptanceTestJava compilePropertyTestJava assemble | ||
- run: | ||
name: Prep Artifacts | ||
command: | | ||
mkdir /tmp/teku-distributions | ||
cp build/distributions/*.tar.gz /tmp/teku-distributions/ | ||
- notify | ||
- save_cache: | ||
name: Caching gradle dependencies | ||
key: deps-{{ checksum "build.gradle" }}-{{ checksum "gradle/versions.gradle" }}-{{ .Branch }}-{{ .Revision }} | ||
paths: | ||
- .gradle | ||
- ~/.gradle | ||
- persist_to_workspace: | ||
root: ~/project | ||
paths: | ||
- ./ | ||
- store_artifacts: | ||
name: Distribution artifacts | ||
path: /tmp/teku-distributions | ||
destination: distributions | ||
when: always |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters