Skip to content

Commit f9fd5fd

Browse files
authored
feat(circle): add CircleCI scanner (#582)
* feat(circle): add CircleCI scanner
1 parent 60c9538 commit f9fd5fd

File tree

17 files changed

+2493
-37
lines changed

17 files changed

+2493
-37
lines changed

Makefile

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.PHONY: help build build-all build-gitlab build-github build-bitbucket build-devops build-gitea test test-unit test-e2e lint clean coverage coverage-html serve-docs
1+
.PHONY: help build build-all build-gitlab build-github build-bitbucket build-devops build-gitea build-circle test test-unit test-e2e lint clean coverage coverage-html serve-docs
22

33
# Default target
44
help:
@@ -12,6 +12,7 @@ help:
1212
@echo " make build-bitbucket - Build BitBucket-specific binary"
1313
@echo " make build-devops - Build Azure DevOps-specific binary"
1414
@echo " make build-gitea - Build Gitea-specific binary"
15+
@echo " make build-circle - Build CircleCI-specific binary"
1516
@echo " make test - Run all tests (unit + e2e)"
1617
@echo " make test-unit - Run unit tests only"
1718
@echo " make test-e2e - Run e2e tests (builds binary first)"
@@ -54,8 +55,13 @@ build-gitea:
5455
@echo "Building pipeleek-gitea..."
5556
CGO_ENABLED=0 go build $(GO_BUILD_FLAGS) -o pipeleek-gitea ./cmd/pipeleek-gitea
5657

58+
# Build CircleCI-specific binary
59+
build-circle:
60+
@echo "Building pipeleek-circle..."
61+
CGO_ENABLED=0 go build $(GO_BUILD_FLAGS) -o pipeleek-circle ./cmd/pipeleek-circle
62+
5763
# Build all binaries
58-
build-all: build build-gitlab build-github build-bitbucket build-devops build-gitea
64+
build-all: build build-gitlab build-github build-bitbucket build-devops build-gitea build-circle
5965
@echo "All binaries built successfully"
6066

6167
# Run all tests
@@ -92,6 +98,10 @@ test-e2e-gitea: build
9298
@echo "Running Gitea e2e tests..."
9399
PIPELEEK_BINARY=$$(pwd)/pipeleek go test ./tests/e2e/gitea/... -tags=e2e -v
94100

101+
test-e2e-circle: build
102+
@echo "Running CircleCI e2e tests..."
103+
PIPELEEK_BINARY=$$(pwd)/pipeleek go test ./tests/e2e/circle/... -tags=e2e -v
104+
95105
# Generate test coverage report
96106
coverage:
97107
@echo "Generating coverage report..."
@@ -139,4 +149,5 @@ clean:
139149
rm -f pipeleek-bitbucket pipeleek-bitbucket.exe
140150
rm -f pipeleek-devops pipeleek-devops.exe
141151
rm -f pipeleek-gitea pipeleek-gitea.exe
152+
rm -f pipeleek-circle pipeleek-circle.exe
142153
go clean -cache -testcache

cmd/pipeleek-circle/main.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package main
2+
3+
import (
4+
"github.com/CompassSecurity/pipeleek/internal/cmd/circle"
5+
"github.com/CompassSecurity/pipeleek/internal/cmd/common"
6+
"github.com/spf13/cobra"
7+
)
8+
9+
func main() {
10+
common.Run(newRootCmd())
11+
}
12+
13+
func newRootCmd() *cobra.Command {
14+
circleCmd := circle.NewCircleRootCmd()
15+
circleCmd.Use = "pipeleek-circle"
16+
circleCmd.Short = "Scan CircleCI logs and artifacts for secrets"
17+
circleCmd.Long = `Pipeleek-Circle scans CircleCI pipelines, logs, test results, and artifacts to detect leaked secrets.`
18+
circleCmd.Version = common.Version
19+
circleCmd.GroupID = ""
20+
21+
common.SetupPersistentPreRun(circleCmd)
22+
common.AddCommonFlags(circleCmd)
23+
24+
circleCmd.SetVersionTemplate(`{{.Version}}
25+
`)
26+
27+
return circleCmd
28+
}

docs/introduction/configuration.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,32 @@ jenkins:
200200
max_builds: 25 # jenkins scan --max-builds
201201
```
202202
203+
### CircleCI
204+
205+
```yaml
206+
circle:
207+
url: https://circleci.com
208+
token: circleci-token
209+
210+
scan:
211+
project: [my-org/my-repo] # circle scan --project (optional if org is set)
212+
vcs: github # circle scan --vcs
213+
org: my-org # circle scan --org (also enables org-wide discovery when project is omitted)
214+
# --org accepts: my-org, github/my-org, or app URL forms like
215+
# https://app.circleci.com/pipelines/github/my-org/my-repo
216+
# Note: org-wide discovery requires token visibility to that org. If not,
217+
# use explicit --project selectors instead.
218+
branch: main # circle scan --branch
219+
status: [success, failed] # circle scan --status
220+
workflow: [build, deploy] # circle scan --workflow
221+
job: [unit-tests, release] # circle scan --job
222+
since: 2026-01-01T00:00:00Z # circle scan --since (RFC3339)
223+
until: 2026-01-31T23:59:59Z # circle scan --until (RFC3339)
224+
max_pipelines: 0 # circle scan --max-pipelines (0 = no limit)
225+
tests: true # circle scan --tests
226+
insights: true # circle scan --insights
227+
```
228+
203229
### Common Settings
204230
205231
Scan commands inherit from `common`:

go.mod

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ go 1.26
55
require (
66
atomicgo.dev/keyboard v0.2.9
77
code.gitea.io/sdk/gitea v0.24.1
8+
github.com/CircleCI-Public/circleci-cli v0.1.34950
89
github.com/PuerkitoBio/goquery v1.12.0
910
github.com/bndr/gojenkins v1.2.0
1011
github.com/docker/go-units v0.5.0
@@ -35,13 +36,13 @@ require (
3536
cloud.google.com/go/compute/metadata v0.9.0 // indirect
3637
cloud.google.com/go/iam v1.5.3 // indirect
3738
cloud.google.com/go/secretmanager v1.16.0 // indirect
38-
dario.cat/mergo v1.0.0 // indirect
39+
dario.cat/mergo v1.0.2 // indirect
3940
filippo.io/edwards25519 v1.1.1 // indirect
4041
github.com/42wim/httpsig v1.2.4 // indirect
4142
github.com/Azure/go-ntlmssp v0.1.0 // indirect
4243
github.com/BobuSumisu/aho-corasick v1.0.3 // indirect
4344
github.com/Microsoft/go-winio v0.6.2 // indirect
44-
github.com/ProtonMail/go-crypto v1.1.6 // indirect
45+
github.com/ProtonMail/go-crypto v1.3.0 // indirect
4546
github.com/TheZeroSlave/zapsentry v1.23.0 // indirect
4647
github.com/Unpackerr/iso9660 v0.0.3 // indirect
4748
github.com/andybalholm/brotli v1.2.0 // indirect
@@ -120,9 +121,9 @@ require (
120121
github.com/jlaffaye/ftp v0.2.0 // indirect
121122
github.com/joho/godotenv v1.5.1 // indirect
122123
github.com/josharian/intern v1.0.0 // indirect
123-
github.com/kevinburke/ssh_config v1.2.0 // indirect
124+
github.com/kevinburke/ssh_config v1.4.0 // indirect
124125
github.com/klauspost/compress v1.18.4 // indirect
125-
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
126+
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
126127
github.com/lestrrat-go/blackmagic v1.0.4 // indirect
127128
github.com/lestrrat-go/httpcc v1.0.1 // indirect
128129
github.com/lestrrat-go/httprc/v3 v3.0.1 // indirect
@@ -147,20 +148,20 @@ require (
147148
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
148149
github.com/peterebden/ar v0.0.0-20241106141004-20dc11b778e8 // indirect
149150
github.com/pierrec/lz4/v4 v4.1.26 // indirect
150-
github.com/pjbgf/sha1cd v0.3.2 // indirect
151+
github.com/pjbgf/sha1cd v0.5.0 // indirect
151152
github.com/pkg/errors v0.9.1 // indirect
152153
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
153-
github.com/prometheus/client_golang v1.20.5 // indirect
154+
github.com/prometheus/client_golang v1.21.1 // indirect
154155
github.com/prometheus/client_model v0.6.2 // indirect
155-
github.com/prometheus/common v0.55.0 // indirect
156+
github.com/prometheus/common v0.62.0 // indirect
156157
github.com/prometheus/procfs v0.15.1 // indirect
157158
github.com/rabbitmq/amqp091-go v1.10.0 // indirect
158159
github.com/robfig/cron/v3 v3.0.1 // indirect
159160
github.com/russross/blackfriday/v2 v2.1.0 // indirect
160161
github.com/sagikazarmark/locafero v0.11.0 // indirect
161162
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect
162163
github.com/segmentio/asm v1.2.1 // indirect
163-
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
164+
github.com/sergi/go-diff v1.4.0 // indirect
164165
github.com/skeema/knownhosts v1.3.1 // indirect
165166
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
166167
github.com/spf13/afero v1.15.0 // indirect
@@ -183,9 +184,9 @@ require (
183184
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
184185
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect
185186
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
186-
go.opentelemetry.io/otel v1.39.0 // indirect
187-
go.opentelemetry.io/otel/metric v1.39.0 // indirect
188-
go.opentelemetry.io/otel/trace v1.39.0 // indirect
187+
go.opentelemetry.io/otel v1.40.0 // indirect
188+
go.opentelemetry.io/otel/metric v1.40.0 // indirect
189+
go.opentelemetry.io/otel/trace v1.40.0 // indirect
189190
go.uber.org/multierr v1.11.0 // indirect
190191
go.uber.org/zap v1.27.0 // indirect
191192
go.yaml.in/yaml/v3 v3.0.4 // indirect

go.sum

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ cloud.google.com/go/secretmanager v1.16.0 h1:19QT7ZsLJ8FSP1k+4esQvuCD7npMJml6hYz
1515
cloud.google.com/go/secretmanager v1.16.0/go.mod h1://C/e4I8D26SDTz1f3TQcddhcmiC3rMEl0S1Cakvs3Q=
1616
code.gitea.io/sdk/gitea v0.24.1 h1:hpaqcdGcBmfMpV7JSbBJVwE99qo+WqGreJYKrDKEyW8=
1717
code.gitea.io/sdk/gitea v0.24.1/go.mod h1:5/77BL3sHneCMEiZaMT9lfTvnnibsYxyO48mceCF3qA=
18-
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
19-
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
18+
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
19+
dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
2020
filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw=
2121
filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
2222
github.com/42wim/httpsig v1.2.4 h1:mI5bH0nm4xn7K18fo1K3okNDRq8CCJ0KbBYWyA6r8lU=
@@ -40,6 +40,8 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83
4040
github.com/BobuSumisu/aho-corasick v1.0.3 h1:uuf+JHwU9CHP2Vx+wAy6jcksJThhJS9ehR8a+4nPE9g=
4141
github.com/BobuSumisu/aho-corasick v1.0.3/go.mod h1:hm4jLcvZKI2vRF2WDU1N4p/jpWtpOzp3nLmi9AzX/XE=
4242
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
43+
github.com/CircleCI-Public/circleci-cli v0.1.34950 h1:W3ZyGfyKL35PPaJcCShW5H6t+GGS0HzBjkOlKG6LmU0=
44+
github.com/CircleCI-Public/circleci-cli v0.1.34950/go.mod h1:uUr25Nqz9pq9QoFYimDGsWpG5D8Q3+FDldKTiWdHRmA=
4345
github.com/MarvinJWendt/testza v0.1.0/go.mod h1:7AxNvlfeHP7Z/hDQ5JtE3OKYT3XFUeLCDE2DQninSqs=
4446
github.com/MarvinJWendt/testza v0.2.1/go.mod h1:God7bhG8n6uQxwdScay+gjm9/LnO4D3kkcZX4hv9Rp8=
4547
github.com/MarvinJWendt/testza v0.2.8/go.mod h1:nwIcjmr0Zz+Rcwfh3/4UhBp7ePKVhuBExvZqnKYWlII=
@@ -51,8 +53,8 @@ github.com/MarvinJWendt/testza v0.4.2/go.mod h1:mSdhXiKH8sg/gQehJ63bINcCKp7RtYew
5153
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
5254
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
5355
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
54-
github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw=
55-
github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
56+
github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw=
57+
github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE=
5658
github.com/PuerkitoBio/goquery v1.12.0 h1:pAcL4g3WRXekcB9AU/y1mbKez2dbY2AajVhtkO8RIBo=
5759
github.com/PuerkitoBio/goquery v1.12.0/go.mod h1:802ej+gV2y7bbIhOIoPY5sT183ZW0YFofScC4q/hIpQ=
5860
github.com/TheZeroSlave/zapsentry v1.23.0 h1:TKyzfEL7LRlRr+7AvkukVLZ+jZPC++ebCUv7ZJHl1AU=
@@ -324,17 +326,17 @@ github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
324326
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
325327
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
326328
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
327-
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
328-
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
329+
github.com/kevinburke/ssh_config v1.4.0 h1:6xxtP5bZ2E4NF5tuQulISpTO2z8XbtH8cg1PWkxoFkQ=
330+
github.com/kevinburke/ssh_config v1.4.0/go.mod h1:q2RIzfka+BXARoNexmF9gkxEX7DmvbW9P4hIVx2Kg4M=
329331
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
330332
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
331333
github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=
332334
github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=
333335
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
334336
github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
335337
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
336-
github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
337-
github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8=
338+
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
339+
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
338340
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
339341
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
340342
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -437,8 +439,8 @@ github.com/pierrec/lz4/v4 v4.1.26 h1:GrpZw1gZttORinvzBdXPUXATeqlJjqUG/D87TKMnhjY
437439
github.com/pierrec/lz4/v4 v4.1.26/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4=
438440
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
439441
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
440-
github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=
441-
github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=
442+
github.com/pjbgf/sha1cd v0.5.0 h1:a+UkboSi1znleCDUNT3M5YxjOnN1fz2FhN48FlwCxs0=
443+
github.com/pjbgf/sha1cd v0.5.0/go.mod h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM=
442444
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
443445
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
444446
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -451,13 +453,13 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
451453
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
452454
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
453455
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
454-
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
455-
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
456+
github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk=
457+
github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=
456458
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
457459
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
458460
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
459-
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
460-
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
461+
github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
462+
github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
461463
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
462464
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
463465
github.com/pterm/pterm v0.12.27/go.mod h1:PhQ89w4i95rhgE+xedAoqous6K9X+r6aSOI2eFF7DZI=
@@ -490,8 +492,8 @@ github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj
490492
github.com/segmentio/asm v1.2.1 h1:DTNbBqs57ioxAD4PrArqftgypG4/qNpXoJx8TVXxPR0=
491493
github.com/segmentio/asm v1.2.1/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
492494
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
493-
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
494-
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
495+
github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=
496+
github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
495497
github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4=
496498
github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM=
497499
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
@@ -608,16 +610,16 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6
608610
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ=
609611
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
610612
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
611-
go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48=
612-
go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8=
613-
go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0=
614-
go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs=
615-
go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18=
616-
go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE=
613+
go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms=
614+
go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g=
615+
go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g=
616+
go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc=
617+
go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8=
618+
go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE=
617619
go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8=
618620
go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew=
619-
go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI=
620-
go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA=
621+
go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw=
622+
go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA=
621623
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
622624
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
623625
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -817,6 +819,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
817819
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
818820
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
819821
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
822+
gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
823+
gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
820824
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
821825
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
822826
resty.dev/v3 v3.0.0-beta.6 h1:ghRdNpoE8/wBCv+kTKIOauW1aCrSIeTq7GxtfYgtevU=

internal/cmd/circle/circle.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package circle
2+
3+
import (
4+
"github.com/CompassSecurity/pipeleek/internal/cmd/circle/scan"
5+
"github.com/spf13/cobra"
6+
)
7+
8+
func NewCircleRootCmd() *cobra.Command {
9+
circleCmd := &cobra.Command{
10+
Use: "circle [command]",
11+
Short: "CircleCI related commands",
12+
GroupID: "CircleCI",
13+
}
14+
15+
circleCmd.AddCommand(scan.NewScanCmd())
16+
17+
return circleCmd
18+
}

0 commit comments

Comments
 (0)