Skip to content

Commit 418d693

Browse files
committed
ci: rework circle ci config to use orbs
Signed-off-by: Luís Ferreira <[email protected]>
1 parent ec10aa3 commit 418d693

File tree

1 file changed

+41
-147
lines changed

1 file changed

+41
-147
lines changed

.circleci/config.yml

Lines changed: 41 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -1,163 +1,57 @@
1-
# CircleCI 2.0 configuration file
2-
version: 2
1+
version: 2.1
32

4-
# Re-usable blocks to reduce boilerplate in job definitions.
5-
references:
6-
host_environment_defaults: &host_environment_defaults
7-
# Customize the JVM maximum heap limit
8-
JAVA_OPTS: -Xmx3200m
9-
docker_environment_defaults: &docker_environment_defaults
10-
# Customize the JVM to read correct memory values
11-
JAVA_OPTS: '-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1'
12-
13-
default_java_job: &default_java_job
14-
docker:
15-
- image: circleci/openjdk:8-jdk
16-
environment:
17-
<<: *docker_environment_defaults
18-
environment:
19-
<<: *host_environment_defaults
20-
working_directory: ~/workdir
21-
22-
restore_source_code: &restore_source_code
23-
restore_cache:
24-
keys:
25-
- source-code-1.0.0-{{ .Branch }}-{{ .Revision }}
26-
- source-code-1.0.0-{{ .Branch }}
27-
- source-code-1.0.0
28-
restore_dependencies: &restore_dependencies
29-
restore_cache:
30-
keys:
31-
- sbt-ivy2-dependencies-1.0.0-{{ checksum "/tmp/dependencies.cache.tmp" }}
32-
- sbt-ivy2-dependencies-1.0.0
33-
restore_build: &restore_build
34-
restore_cache:
35-
keys:
36-
- sbt-build-1.0.1-{{ .Branch }}-{{ .Revision }}
37-
- sbt-build-1.0.1
38-
39-
setup_dependencies_key: &setup_dependencies_key
40-
run:
41-
name: Generate cache key
42-
command: |
43-
shasum build.sbt \
44-
project/plugins.sbt \
45-
project/build.properties > /tmp/dependencies.cache.tmp
46-
47-
jobs:
48-
checkout_code:
49-
<<: *default_java_job
50-
steps:
51-
- *restore_source_code
52-
- checkout
53-
- save_cache:
54-
key: source-code-1.0.0-{{ .Branch }}-{{ .Revision }}
55-
paths:
56-
- ~/workdir
57-
58-
sbt_dependencies:
59-
<<: *default_java_job
60-
steps:
61-
- *restore_source_code
62-
- *setup_dependencies_key
63-
- *restore_dependencies
64-
- run:
65-
name: Resolve dependencies
66-
command: |
67-
sbt update
68-
- save_cache:
69-
paths:
70-
- ~/.ivy2
71-
- ~/.sbt
72-
- ~/.coursier/cache/v1
73-
key: sbt-ivy2-dependencies-1.0.0-{{ checksum "/tmp/dependencies.cache.tmp" }}
74-
75-
compile:
76-
<<: *default_java_job
77-
steps:
78-
- *restore_source_code
79-
- *setup_dependencies_key
80-
- *restore_dependencies
81-
- *restore_build
82-
- run:
83-
name: Compile
84-
command: ./scripts/compile.sh
85-
- save_cache:
86-
paths:
87-
- ~/workdir/target
88-
- ~/workdir/project/target
89-
key: sbt-build-1.0.0-{{ .Branch }}-{{ .Revision }}
90-
91-
test:
92-
<<: *default_java_job
93-
steps:
94-
- *restore_source_code
95-
- *setup_dependencies_key
96-
- *restore_dependencies
97-
- *restore_build
98-
- run:
99-
name: Test
100-
command: ./scripts/test.sh
101-
- run:
102-
name: Store test reports
103-
working_directory: ~/
104-
command: |
105-
mkdir -p ~/coverage-reports/scoverage
106-
cp -f ~/workdir/target/scala-2.12/coverage-report/cobertura.xml ~/coverage-reports/scoverage/results.xml
107-
- store_test_results:
108-
path: ~/coverage-reports
109-
- store_artifacts:
110-
path: ~/workdir/target/scala-2.12/coverage-report
111-
- store_artifacts:
112-
path: ~/workdir/target/scala-2.12/scoverage-report
113-
- store_artifacts:
114-
path: ~/workdir/target/scala-2.12/scoverage-data
115-
116-
publish:
117-
<<: *default_java_job
118-
steps:
119-
- *restore_source_code
120-
- *setup_dependencies_key
121-
- *restore_dependencies
122-
- *restore_build
123-
- run:
124-
name: Install AWS CLI
125-
command: |
126-
sudo apt -y update
127-
sudo apt -y install python3-pip
128-
sudo python3 -m pip install awscli
129-
- run:
130-
name: Setup AWS Credentials
131-
command: ./scripts/setup-aws-credentials.sh
132-
- run:
133-
name: Retrieve GPG Keys
134-
command: |
135-
mkdir -p ~/.gnupg
136-
aws s3 sync --profile shared-services --include '*.gpg' s3://$AWS_CREDENTIALS_BUCKET/gnupg/ ~/.gnupg
137-
- run:
138-
name: Publish to Sonatype
139-
command: ./scripts/publish.sh 3.0.$CIRCLE_BUILD_NUM
3+
orbs:
4+
codacy: codacy/[email protected]
1405

1416
workflows:
1427
version: 2
143-
test-and-publish:
8+
compile_test_deploy:
1449
jobs:
145-
- checkout_code
146-
- sbt_dependencies:
10+
- codacy/checkout_and_version:
11+
write_sbt_version: true
12+
- codacy/sbt:
13+
name: populate_cache
14+
cmd: sbt "set scalafmtUseIvy in ThisBuild := false;update"
15+
persist_to_workspace: true
14716
requires:
148-
- checkout_code
149-
- compile:
17+
- codacy/checkout_and_version
18+
- codacy/sbt:
19+
name: check_fmt
20+
cmd: sbt "scalafmt::test;test:scalafmt::test;sbt:scalafmt::test"
15021
requires:
151-
- checkout_code
152-
- sbt_dependencies
153-
- test:
22+
- populate_cache
23+
- codacy/sbt:
24+
name: compile
25+
cmd: |
26+
sbt +compile
27+
sbt +test:compile
28+
requires:
29+
- check_fmt
30+
- codacy/sbt:
31+
name: test
32+
cmd: |
33+
sbt "coverage;coverageReport;coverageAggregate"
34+
sbt +test
35+
36+
if [ -z "$CODACY_PROJECT_TOKEN" ]; then
37+
echo "CODACY_PROJECT_TOKEN not found. Skipping send coverage to Codacy."
38+
else
39+
sbt codacyCoverage
40+
fi
15441
requires:
15542
- compile
156-
- publish:
43+
- codacy/sbt:
44+
name: publish
45+
cmd: |
46+
sbt "clean;retrieveGPGKeys"
47+
sbt "+publishSigned;sonatypeRelease"
15748
context: CodacyAWS
15849
requires:
15950
- test
16051
filters:
16152
branches:
16253
only:
16354
- master
55+
- codacy/tag_version:
56+
requires:
57+
- publish

0 commit comments

Comments
 (0)