@@ -4,12 +4,13 @@ const ci = require('ci-info')
4
4
const { env } = process
5
5
6
6
const INTOTO_PAYLOAD_TYPE = 'application/vnd.in-toto+json'
7
- const INTOTO_STATEMENT_TYPE = 'https://in-toto.io/Statement/v0.1'
8
- const SLSA_PREDICATE_TYPE = 'https://slsa.dev/provenance/v0.2'
7
+ const INTOTO_STATEMENT_V01_TYPE = 'https://in-toto.io/Statement/v0.1'
8
+ const INTOTO_STATEMENT_V1_TYPE = 'https://in-toto.io/Statement/v1'
9
+ const SLSA_PREDICATE_V02_TYPE = 'https://slsa.dev/provenance/v0.2'
10
+ const SLSA_PREDICATE_V1_TYPE = 'https://slsa.dev/provenance/v1'
9
11
10
- const GITHUB_BUILDER_ID = 'https://github.com/actions/runner'
11
- const GITHUB_BUILD_TYPE_PREFIX = 'https://github.com/npm/cli/gha'
12
- const GITHUB_BUILD_TYPE_VERSION = 'v2'
12
+ const GITHUB_BUILDER_ID_PREFIX = 'https://github.com/actions/runner'
13
+ const GITHUB_BUILD_TYPE = 'https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1'
13
14
14
15
const GITLAB_BUILD_TYPE_PREFIX = 'https://github.com/npm/cli/gitlab'
15
16
const GITLAB_BUILD_TYPE_VERSION = 'v0alpha1'
@@ -18,63 +19,54 @@ const generateProvenance = async (subject, opts) => {
18
19
let payload
19
20
if ( ci . GITHUB_ACTIONS ) {
20
21
/* istanbul ignore next - not covering missing env var case */
21
- const [ workflowPath ] = ( env . GITHUB_WORKFLOW_REF || '' )
22
+ const [ workflowPath , workflowRef ] = ( env . GITHUB_WORKFLOW_REF || '' )
22
23
. replace ( env . GITHUB_REPOSITORY + '/' , '' )
23
24
. split ( '@' )
24
25
payload = {
25
- _type : INTOTO_STATEMENT_TYPE ,
26
+ _type : INTOTO_STATEMENT_V1_TYPE ,
26
27
subject,
27
- predicateType : SLSA_PREDICATE_TYPE ,
28
+ predicateType : SLSA_PREDICATE_V1_TYPE ,
28
29
predicate : {
29
- buildType : ` ${ GITHUB_BUILD_TYPE_PREFIX } / ${ GITHUB_BUILD_TYPE_VERSION } ` ,
30
- builder : { id : GITHUB_BUILDER_ID } ,
31
- invocation : {
32
- configSource : {
33
- uri : `git+ ${ env . GITHUB_SERVER_URL } / ${ env . GITHUB_REPOSITORY } @ ${ env . GITHUB_REF } ` ,
34
- digest : {
35
- sha1 : env . GITHUB_SHA ,
30
+ buildDefinition : {
31
+ buildType : GITHUB_BUILD_TYPE ,
32
+ externalParameters : {
33
+ workflow : {
34
+ ref : workflowRef ,
35
+ repository : ` ${ env . GITHUB_SERVER_URL } / ${ env . GITHUB_REPOSITORY } ` ,
36
+ path : workflowPath ,
36
37
} ,
37
- entryPoint : workflowPath ,
38
38
} ,
39
- parameters : { } ,
40
- environment : {
41
- GITHUB_EVENT_NAME : env . GITHUB_EVENT_NAME ,
42
- GITHUB_REF : env . GITHUB_REF ,
43
- GITHUB_REPOSITORY : env . GITHUB_REPOSITORY ,
44
- GITHUB_REPOSITORY_ID : env . GITHUB_REPOSITORY_ID ,
45
- GITHUB_REPOSITORY_OWNER_ID : env . GITHUB_REPOSITORY_OWNER_ID ,
46
- GITHUB_RUN_ATTEMPT : env . GITHUB_RUN_ATTEMPT ,
47
- GITHUB_RUN_ID : env . GITHUB_RUN_ID ,
48
- GITHUB_SHA : env . GITHUB_SHA ,
49
- GITHUB_WORKFLOW_REF : env . GITHUB_WORKFLOW_REF ,
50
- GITHUB_WORKFLOW_SHA : env . GITHUB_WORKFLOW_SHA ,
39
+ internalParameters : {
40
+ github : {
41
+ event_name : env . GITHUB_EVENT_NAME ,
42
+ repository_id : env . GITHUB_REPOSITORY_ID ,
43
+ repository_owner_id : env . GITHUB_REPOSITORY_OWNER_ID ,
44
+ } ,
51
45
} ,
46
+ resolvedDependencies : [
47
+ {
48
+ uri : `git+${ env . GITHUB_SERVER_URL } /${ env . GITHUB_REPOSITORY } @${ env . GITHUB_REF } ` ,
49
+ digest : {
50
+ gitCommit : env . GITHUB_SHA ,
51
+ } ,
52
+ } ,
53
+ ] ,
52
54
} ,
53
- metadata : {
54
- buildInvocationId : `${ env . GITHUB_RUN_ID } -${ env . GITHUB_RUN_ATTEMPT } ` ,
55
- completeness : {
56
- parameters : false ,
57
- environment : false ,
58
- materials : false ,
55
+ runDetails : {
56
+ builder : { id : `${ GITHUB_BUILDER_ID_PREFIX } /${ env . RUNNER_ENVIRONMENT } ` } ,
57
+ metadata : {
58
+ /* eslint-disable-next-line max-len */
59
+ invocationId : `${ env . GITHUB_SERVER_URL } /${ env . GITHUB_REPOSITORY } /actions/runs/${ env . GITHUB_RUN_ID } /attempts/${ env . GITHUB_RUN_ATTEMPT } ` ,
59
60
} ,
60
- reproducible : false ,
61
61
} ,
62
- materials : [
63
- {
64
- uri : `git+${ env . GITHUB_SERVER_URL } /${ env . GITHUB_REPOSITORY } @${ env . GITHUB_REF } ` ,
65
- digest : {
66
- sha1 : env . GITHUB_SHA ,
67
- } ,
68
- } ,
69
- ] ,
70
62
} ,
71
63
}
72
64
}
73
65
if ( ci . GITLAB ) {
74
66
payload = {
75
- _type : INTOTO_STATEMENT_TYPE ,
67
+ _type : INTOTO_STATEMENT_V01_TYPE ,
76
68
subject,
77
- predicateType : SLSA_PREDICATE_TYPE ,
69
+ predicateType : SLSA_PREDICATE_V02_TYPE ,
78
70
predicate : {
79
71
buildType : `${ GITLAB_BUILD_TYPE_PREFIX } /${ GITLAB_BUILD_TYPE_VERSION } ` ,
80
72
builder : { id : `${ env . CI_PROJECT_URL } /-/runners/${ env . CI_RUNNER_ID } ` } ,
0 commit comments