Build Logs
guardian/janus-app • 3.8.0-RC6:2026-01-08
Errors
2
Warnings
7
Total Lines
387
1##################################
2Clonning https://github.com/guardian/janus-app.git into /build/repo using revision v7.0.0
3##################################
4Note: switching to '50e8eb6e527a8f0e8e558cf73d5af00c5bfc9106'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21----
22Preparing build for 3.8.0-RC6
23Scala binary version found: 3.8
24Implicitly using source version 3.8
25Scala binary version found: 3.8
26Implicitly using source version 3.8
27Would try to apply common scalacOption (best-effort, sbt/mill only):
28Append: ,REQUIRE:-source:3.8
29Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
30----
31Starting build for 3.8.0-RC6
32Execute tests: true
33sbt project found:
34No prepare script found for project guardian/janus-app
35##################################
36Scala version: 3.8.0-RC6
37Targets: com.gu%janus-config-tools
38Project projectConfig: {"tests":null}
39##################################
40Using extra scalacOptions: ,REQUIRE:-source:3.8
41Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
42[sbt_options] declare -a sbt_options=()
43[process_args] java_version = '17'
44[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
45# Executing command line:
46java
47-Dfile.encoding=UTF-8
48-Dcommunitybuild.scala=3.8.0-RC6
49-Dcommunitybuild.project.dependencies.add=
50-Xmx7G
51-Xms4G
52-Xss8M
53-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
54-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
55-jar
56/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
57"setCrossScalaVersions 3.8.0-RC6"
58"++3.8.0-RC6 -v"
59"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
60"set every credentials := Nil"
61"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
62"removeScalacOptionsStartingWith -P:wartremover"
63
64moduleMappings
65"runBuild 3.8.0-RC6 """{"tests":null}""" com.gu%janus-config-tools"
66
67[info] [launcher] getting org.scala-sbt sbt 1.11.7 (this may take some time)...
68[info] welcome to sbt 1.11.7 (Eclipse Adoptium Java 17.0.8)
69[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
70[info] loading project definition from /build/repo/project
71[info] compiling 4 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
72[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
73[info] Compilation completed in 8.918s.
74[info] done compiling
75[info] loading settings for project root from build.sbt, version.sbt...
76[info] __ __
77[info] \ \ ____ / /____ _ __ __
78[info] \ \ / __ \ / // __ `// / / /
79[info] / / / /_/ // // /_/ // /_/ /
80[info] /_/ / .___//_/ \__,_/ \__, /
81[info] /_/ /____/
82[info]
83[info] Version 3.0.9 running Java 17.0.8
84[info]
85[info] Play is run entirely by the community. Please consider contributing and/or donating:
86[info] https://www.playframework.com/sponsors
87[info]
88[warn] there's a key that's not used by any other settings/tasks:
89[warn]
90[warn] * root / Debian / topLevelDirectory
91[warn] +- /build/repo/build.sbt:153
92[warn]
93[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
94[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
95Execute setCrossScalaVersions: 3.8.0-RC6
96OpenCB::Changing crossVersion 3.3.7 -> 3.8.0-RC6 in configTools/crossScalaVersions
97OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in configTools/crossScalaVersions
98OpenCB::Changing crossVersion 3.3.7 -> 3.8.0-RC6 in root/crossScalaVersions
99OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in root/crossScalaVersions
100[info] __ __
101[info] \ \ ____ / /____ _ __ __
102[info] \ \ / __ \ / // __ `// / / /
103[info] / / / /_/ // // /_/ // /_/ /
104[info] /_/ / .___//_/ \__,_/ \__, /
105[info] /_/ /____/
106[info]
107[info] Version 3.0.9 running Java 17.0.8
108[info]
109[info] Play is run entirely by the community. Please consider contributing and/or donating:
110[info] https://www.playframework.com/sponsors
111[info]
112[info] Setting Scala version to 3.8.0-RC6 on 2 projects.
113[info] Switching Scala version on:
114[info] * root (3.8.0-RC6)
115[info] configTools (3.8.0-RC6)
116[info] Excluding projects:
117[info] Reapplying settings...
118[info] __ __
119[info] \ \ ____ / /____ _ __ __
120[info] \ \ / __ \ / // __ `// / / /
121[info] / / / /_/ // // /_/ // /_/ /
122[info] /_/ / .___//_/ \__,_/ \__, /
123[info] /_/ /____/
124[info]
125[info] Version 3.0.9 running Java 17.0.8
126[info]
127[info] Play is run entirely by the community. Please consider contributing and/or donating:
128[info] https://www.playframework.com/sponsors
129[info]
130Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
131[info] Reapplying settings...
132[info] __ __
133[info] \ \ ____ / /____ _ __ __
134[info] \ \ / __ \ / // __ `// / / /
135[info] / / / /_/ // // /_/ // /_/ /
136[info] /_/ / .___//_/ \__,_/ \__, /
137[info] /_/ /____/
138[info]
139[info] Version 3.0.9 running Java 17.0.8
140[info]
141[info] Play is run entirely by the community. Please consider contributing and/or donating:
142[info] https://www.playframework.com/sponsors
143[info]
144[info] Defining Global / credentials, configTools / credentials, credentials
145[info] The new values will be used by Compile / scalafmtOnly, IntegrationTest / scalafmtOnly and 13 others.
146[info] Run `last` for details.
147[info] Reapplying settings...
148[info] __ __
149[info] \ \ ____ / /____ _ __ __
150[info] \ \ / __ \ / // __ `// / / /
151[info] / / / /_/ // // /_/ // /_/ /
152[info] /_/ / .___//_/ \__,_/ \__, /
153[info] /_/ /____/
154[info]
155[info] Version 3.0.9 running Java 17.0.8
156[info]
157[info] Play is run entirely by the community. Please consider contributing and/or donating:
158[info] https://www.playframework.com/sponsors
159[info]
160Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
161[info] Reapplying settings...
162OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
163
164 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
165 Did you mean allExcludeDependencies ?
166 , retry without global scopes
167[info] Reapplying settings...
168[info] __ __
169[info] \ \ ____ / /____ _ __ __
170[info] \ \ / __ \ / // __ `// / / /
171[info] / / / /_/ // // /_/ // /_/ /
172[info] /_/ / .___//_/ \__,_/ \__, /
173[info] /_/ /____/
174[info]
175[info] Version 3.0.9 running Java 17.0.8
176[info]
177[info] Play is run entirely by the community. Please consider contributing and/or donating:
178[info] https://www.playframework.com/sponsors
179[info]
180Execute removeScalacOptionsStartingWith: -P:wartremover
181[info] Reapplying settings...
182[info] __ __
183[info] \ \ ____ / /____ _ __ __
184[info] \ \ / __ \ / // __ `// / / /
185[info] / / / /_/ // // /_/ // /_/ /
186[info] /_/ / .___//_/ \__,_/ \__, /
187[info] /_/ /____/
188[info]
189[info] Version 3.0.9 running Java 17.0.8
190[info]
191[info] Play is run entirely by the community. Please consider contributing and/or donating:
192[info] https://www.playframework.com/sponsors
193[info]
194[success] Total time: 0 s, completed Jan 8, 2026, 1:51:23 AM
195Build config: {"tests":null}
196Parsed config: Failure(sjsonnew.DeserializationException: Expected String as JString, but got JNull)
197Starting build...
198Projects: Set(configTools)
199Starting build for ProjectRef(file:/build/repo/,configTools) (janus-config-tools)... [0/1]
200OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
201OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
202OpenCB::Filter out '-Werror', matches setting pattern '^-?-Werror'
203Compile scalacOptions: --java-output-version:17, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
204[info] scalafmt: Formatting 10 Scala sources (/build/repo/configTools)...
205[info] scalafmt: Formatting 10 Scala sources (/build/repo/configTools)...
206[info] compiling 12 Scala sources to /build/repo/configTools/target/scala-3.8.0-RC6/classes ...
207[info] done compiling
208[info] compiling 10 Scala sources to /build/repo/configTools/target/scala-3.8.0-RC6/test-classes ...
209[info] done compiling
210[info] StatementsTest:
211[info] policy helper
212[info] - deduplicates statements
213[info] enforceCorrectPath
214[info] - returns true for /
215[info] - returns true for path with leading slash and no trailing slash
216[info] - returns false if no leading slash
217[info] - returns false with trailing and leading slash
218[info] - returns false for edge case of single char
219[info] hierarchyPath
220[info] - builds a '/*' pattern for the path '/'
221[info] - builds a '/my-path/sub-path/*' pattern for the path '/my-path/sub-path'
222[info] PermissionTest:
223[info] allPermissions
224[info] - returns nothing for an empty JanusData
225[info] - includes default access permissions
226[info] - includes access permissions
227[info] - includes access permissions from multiple users
228[info] - includes admin permissions
229[info] - includes support permissions
230[info] - includes permissions from all sources
231[info] WriterTest:
232[info] toConfig
233[info] - includes the permissionsRepo
234[info] - excludes permissionsRepo entry if it is empty
235[info] - includes the inline policy for a permission
236[info] - includes the managed policy ARNs for a permission
237[info] access section
238[info] - includes user in ACL
239[info] - includes provisioned role name in ACL entry
240[info] - includes provisioned role iamRoleTag in ACL entry
241[info] - includes multiple provisioned roles for a single user
242[info] - includes multiple permissions and multiple roles for a single user
243[info] admin section
244[info] - includes user in admin ACL
245[info] - includes provisioned role in admin ACL entry
246[info] - includes provisioned role iamRoleTag in admin ACL entry
247[info] - includes multiple provisioned roles for a single user
248[info] - includes multiple permissions and multiple roles for a single user
249[info] ValidationTest:
250[info] policySizeChecks
251[info] - returns nothing if the provided data contains no large policies
252[info] returns a warning if there is a large policy
253[info] in the access ACL
254[info] - for a large inline policy
255[info] - for large managedPolicyArns
256[info] in the admin ACL
257[info] - for a large inline policy
258[info] - for large managedPolicyArns
259[info] in the support ACL
260[info] - for a large inline policy
261[info] - for large managedPolicyArns
262[info] - returns an 'invalid' validation result if a warning is generated
263[info] permissionIdUniqueness
264[info] - returns nothing for valid permissions
265[info] - returns nothing for duplicate permissions in separate accounts
266[info] - returns a validation error for permissions with duplicate IDs (concatenation of account & label)
267[info] - returns a validation error for duplicate permissions across multiple users
268[info] isClean
269[info] - returns true for a result with no warnings or errors
270[info] - returns false for a result with errors but no warnings
271[info] - returns false for a result with warnings but no errors
272[info] - returns false for a result with warnings and errors
273[info] noErrors
274[info] - returns true for a result with no warnings or errors
275[info] - returns true for a result with warnings but no errors
276[info] - returns false for a result with errors but no warnings
277[info] - returns false for a result with warnings and errors
278[info] JanusConfigTest:
279[info] - Can load a config file
280[info] - throws a Janus configuration exception if there is an error in the config
281[info] IamTest:
282[info] Action
283[info] - should encode action name correctly
284[info] Resource
285[info] - should encode resource id correctly
286[info] Statement
287[info] - should encode basic statement correctly
288[info] - should encode statement with ID correctly
289[info] - should encode statement with single condition correctly
290[info] - should encode statement with single condition with multiple values correctly
291[info] - should encode statement with multiple conditions correctly
292[info] - should encode statement with multiple conditions of same type correctly
293[info] - should encode statement with single principal correctly
294[info] - should encode statement with multiple principals correctly
295[info] Policy
296[info] - should encode basic policy correctly
297[info] - should encode policy with ID correctly
298[info] should encode complex policy correctly
299[info] - with correct version
300[info] - with correct ID
301[info] - with correct effect
302[info] - with explicitly set statement ID
303[info] - with correct condition
304[info] - with correct principal
305[info] - with correct second principal
306[info] - with correct complete json string
307[info] ConfigIntegrationTests:
308[info] round trips
309[info] - the example janus data can be read, written and re-read
310[info] - the example janus data that omits a permissions repo can be read, written and re-read
311[info] development helpers
312[info] - print the generated config file to the console for manual inspection !!! IGNORED !!!
313[info] LoaderTest:
314[info] fromConfig
315[info] - parses the full example
316[info] - parses an example without a permissions repo
317[info] loadPermissionsRepo
318[info] - loads the example file's repo
319[info] - loads example with no permissions repository
320[info] loadAccounts
321[info] - loads the example file's accounts
322[info] loadPermissions
323[info] - loads the example file's permissions
324[info] loadAccess
325[info] loads the example file's access definition
326[info] - and extracts the default permissions
327[info] - and extracts the ACL
328[info] - properly extracts a standard inline-policy permission
329[info] - properly extracts a permission with managed ARNs
330[info] - properly extracts a permission with an inline policy document and managed policy ARNs
331[info] loadAdmin
332[info] - loads the example file's admin definition
333[info] loadSupport
334[info] loads the example file's support definition
335[info] - extracts the support permissions
336[info] - extracts the rota
337[info] parseAclEntries
338[info] - returns empty list for empty ACL
339[info] parses a single user with a single permission
340[info] - returns a single entry
341[info] - returns correct permissions
342[info] - returns no roles
343[info] parses a single user with multiple permissions
344[info] - returns single entry
345[info] - returns correct permissions
346[info] parses multiple users
347[info] - returns two entries
348[info] - returns correct user names
349[info] - returns correct permissions
350[info] parses a single role-based ACL entry
351[info] - returns single entry
352[info] - returns no permissions
353[info] - returns correct role
354[info] parses a multiple-role-based ACL entry
355[info] - returns single entry
356[info] - returns no permissions
357[info] - returns correct roles
358[info] parses mixed permission and role entries for same user
359[info] - returns single entry
360[info] - returns correct permissions
361[info] - returns correct roles
362[info] fails when permission doesn't exist
363[info] - returns failure value
364[info] - failure value is correct
365[info] fails when account doesn't exist
366[info] - returns failure value
367[info] - failure value is correct
368
369************************
370Build summary:
371[{
372 "module": "janus-config-tools",
373 "compile": {"status": "ok", "tookMs": 16728, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
374 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
375 "test-compile": {"status": "ok", "tookMs": 8358, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
376 "test": {"status": "ok", "tookMs": 1406, "passed": 109, "failed": 0, "ignored": 1, "skipped": 0, "total": 110, "byFramework": [{"framework": "unknown", "stats": {"passed": 109, "failed": 0, "ignored": 1, "skipped": 0, "total": 110}}]},
377 "publish": {"status": "skipped", "tookMs": 0},
378 "metadata": {
379 "crossScalaVersions": ["2.12.20"]
380}
381}]
382************************
383[success] Total time: 29 s, completed Jan 8, 2026, 1:51:52 AM
384[0JChecking patch project/plugins.sbt...
385Checking patch build.sbt...
386Applied patch project/plugins.sbt cleanly.
387Applied patch build.sbt cleanly.