Skip to content

Commit bb23d51

Browse files
authored
add reusable workflows to the build inventory (#36)
1 parent 7a3740b commit bb23d51

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

opa/rego/poutine/inventory/github_actions.rego

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,41 @@
11
package poutine.inventory
22

3-
import future.keywords.contains
3+
import rego.v1
44

5-
build_dependencies contains dep {
5+
import data.poutine.utils
6+
7+
build_dependencies contains dep if {
68
pkg := input.packages[_]
79
step := pkg.github_actions_workflows[_].jobs[_].steps[_]
810

911
dep := purl.parse_github_actions(step.uses)
1012
}
1113

12-
build_dependencies contains dep {
14+
build_dependencies contains dep if {
1315
pkg := input.packages[_]
1416
job := pkg.github_actions_workflows[_].jobs[_]
1517
image := job.container.image
1618
not contains(image, "$")
1719
dep := purl.parse_docker_image(image)
1820
}
1921

20-
package_dependencies contains dep {
22+
build_dependencies contains dep if {
23+
pkg := input.packages[_]
24+
job := pkg.github_actions_workflows[_].jobs[_]
25+
uses := job.uses
26+
not utils.empty(uses)
27+
28+
dep := purl.parse_github_actions(uses)
29+
}
30+
31+
package_dependencies contains dep if {
2132
pkg := input.packages[_]
2233
step := pkg.github_actions_metadata[_].runs.steps[_]
2334

2435
dep := purl.parse_github_actions(step.uses)
2536
}
2637

27-
package_dependencies contains dep {
38+
package_dependencies contains dep if {
2839
pkg := input.packages[_]
2940
runs := pkg.github_actions_metadata[_].runs
3041

scanner/inventory_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ func TestPurls(t *testing.T) {
4242
"pkg:githubactions/org/repo@main",
4343
"pkg:docker/debian%3Avuln",
4444
"pkg:githubactions/bridgecrewio/checkov-action@main",
45+
"pkg:githubactions/org/repo@main#.github/workflows/Reusable.yml",
4546
}
4647
assert.ElementsMatch(t, i.Purls(), purls)
4748
assert.Equal(t, 1, len(i.Packages))
48-
assert.Equal(t, 15, len(i.Packages[0].BuildDependencies))
49+
assert.Equal(t, 16, len(i.Packages[0].BuildDependencies))
4950
assert.Equal(t, 4, len(i.Packages[0].PackageDependencies))
5051
}
5152

scanner/testdata/.github/workflows/reusable.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,13 @@ jobs:
1313
- uses: actions/checkout@main
1414
with:
1515
ref: ${{ inputs.ref }}
16+
17+
uses:
18+
runs-on: ubuntu-latest
19+
uses: org/repo/.github/workflows/Reusable.yml@main
20+
with:
21+
ref: ${{ inputs.ref }}
22+
23+
local-uses:
24+
runs-on: ubuntu-latest
25+
uses: ./.github/workflows/ci.yml

0 commit comments

Comments
 (0)