@@ -40,11 +40,12 @@ extension Unidoc.BuilderUploadOperation:Unidoc.BlockingOperation
40
40
41
41
case . labeled:
42
42
var artifact : Unidoc . BuildArtifact = try . init( bson: bson)
43
- let logs : [ Unidoc . BuildLogType ] = try await artifact . export ( from : server )
43
+ let logs : [ Unidoc . BuildLogType ]
44
44
45
45
switch artifact. outcome
46
46
{
47
47
case . failure( let reason) :
48
+ logs = try await artifact. export ( from: server)
48
49
try await server. db. packageBuilds. finishBuild (
49
50
package : artifact. package ,
50
51
failure: reason,
@@ -54,11 +55,27 @@ extension Unidoc.BuilderUploadOperation:Unidoc.BlockingOperation
54
55
case . success( let snapshot) :
55
56
/// A successful (labeled) build also sets the platform preference, since we now
56
57
/// know that the package can be built on that platform.
57
- let _ : Unidoc . PackageMetadata ? = try await server. db. packages. reset (
58
+ let _metadata : Unidoc . PackageMetadata ? = try await server. db. packages. reset (
58
59
platformPreference: snapshot. metadata. triple,
59
60
of: snapshot. id. package ,
60
61
with: session)
61
62
63
+ /// Right now, exporting build logs for private repositories is a security
64
+ /// hazard, because the logs contain secrets, and the log URLs are easily
65
+ /// predicted. For now, we just discard the logs for private repositories.
66
+ let _logsIncluded : Bool
67
+ if case . github( let origin) ? = _metadata? . repo? . origin,
68
+ case _? = origin. installation
69
+ {
70
+ _logsIncluded = false
71
+ }
72
+ else
73
+ {
74
+ _logsIncluded = true
75
+ }
76
+
77
+ logs = try await artifact. export ( from: server, _logsIncluded: _logsIncluded)
78
+
62
79
try await server. db. packageBuilds. finishBuild (
63
80
package : artifact. package ,
64
81
failure: nil ,
0 commit comments