You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The artifact proxy is a **ContentAddressable Storage (CAS) Proxy** that sits in front of different storage backends.
3
+
The artifact proxy is a **Content-Addressable Storage (CAS) Proxy** that sits in front of different storage backends.
4
4
5
-
Clients such as the Chainloop Control Plane or the CLI can use this proxy to make sure that **immutable uploads are performed**. Files that later, on **can only be referenced by their content digest (sha256)**.
5
+
Clients such as the Chainloop Control Plane or the CLI use this proxy to make sure that **uploaded artifacts are immutable and uniquely identifiable by their content digest (sha256sum)**.
6
6
7
7
NOTE: At the moment of this writing, only an [OCI](https://opencontainers.org/) storage backend is supported. In the future you should potentially expect Object Storage Support (i.e AWS s3) as well.
8
8
9
9

10
10
11
11
The project is a [Go](https://go.dev/) service that leverages [protocol buffers](https://github.com/protocolbuffers/protobuf) and [gRPC](https://grpc.io/) for its streaming API, [wire](https://github.com/google/wire/) for dependency injection and the [Kratos framework](https://github.com/go-kratos/kratos) for additional utilities such middlewares, configuration management or error handling.
12
12
13
-
The proxy API implements [a bytestream](https://pkg.go.dev/google.golang.org/api/transport/bytestream) gRPC service. This enables an efficient, and modern, streaming API for chunk based operations on top of HTTP/2.
13
+
The proxy API implements a [bytestream gRPC service](https://pkg.go.dev/google.golang.org/api/transport/bytestream). This enables an efficient, and modern, streaming API on top of HTTP/2.
14
14
15
15
Its structure contains the following top to down layers.
16
16
@@ -26,7 +26,7 @@ This secret backend is used to download OCI repository credentials (repository p
26
26
27
27
## AuthN/AuthZ
28
28
29
-
The Artifact CAS API expects each request to contain a [JSON Web Token](https://auth0.com/docs/secure/tokens/json-web-tokens) with references to a) what operation is this token allowed to do (Download, Upload) and b) a reference to where the CAS can find the OCI credentials.
29
+
The Artifact CAS API expects each request to contain a [JSON Web Token](https://auth0.com/docs/secure/tokens/json-web-tokens) with references to a) what operation is this token allowed to do (download or upload) and b) a reference to where the CAS can find the target OCI credentials.
30
30
31
31
Currently, this token is generated by the Control Plane and used on demand. You can find the generator we use to craft those tokens [here](../../internal/robotaccount/cas/robotaccount.go).
32
32
@@ -36,7 +36,7 @@ Note: there are plans to support [JWKS endpoints](https://auth0.com/docs/secure/
36
36
37
37
## Runbook
38
38
39
-
We leverage`make` for most development tasks. Run `make -C app/artifact-cas` to see a list of the available tasks.
39
+
We use`make` for most development tasks. Run `make -C app/artifact-cas` to see a list of the available tasks.
40
40
41
41
### Run the project in development
42
42
@@ -77,7 +77,7 @@ make build
77
77
78
78
### Generate API code from protocol buffer defintions (\*.proto)
79
79
80
-
We leverage buf.io to lint and generate proto files. Make sure you [install buf](https://docs.buf.build/installation) first. Once done, generating the API code is as easy as executing
80
+
We use buf.io to lint and generate proto files. Make sure you [install buf](https://docs.buf.build/installation) first. Once done, generating the API code is as easy as executing
Copy file name to clipboardExpand all lines: app/cli/README.md
+6-4Lines changed: 6 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Command Line Interface (CLI)
2
2
3
-
This Command Line Interface (CLI) is a local client that's used for two purposes
3
+
This Command Line Interface (CLI) is a local client that's used for two purposes:
4
4
5
5
a) Operator [Management Tasks](https://docs.chainloop.dev/getting-started/workflow-definition)
6
6
@@ -9,15 +9,15 @@ a) Operator [Management Tasks](https://docs.chainloop.dev/getting-started/workfl
9
9
10
10
b) [Attestation Crafting Process](https://docs.chainloop.dev/getting-started/attestation-crafting)
11
11
12
-
-This CLI will be used in different CI/CD systems to perform the [attestation process](https://docs.chainloop.dev/getting-started/attestation-crafting)
12
+
-Perform the [attestation process](https://docs.chainloop.dev/getting-started/attestation-crafting) inside a CI/CD system.
13
13
14
14

15
15
16
-
The project is a [Go](https://go.dev/) CLI that leverages [Cobra](https://github.com/spf13/cobra) for CLI scaffolding, [Viper](https://github.com/spf13/viper) for configuration handling, [gRPC](https://grpc.io/) to communicate with both the control plane and the Artifact CAS APIs, and the [cosign](https://github.com/sigstore/cosign), [in-toto](https://github.com/in-toto/in-toto), [DSEE](https://github.com/secure-systems-lab/dsse/) and [SLSA](https://github.com/slsa-framework/slsa) projects to implement the attestation process.
16
+
The project is a [Go](https://go.dev/) CLI that leverages [Cobra](https://github.com/spf13/cobra) for CLI scaffolding, [Viper](https://github.com/spf13/viper) for configuration handling, [gRPC](https://grpc.io/) to communicate with both the control plane and the Artifact CAS APIs, and the [cosign](https://github.com/sigstore/cosign), [in-toto](https://github.com/in-toto/in-toto), [DSEE](https://github.com/secure-systems-lab/dsse/) and [SLSA](https://github.com/slsa-framework/slsa) projects for the attestation process.
17
17
18
18
## Runbook
19
19
20
-
We leverage`make` for most development tasks. Run `make -C app/cli` to see a list of the available tasks.
20
+
We use`make` for most development tasks. Run `make -C app/cli` to see a list of the available tasks.
21
21
22
22
### Run the project in development
23
23
@@ -27,6 +27,8 @@ Refer to [development guide](../../devel/README.md) for more information but in
27
27
go run app/cli/main.go --insecure
28
28
```
29
29
30
+
> NOTE: In development a --insecure flag must be provided to talk to the local APIs
31
+
30
32
### Configure the CLI to point to the local control plane and CAS services.
31
33
32
34
If you want to use this CLI pointing to a local or custom instance of Chainloop, you need to perform a config override this way.
0 commit comments