Build Logs

guardian/janus-app • 3.8.1-RC1:2026-01-13

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.1-RC1
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.1-RC1
32Execute tests: true
33sbt project found:
34No prepare script found for project guardian/janus-app
35##################################
36Scala version: 3.8.1-RC1
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.1-RC1
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.1-RC1"
58"++3.8.1-RC1 -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.1-RC1 """{"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.803s.
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.1-RC1
96OpenCB::Changing crossVersion 3.3.7 -> 3.8.1-RC1 in configTools/crossScalaVersions
97OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in configTools/crossScalaVersions
98OpenCB::Changing crossVersion 3.3.7 -> 3.8.1-RC1 in root/crossScalaVersions
99OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) 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.1-RC1 on 2 projects.
113[info] Switching Scala version on:
114[info] * root (3.8.1-RC1)
115[info] configTools (3.8.1-RC1)
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 13, 2026, 7:38:46 PM
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.1-RC1/classes ...
207[info] done compiling
208[info] compiling 10 Scala sources to /build/repo/configTools/target/scala-3.8.1-RC1/test-classes ...
209[info] done compiling
210[info] PermissionTest:
211[info] allPermissions
212[info] - returns nothing for an empty JanusData
213[info] - includes default access permissions
214[info] - includes access permissions
215[info] - includes access permissions from multiple users
216[info] - includes admin permissions
217[info] - includes support permissions
218[info] - includes permissions from all sources
219[info] WriterTest:
220[info] toConfig
221[info] - includes the permissionsRepo
222[info] - excludes permissionsRepo entry if it is empty
223[info] - includes the inline policy for a permission
224[info] - includes the managed policy ARNs for a permission
225[info] access section
226[info] - includes user in ACL
227[info] - includes provisioned role name in ACL entry
228[info] - includes provisioned role iamRoleTag in ACL entry
229[info] - includes multiple provisioned roles for a single user
230[info] - includes multiple permissions and multiple roles for a single user
231[info] admin section
232[info] - includes user in admin ACL
233[info] - includes provisioned role in admin ACL entry
234[info] - includes provisioned role iamRoleTag in admin ACL entry
235[info] - includes multiple provisioned roles for a single user
236[info] - includes multiple permissions and multiple roles for a single user
237[info] JanusConfigTest:
238[info] - Can load a config file
239[info] - throws a Janus configuration exception if there is an error in the config
240[info] IamTest:
241[info] Action
242[info] - should encode action name correctly
243[info] Resource
244[info] - should encode resource id correctly
245[info] Statement
246[info] - should encode basic statement correctly
247[info] - should encode statement with ID correctly
248[info] - should encode statement with single condition correctly
249[info] - should encode statement with single condition with multiple values correctly
250[info] - should encode statement with multiple conditions correctly
251[info] - should encode statement with multiple conditions of same type correctly
252[info] - should encode statement with single principal correctly
253[info] - should encode statement with multiple principals correctly
254[info] Policy
255[info] - should encode basic policy correctly
256[info] - should encode policy with ID correctly
257[info] should encode complex policy correctly
258[info] - with correct version
259[info] - with correct ID
260[info] - with correct effect
261[info] - with explicitly set statement ID
262[info] - with correct condition
263[info] - with correct principal
264[info] - with correct second principal
265[info] - with correct complete json string
266[info] StatementsTest:
267[info] policy helper
268[info] - deduplicates statements
269[info] enforceCorrectPath
270[info] - returns true for /
271[info] - returns true for path with leading slash and no trailing slash
272[info] - returns false if no leading slash
273[info] - returns false with trailing and leading slash
274[info] - returns false for edge case of single char
275[info] hierarchyPath
276[info] - builds a '/*' pattern for the path '/'
277[info] - builds a '/my-path/sub-path/*' pattern for the path '/my-path/sub-path'
278[info] ConfigIntegrationTests:
279[info] round trips
280[info] - the example janus data can be read, written and re-read
281[info] - the example janus data that omits a permissions repo can be read, written and re-read
282[info] development helpers
283[info] - print the generated config file to the console for manual inspection !!! IGNORED !!!
284[info] ValidationTest:
285[info] policySizeChecks
286[info] - returns nothing if the provided data contains no large policies
287[info] returns a warning if there is a large policy
288[info] in the access ACL
289[info] - for a large inline policy
290[info] - for large managedPolicyArns
291[info] in the admin ACL
292[info] - for a large inline policy
293[info] - for large managedPolicyArns
294[info] in the support ACL
295[info] - for a large inline policy
296[info] - for large managedPolicyArns
297[info] - returns an 'invalid' validation result if a warning is generated
298[info] permissionIdUniqueness
299[info] - returns nothing for valid permissions
300[info] - returns nothing for duplicate permissions in separate accounts
301[info] - returns a validation error for permissions with duplicate IDs (concatenation of account & label)
302[info] - returns a validation error for duplicate permissions across multiple users
303[info] isClean
304[info] - returns true for a result with no warnings or errors
305[info] - returns false for a result with errors but no warnings
306[info] - returns false for a result with warnings but no errors
307[info] - returns false for a result with warnings and errors
308[info] noErrors
309[info] - returns true for a result with no warnings or errors
310[info] - returns true for a result with warnings but no errors
311[info] - returns false for a result with errors but no warnings
312[info] - returns false for a result with warnings and errors
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": 16598, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
374 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
375 "test-compile": {"status": "ok", "tookMs": 7501, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
376 "test": {"status": "ok", "tookMs": 1164, "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: 27 s, completed Jan 13, 2026, 7:39:13 PM
384[0JChecking patch project/plugins.sbt...
385Checking patch build.sbt...
386Applied patch project/plugins.sbt cleanly.
387Applied patch build.sbt cleanly.