Notary is an open source project that warmly welcomes community contributions, suggestions, fixes, and constructive feedback.
This tutorial guides you through setting up a development environment for Notary.
After going through these steps, you will have a general idea of how to build and run Notary.
Install Go:
sudo snap install go --classic
Install NodeJS:
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update
sudo apt install nodejs
Clone the repository:
git@github.com:canonical/notary.git
Install the npm dependencies:
npm install --prefix ui
Build the frontend:
npm run build --prefix ui
Build the Go binary:
go build -o notary cmd/notary/main.go
Create a certificate and private key:
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 1 -out cert.pem -subj "/CN=example.com"
Create a notary.yaml
file with the following content:
key_path: "key.pem"
cert_path: "cert.pem"
db_path: "certs.db"
port: 3000
pebble_notifications: false
Run Notary:
./notary -config notary.yaml
Access the Notary UI at https://localhost:3000
.
Run go unit tests by running:
go test ./...
Run frontend vitest test suite by running:
npm run test --prefix ui
Run the linter for golang by running:
golangci-lint run ./...
Run the linter for typescript by running:
npm run lint
Install rockcraft:
sudo snap install rockcraft --classic
Build the container image:
rockcraft pack -v
Copy the container image to the docker daemon:
version=$(yq '.version' rockcraft.yaml)
sudo rockcraft.skopeo --insecure-policy copy oci-archive:notary_${version}_amd64.rock docker-daemon:notary:${version}
Run the container image:
docker run notary:${version}