mirror of
https://dev.azure.com/schwarzit/schwarzit.stackit-public/_git/audit-go
synced 2026-02-08 00:57:24 +00:00
94 lines
3.3 KiB
Markdown
94 lines
3.3 KiB
Markdown
## audit-go
|
|
|
|
The audit-go library is the core library for validation and sending of audit events.
|
|
|
|
### API Documentation
|
|
|
|
The api documentation can be found
|
|
[here](https://developers.stackit.schwarz/domains/core-platform/audit-log/sdk/overview/).
|
|
|
|
### Supported data types for routing
|
|
|
|
The following data types are currently supported for routing.
|
|
|
|
| ObjectType | Routable to customer | Description |
|
|
|--------------|----------------------|----------------------|
|
|
| system | no | The STACKIT system |
|
|
| project | yes | STACKIT project |
|
|
| organization | yes | STACKIT organization |
|
|
| folder | yes | STACKIT folder |
|
|
|
|
### Additional API implementations
|
|
|
|
There's already an implementation draft of the api for the new dynamically routing
|
|
audit log solution. As the implementation of the system has not officially been
|
|
started yet, it's only a draft with integration tests.
|
|
The API code is private to not confuse users or loose data until the new system
|
|
is ready to be used.
|
|
|
|
The code can be found in the [api_routable.go](./api_routable.go) and
|
|
[api_routable_test.go](./api_routable_test.go) files.
|
|
|
|
### Development
|
|
|
|
#### Linter
|
|
|
|
The linter *golangci-lint* can either be installed via package manager (e.g. brew) or
|
|
by running the following command in the terminal:
|
|
|
|
```shell
|
|
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.61.0
|
|
```
|
|
|
|
#### Schema Generation
|
|
|
|
Go structs are generated from Protobuf schema by using [Buf](https://buf.build) and some plugins.
|
|
The buf plugins are referenced in the *proto/buf.gen.yaml* file and are expected
|
|
to be installed locally.
|
|
The schema generator also generates code to validate constraints specified
|
|
in the schema.
|
|
|
|
Buf and the required plugins can either be installed via package manager (e.g. brew)
|
|
or manually by running:
|
|
|
|
```shell
|
|
go install github.com/bufbuild/buf/cmd/buf@v1.45.0 #Pipeline: bufVersion
|
|
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.35.1 #Pipeline: protobufVersion, go.mod: buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go
|
|
go install github.com/envoyproxy/protoc-gen-validate@v1.1.0 #Pipeline: protobufValidateVersion, go.mod: google.golang.org/protobuf
|
|
```
|
|
|
|
Please check that the versions above match the versions in the *go.mod* file
|
|
and the *.azuredevops/build-pipeline.yml* file.
|
|
|
|
Then the schema can be generated:
|
|
|
|
```bash
|
|
cd proto
|
|
buf generate
|
|
```
|
|
|
|
#### Build
|
|
|
|
The library can be built by executing the following commands:
|
|
|
|
```bash
|
|
go mod download && go mod tidy && go get ./... && go fmt ./... && go vet ./... && golangci-lint run && go build ./... && go test ./...
|
|
```
|
|
|
|
##### Testcontainers
|
|
|
|
To run the tests **Docker** is needed as [Testcontainers](https://testcontainers.com/)
|
|
is used to run integration tests using a solace docker container.
|
|
|
|
#### Register buf validation schema in IntelliJ / Goland
|
|
|
|
The schema files use `Buf` protobuf extensions for validation of constraints.
|
|
|
|
To register the schema in IntelliJ / Goland clone the repo and add the import path:
|
|
|
|
```bash
|
|
git clone https://github.com/bufbuild/protovalidate.git
|
|
```
|
|
|
|
IntelliJ/Goland > Settings > Languages & Frameworks > Protocol Buffers > Import Paths > +
|
|
(Add Path) > …/protovalidate/proto/protovalidate
|