Skip to content

Commit 0aa9690

Browse files
committed
Use nix develop in CI workflows; provide cs in docker image
- docker-setup.sh: install coursier as `cs` (with `coursier` symlink) so the docker image exposes the `cs` binary expected by the build. - flake.nix: add an explicit `jdk11` devShell so workflows can use `.#jdk${matrix.java}` uniformly. - Replace actions/setup-java + sbt/setup-sbt + gradle/setup-gradle + coursier/setup-action + yarn-installed bazelisk with DeterminateSystems/nix-installer-action + magic-nix-cache-action, and run all sbt/mvn/bazelisk/cs invocations via `nix develop`. - BazelBuildTool: detect bazelisk/bazel on PATH at runtime and prefer bazelisk (so it respects the project's .bazelversion).
1 parent fd9e0fd commit 0aa9690

8 files changed

Lines changed: 95 additions & 93 deletions

File tree

.github/workflows/ci.yml

Lines changed: 48 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,14 @@ jobs:
1818
steps:
1919
- uses: actions/checkout@v4
2020

21-
- uses: actions/setup-java@v4
21+
- uses: DeterminateSystems/nix-installer-action@v22
2222
with:
23-
distribution: "temurin"
24-
cache: "sbt"
25-
java-version: ${{ matrix.java }}
23+
summarize: false
2624

27-
- uses: sbt/setup-sbt@v1
28-
29-
- name: Setup Gradle 8.10
30-
uses: gradle/actions/setup-gradle@v4
31-
with:
32-
gradle-version: '8.10'
25+
- uses: DeterminateSystems/magic-nix-cache-action@v13
3326

3427
- name: Main project tests
35-
run: sbt test
28+
run: nix develop .#jdk${{ matrix.java }} --command sbt test
3629

3730
docker_test:
3831
runs-on: ${{ matrix.os }}
@@ -42,18 +35,16 @@ jobs:
4235
matrix:
4336
os: [ubuntu-latest]
4437
steps:
45-
- uses: actions/checkout@v2
38+
- uses: actions/checkout@v4
4639

47-
- uses: actions/setup-java@v3
40+
- uses: DeterminateSystems/nix-installer-action@v22
4841
with:
49-
distribution: "temurin"
50-
cache: "sbt"
51-
java-version: 17
42+
summarize: false
5243

53-
- uses: sbt/setup-sbt@v1
44+
- uses: DeterminateSystems/magic-nix-cache-action@v13
5445

5546
- name: Build Dockerised CLI
56-
run: DOCKER_BUILDKIT=0 sbt cli/docker
47+
run: nix develop .#jdk17 --command bash -c "DOCKER_BUILDKIT=0 sbt cli/docker"
5748

5849
- name: Test repos
5950
shell: bash
@@ -76,41 +67,46 @@ jobs:
7667
bazel:
7768
runs-on: ubuntu-latest
7869
steps:
79-
- uses: actions/checkout@v2
80-
- run: yarn global add @bazel/bazelisk
81-
- run: bazel build //... --//semanticdb-javac:enabled=true
82-
- run: bazel run scip-semanticdb:bazel -- --sourceroot "$PWD"
70+
- uses: actions/checkout@v4
71+
72+
- uses: DeterminateSystems/nix-installer-action@v22
73+
with:
74+
summarize: false
75+
76+
- uses: DeterminateSystems/magic-nix-cache-action@v13
77+
78+
- run: nix develop --command bazelisk build //... --//semanticdb-javac:enabled=true
79+
- run: nix develop --command bazelisk run scip-semanticdb:bazel -- --sourceroot "$PWD"
8380
- run: du -h index.scip
84-
- run: bazel build //... --@scip_java//semanticdb-javac:enabled=true
81+
- run: nix develop "$GITHUB_WORKSPACE" --command bazelisk build //... --@scip_java//semanticdb-javac:enabled=true
8582
working-directory: examples/bazel-example
86-
- run: bazel run @scip_java//scip-semanticdb:bazel -- --sourceroot "$PWD"
83+
- run: nix develop "$GITHUB_WORKSPACE" --command bazelisk run @scip_java//scip-semanticdb:bazel -- --sourceroot "$PWD"
8784
working-directory: examples/bazel-example
8885
- run: du -h index.scip
8986
working-directory: examples/bazel-example
9087

9188
bazel_aspect:
9289
runs-on: ubuntu-latest
9390
steps:
94-
- uses: actions/checkout@v2
95-
- run: yarn global add @bazel/bazelisk
91+
- uses: actions/checkout@v4
9692

97-
- uses: actions/setup-java@v3
93+
- uses: DeterminateSystems/nix-installer-action@v22
9894
with:
99-
distribution: "temurin"
100-
cache: "sbt"
101-
java-version: 17
95+
summarize: false
10296

103-
- uses: sbt/setup-sbt@v1
97+
- uses: DeterminateSystems/magic-nix-cache-action@v13
10498

105-
- run: sbt build
99+
- run: nix develop .#jdk17 --command sbt build
106100
- run: echo "$PWD/out/bin" >> $GITHUB_PATH
107101
- name: Auto-index scip-java codebase
108102
run: |
109-
scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)
103+
nix develop .#jdk17 --command bash -c \
104+
'scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)'
110105
- run: du -h index.scip
111106
- name: Auto-index example/bazel-workspace
112107
run: |
113-
scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)
108+
nix develop .#jdk17 --command bash -c \
109+
'scip-java index --build-tool=bazel --bazel-scip-java-binary=$(which scip-java)'
114110
working-directory: examples/bazel-example
115111
- run: du -h index.scip
116112
working-directory: examples/bazel-example
@@ -121,19 +117,17 @@ jobs:
121117
steps:
122118
- uses: actions/checkout@v4
123119

124-
- uses: actions/setup-java@v4
120+
- uses: DeterminateSystems/nix-installer-action@v22
125121
with:
126-
distribution: "temurin"
127-
cache: "sbt"
128-
java-version: 11
122+
summarize: false
129123

130-
- uses: sbt/setup-sbt@v1
124+
- uses: DeterminateSystems/magic-nix-cache-action@v13
131125

132126
- name: semanticdb-kotlinc tests
133-
run: sbt semanticdbKotlinc/test
127+
run: nix develop .#jdk11 --command sbt semanticdbKotlinc/test
134128

135129
- name: Kotlin snapshots
136-
run: sbt semanticdbKotlincMinimized/kotlincSnapshots
130+
run: nix develop .#jdk11 --command sbt semanticdbKotlincMinimized/kotlincSnapshots
137131

138132
- name: Check snapshot drift
139133
run: |
@@ -143,20 +137,18 @@ jobs:
143137
check:
144138
runs-on: ubuntu-latest
145139
steps:
146-
- uses: actions/checkout@v2
140+
- uses: actions/checkout@v4
147141

148-
- uses: actions/setup-java@v3
142+
- uses: DeterminateSystems/nix-installer-action@v22
149143
with:
150-
distribution: "temurin"
151-
java-version: 11
152-
cache: "sbt"
144+
summarize: false
153145

154-
- uses: sbt/setup-sbt@v1
146+
- uses: DeterminateSystems/magic-nix-cache-action@v13
155147

156-
- run: sbt --client checkAll
148+
- run: nix develop .#jdk11 --command sbt --client checkAll
157149

158150
- name: Run sample benchmarks
159-
run: sbt --client 'bench/Jmh/run -i 1 -f1 -t1 -foe true'
151+
run: nix develop .#jdk11 --command sbt --client 'bench/Jmh/run -i 1 -f1 -t1 -foe true'
160152

161153

162154
maven:
@@ -169,24 +161,23 @@ jobs:
169161
steps:
170162
- uses: actions/checkout@v4
171163

172-
- uses: actions/setup-java@v4
164+
- uses: DeterminateSystems/nix-installer-action@v22
173165
with:
174-
distribution: "temurin"
175-
cache: "sbt"
176-
java-version: ${{ matrix.java }}
166+
summarize: false
177167

178-
- uses: sbt/setup-sbt@v1
168+
- uses: DeterminateSystems/magic-nix-cache-action@v13
179169

180170
- run: |
181-
sbt build publishM2 publishLocal dumpScipJavaVersion
171+
nix develop .#jdk${{ matrix.java }} --command sbt build publishM2 publishLocal dumpScipJavaVersion
182172
echo "SCIP_JAVA_VERSION=$(cat VERSION)" >> $GITHUB_ENV
183173
echo "SCIP_JAVA_CLI=$PWD/out/bin/scip-java" >> $GITHUB_ENV
184174
185175
- run: |
186-
mvn clean verify -DskipTests -Dscip-java.version=$SCIP_JAVA_VERSION sourcegraph:sourcegraphDependencies
176+
nix develop "$GITHUB_WORKSPACE#jdk${{ matrix.java }}" --command \
177+
mvn clean verify -DskipTests -Dscip-java.version=$SCIP_JAVA_VERSION sourcegraph:sourcegraphDependencies
187178
working-directory: examples/maven-example
188179
189-
- run: $SCIP_JAVA_CLI index-semanticdb target/semanticdb-targetroot
180+
- run: nix develop "$GITHUB_WORKSPACE#jdk${{ matrix.java }}" --command $SCIP_JAVA_CLI index-semanticdb target/semanticdb-targetroot
190181
working-directory: examples/maven-example
191182

192183
- run: |

.github/workflows/mdoc.yml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,13 @@ jobs:
77
publish:
88
runs-on: ubuntu-latest
99
steps:
10-
- uses: actions/checkout@v3
10+
- uses: actions/checkout@v4
1111
with:
1212
fetch-depth: 0
13-
- uses: actions/setup-java@v3
13+
- uses: DeterminateSystems/nix-installer-action@v22
1414
with:
15-
distribution: 'temurin'
16-
java-version: 11
17-
cache: 'sbt'
18-
- uses: sbt/setup-sbt@v1
19-
- run: sbt docs/docusaurusPublishGhpages
15+
summarize: false
16+
- uses: DeterminateSystems/magic-nix-cache-action@v13
17+
- run: nix develop .#jdk11 --command sbt docs/docusaurusPublishGhpages
2018
env:
2119
GIT_DEPLOY_KEY: ${{ secrets.GIT_DEPLOY_KEY }}

.github/workflows/release-cli.yml

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,19 @@ permissions:
1313
jobs:
1414
publish:
1515
runs-on: ubuntu-latest
16+
defaults:
17+
run:
18+
shell: nix develop .#jdk11 --command bash -e {0}
1619
steps:
17-
- uses: actions/setup-java@v4
18-
with:
19-
distribution: 'temurin'
20-
java-version: 11
20+
- uses: actions/checkout@v4
2121

22-
- uses: coursier/setup-action@v3
22+
- uses: DeterminateSystems/nix-installer-action@v22
2323
with:
24-
apps: ''
24+
summarize: false
25+
26+
- uses: DeterminateSystems/magic-nix-cache-action@v13
2527

2628
- name: Build standalone launcher
27-
shell: bash
2829
env:
2930
OUT_DIR: ${{ runner.temp }}/release-cli
3031
TAG: ${{ inputs.tag }}
@@ -67,7 +68,6 @@ jobs:
6768
6869
- name: Check for GitHub release
6970
id: release
70-
shell: bash
7171
env:
7272
GH_TOKEN: ${{ github.token }}
7373
TAG: ${{ inputs.tag }}
@@ -83,7 +83,6 @@ jobs:
8383
8484
- name: Upload release assets
8585
if: steps.release.outputs.exists == 'true'
86-
shell: bash
8786
env:
8887
OUT_DIR: ${{ runner.temp }}/release-cli
8988
GH_TOKEN: ${{ github.token }}

.github/workflows/release-docker.yml

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,17 @@ jobs:
88
publish:
99
runs-on: ubuntu-latest
1010
steps:
11-
- uses: actions/checkout@v3
11+
- uses: actions/checkout@v4
1212
with:
1313
fetch-depth: 0
14-
- uses: actions/setup-java@v3
14+
- uses: DeterminateSystems/nix-installer-action@v22
1515
with:
16-
distribution: 'temurin'
17-
java-version: 11
18-
cache: 'sbt'
19-
- uses: sbt/setup-sbt@v1
20-
- uses: docker/setup-buildx-action@v1
16+
summarize: false
17+
- uses: DeterminateSystems/magic-nix-cache-action@v13
18+
- uses: docker/setup-buildx-action@v3
2119
- name: Login to DockerHub
22-
uses: docker/login-action@v1
20+
uses: docker/login-action@v3
2321
with:
2422
username: ${{ secrets.DOCKER_USERNAME }}
2523
password: ${{ secrets.DOCKER_PASSWORD }}
26-
- run: DOCKER_BUILDKIT=0 sbt cli/dockerBuildAndPush
24+
- run: nix develop .#jdk11 --command bash -c "DOCKER_BUILDKIT=0 sbt cli/dockerBuildAndPush"

.github/workflows/release-maven.yml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,15 @@ jobs:
88
publish:
99
runs-on: ubuntu-latest
1010
steps:
11-
- uses: actions/checkout@v3
11+
- uses: actions/checkout@v4
1212
with:
1313
fetch-depth: 0
14-
- uses: actions/setup-java@v3
14+
- uses: DeterminateSystems/nix-installer-action@v22
1515
with:
16-
distribution: 'temurin'
17-
java-version: 11
18-
cache: 'sbt'
19-
- uses: sbt/setup-sbt@v1
16+
summarize: false
17+
- uses: DeterminateSystems/magic-nix-cache-action@v13
2018
- name: Publish ${{ github.ref }}
21-
run: sbt ci-release
19+
run: nix develop .#jdk11 --command sbt ci-release
2220
env:
2321
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
2422
PGP_SECRET: ${{ secrets.PGP_SECRET }}

bin/docker-setup.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#!/usr/bin/env bash
22
set -eux
3-
curl -fLo /usr/local/bin/coursier https://github.com/coursier/coursier/releases/download/v2.1.5/coursier
4-
chmod +x /usr/local/bin/coursier
5-
coursier setup --yes --apps coursier,sbt
3+
curl -fLo /usr/local/bin/cs https://github.com/coursier/coursier/releases/download/v2.1.5/coursier
4+
chmod +x /usr/local/bin/cs
5+
ln -sf /usr/local/bin/cs /usr/local/bin/coursier
6+
cs setup --yes --apps cs,coursier,sbt
67

78
curl -fLo maven.zip https://archive.apache.org/dist/maven/maven-3/3.9.1/binaries/apache-maven-3.9.1-bin.zip
89
unzip -d /opt/maven maven.zip

flake.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353

5454
devShells = {
5555
default = mkDevShell pkgs.jdk11;
56+
jdk11 = mkDevShell pkgs.jdk11;
5657
jdk17 = mkDevShell pkgs.jdk17;
5758
jdk21 = mkDevShell pkgs.jdk21;
5859
};

scip-java/src/main/scala/com/sourcegraph/scip_java/buildtools/BazelBuildTool.scala

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import java.nio.file.FileSystems
55
import java.nio.file.FileVisitResult
66
import java.nio.file.Files
77
import java.nio.file.Path
8+
import java.nio.file.Paths
89
import java.nio.file.SimpleFileVisitor
910
import java.nio.file.StandardOpenOption
1011
import java.nio.file.attribute.BasicFileAttributes
@@ -31,6 +32,21 @@ class BazelBuildTool(index: IndexCommand) extends BuildTool("Bazel", index) {
3132
else
3233
index.buildCommand
3334

35+
// Prefer `bazelisk` over `bazel` when both are available: bazelisk respects
36+
// the project's `.bazelversion`, while `bazel` may be a pinned system version.
37+
private def bazelExecutable: String = {
38+
val pathDirs = sys
39+
.env
40+
.getOrElse("PATH", "")
41+
.split(java.io.File.pathSeparator)
42+
.toList
43+
List("bazelisk", "bazel")
44+
.find { name =>
45+
pathDirs.exists(dir => Files.isExecutable(Paths.get(dir, name)))
46+
}
47+
.getOrElse("bazel")
48+
}
49+
3450
override def generateScip(): Int = {
3551
val aspectLabel = this.generateAspectFile().getOrElse("")
3652
if (aspectLabel.isEmpty) {
@@ -60,7 +76,7 @@ class BazelBuildTool(index: IndexCommand) extends BuildTool("Bazel", index) {
6076

6177
val buildCommand =
6278
List(
63-
"bazel",
79+
bazelExecutable,
6480
"build",
6581
"--noshow_progress",
6682
// The local strategy is required for now because we write SemanticDB and SCIP files

0 commit comments

Comments
 (0)