Skip to content

Commit 056bfef

Browse files
shen-tianbbatsov
authored andcommitted
CircleCI migration (#242)
1 parent 0cff432 commit 056bfef

File tree

4 files changed

+224
-3
lines changed

4 files changed

+224
-3
lines changed

.circleci/config.yml

+186
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
version: 2.1
2+
3+
######################################################################
4+
#
5+
# Start of general purpose config. These can plausibly go into orbs
6+
#
7+
######################################################################
8+
9+
# Default settings for executors
10+
11+
defaults: &defaults
12+
working_directory: ~/repo
13+
environment:
14+
LEIN_ROOT: "true" # we intended to run lein as root
15+
JVM_OPTS: -Xmx3200m # limit the maximum heap size to prevent out of memory errors
16+
17+
# Runners for OpenJDK 8 and 11
18+
19+
executors:
20+
openjdk8:
21+
docker:
22+
- image: circleci/clojure:openjdk-8-lein-2.9.1-node
23+
<<: *defaults
24+
openjdk11:
25+
docker:
26+
- image: circleci/clojure:openjdk-11-lein-2.9.1-node
27+
<<: *defaults
28+
29+
# Runs a given set of steps, with some standard pre- and post-
30+
# steps, including restoring of cache, saving of cache.
31+
#
32+
# we also install `make` here.
33+
#
34+
# Adapted from https://github.com/lambdaisland/meta/blob/master/circleci/clojure_orb.yml
35+
36+
commands:
37+
with_cache:
38+
description: |
39+
Run a set of steps with Maven dependencies and Clojure classpath cache
40+
files cached.
41+
This command restores ~/.m2 and .cpcache if they were previously cached,
42+
then runs the provided steps, and finally saves the cache.
43+
The cache-key is generated based on the contents of `deps.edn` present in
44+
the `working_directory`.
45+
parameters:
46+
steps:
47+
type: steps
48+
files:
49+
description: Files to consider when creating the cache key
50+
type: string
51+
default: "deps.edn project.clj build.boot"
52+
cache_version:
53+
type: string
54+
description: "Change this value to force a cache update"
55+
default: "1"
56+
steps:
57+
- run:
58+
name: Install make
59+
command: |
60+
sudo apt-get install make
61+
- run:
62+
name: Generate Cache Checksum
63+
command: |
64+
for file in << parameters.files >>
65+
do
66+
find . -name $file -exec cat {} +
67+
done | shasum | awk '{print $1}' > /tmp/clojure_cache_seed
68+
- restore_cache:
69+
key: clojure-<< parameters.cache_version >>-{{ checksum "/tmp/clojure_cache_seed" }}
70+
- steps: << parameters.steps >>
71+
- save_cache:
72+
paths:
73+
- ~/.m2
74+
- .cpcache
75+
- repo
76+
key: clojure-<< parameters.cache_version >>-{{ checksum "/tmp/clojure_cache_seed" }}
77+
78+
# The jobs are relatively simple. One runs utility commands against
79+
# latest stable JDK + Clojure, the other against specified versions
80+
81+
jobs:
82+
83+
util_job:
84+
description: |
85+
Running utility commands/checks (linter etc.)
86+
Always uses Java11 and Clojure 1.10
87+
parameters:
88+
steps:
89+
type: steps
90+
executor: openjdk11
91+
environment:
92+
VERSION: "1.10"
93+
steps:
94+
- checkout
95+
- with_cache:
96+
cache_version: "1.10"
97+
steps: << parameters.steps >>
98+
99+
100+
test_code:
101+
description: |
102+
Run tests against given version of JDK and Clojure
103+
parameters:
104+
jdk_version:
105+
description: Version of JDK to test against
106+
type: string
107+
clojure_version:
108+
description: Version of Clojure to test against
109+
type: string
110+
executor: << parameters.jdk_version >>
111+
environment:
112+
VERSION: << parameters.clojure_version >>
113+
steps:
114+
- checkout
115+
- with_cache:
116+
cache_version: << parameters.clojure_version >>
117+
steps:
118+
- run:
119+
name: Downloading Source deps
120+
command: make source-deps
121+
- run:
122+
name: Running tests
123+
command: make test
124+
125+
######################################################################
126+
#
127+
# End general purpose configs
128+
#
129+
######################################################################
130+
131+
132+
# The ci-test-matrix does the following:
133+
#
134+
# - run tests against the target matrix
135+
# - Java 8 and 11
136+
# - Clojure 1.8, 1.9, 1.10, master
137+
# - linter, eastwood and cljfmt
138+
# - runs code coverage report
139+
140+
workflows:
141+
version: 2.1
142+
ci-test-matrix:
143+
jobs:
144+
- test_code:
145+
name: Java 8, Clojure 1.8
146+
clojure_version: "1.8"
147+
jdk_version: openjdk8
148+
- test_code:
149+
name: Java 8, Clojure 1.9
150+
clojure_version: "1.9"
151+
jdk_version: openjdk8
152+
- test_code:
153+
name: Java 8, Clojure 1.10
154+
clojure_version: "1.10"
155+
jdk_version: openjdk8
156+
# - test_code:
157+
# name: Java 8, Clojure master
158+
# clojure_version: "master"
159+
# jdk_version: openjdk8
160+
- test_code:
161+
name: Java 11, Clojure 1.8
162+
clojure_version: "1.8"
163+
jdk_version: openjdk11
164+
- test_code:
165+
name: Java 11, Clojure 1.9
166+
clojure_version: "1.9"
167+
jdk_version: openjdk11
168+
- test_code:
169+
name: Java 11, Clojure 1.10
170+
clojure_version: "1.10"
171+
jdk_version: openjdk11
172+
# - test_code:
173+
# name: Java 11, Clojure master
174+
# clojure_version: "master"
175+
# jdk_version: openjdk11
176+
# - util_job:
177+
# name: Code Linting
178+
# steps:
179+
# - run:
180+
# name: Running Eastwood
181+
# command: |
182+
# make eastwood
183+
# - run:
184+
# name: Running cljfmt
185+
# command: |
186+
# make cljfmt

Makefile

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
.PHONY: source-deps test release deploy clean
2+
3+
VERSION ?= 1.10
4+
5+
source-deps:
6+
lein source-deps :prefix-exclusions "[\"classlojure\"]"
7+
8+
test:
9+
lein with-profile +$(VERSION),+plugin.mranderson/config test
10+
11+
12+
# When releasing, the BUMP variable controls which field in the
13+
# version string will be incremented in the *next* snapshot
14+
# version. Typically this is either "major", "minor", or "patch".
15+
16+
BUMP ?= patch
17+
18+
release:
19+
lein with-profile +$(VERSION) release $(BUMP)
20+
21+
# Deploying requires the caller to set environment variables as
22+
# specified in project.clj to provide a login and password to the
23+
# artifact repository.
24+
25+
deploy:
26+
lein with-profile +$(VERSION) deploy clojars
27+
28+
clean:
29+
lein clean

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![Build Status](https://travis-ci.org/clojure-emacs/refactor-nrepl.png?branch=master)](https://travis-ci.org/clojure-emacs/refactor-nrepl)
1+
[![CircleCI](https://circleci.com/gh/clojure-emacs/refactor-nrepl/tree/master.svg?style=svg)](https://circleci.com/gh/clojure-emacs/refactor-nrepl/tree/master)
22
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/clojure-emacs/refactor-nrepl?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
33

44
# Refactor nREPL

project.clj

+8-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,14 @@
2929
[org.clojure/clojure "1.8.0"]]}
3030
:test {:dependencies [[print-foo "1.0.2"]]
3131
:src-paths ["test/resources"]}
32+
:1.8 {:dependencies [[org.clojure/clojure "1.8.0"]
33+
[org.clojure/clojurescript "1.8.51"]
34+
[javax.xml.bind/jaxb-api "2.3.1"]]}
3235
:1.9 {:dependencies [[org.clojure/clojure "1.9.0"]
33-
[org.clojure/clojurescript "1.9.908"]]}
36+
[org.clojure/clojurescript "1.9.908"]
37+
[javax.xml.bind/jaxb-api "2.3.1"]]}
38+
:1.10 {:dependencies [[org.clojure/clojure "1.10.0"]
39+
[org.clojure/clojurescript "1.10.63"]]}
3440
:dev {:plugins [[jonase/eastwood "0.2.0"]]
3541
:global-vars {*warn-on-reflection* true}
3642
:dependencies [[org.clojure/clojurescript "1.9.89"]
@@ -41,5 +47,5 @@
4147
:java-source-paths ["test/java"]
4248
:resource-paths ["test/resources"
4349
"test/resources/testproject/src"]
44-
:repositories [["snapshots" "http://oss.sonatype.org/content/repositories/snapshots"]]}}
50+
:repositories [["snapshots" "https://oss.sonatype.org/content/repositories/snapshots"]]}}
4551
:jvm-opts ["-Djava.net.preferIPv4Stack=true"])

0 commit comments

Comments
 (0)