mirror of
https://github.com/rocky-linux/peridot.git
synced 2024-12-21 02:08:29 +00:00
68 lines
3.1 KiB
Markdown
68 lines
3.1 KiB
Markdown
# Peridot
|
|
Named after the Gemstone, Peridot (pronounced - PERR-ih-dot) is a cloud-native build and release tool used for building, releasing and maintaining Linux distributions and forks.
|
|
|
|
## Structure
|
|
__Other components pending__
|
|
|
|
* publisher - `Composer for Peridot (currently only includes legacy mode)`
|
|
* peridot - `Modern build system`
|
|
* apollo - `Errata mirroring and publishing platform`
|
|
* utils - `Common utilities`
|
|
* modulemd - `Modulemd parser in Go`
|
|
|
|
|
|
## Development
|
|
Before the setup install `jq`, `golang`, `make`, `bazelisk`, `docker`, `helm`, and `kubectl`:
|
|
|
|
On Linux, jq, golang, make and docker can be installed using the package manager.
|
|
|
|
Links for installing the other software:
|
|
* Bazelisk: https://github.com/bazelbuild/bazelisk/releases
|
|
* Helm: https://helm.sh/docs/intro/install/
|
|
* Kubectl: https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
|
|
|
|
A local Kubernetes cluster is also required. Docker Desktop is a good solution.
|
|
|
|
Configure kubectl to manage the local Kubernetes cluster by placing the
|
|
KubeConfig yaml into `$HOME/.kube/config` and do `chmod 600 $HOME/.kube/config`
|
|
|
|
Then download istio into a local directory:
|
|
https://istio.io/latest/docs/setup/getting-started/
|
|
|
|
#### Initial setup (will soon be replaced by one command dev cluster)
|
|
```bash
|
|
# In the directory where you downloaded istio
|
|
bin/istioctl install --set profile=default --set hub=docker.io/querycapistio --set tag=1.12.1 -y
|
|
# On aarch64 (ex. M1 Mac) only and add arm64 to list of preferred schedule archs
|
|
# Run this while install is running
|
|
kubectl -n istio-system edit deployment istio-ingressgateway
|
|
sudo hack/deploy_dev_registry
|
|
hack/setup_external_dev_services
|
|
# Run `kubectl get svc` and add the port of postgres-postgresql to your rc file
|
|
# Example:
|
|
# postgres-postgresql NodePort 10.102.68.75 <none> 5432:32442/TCP 3m32s
|
|
# export POSTGRES_PORT="32442"
|
|
hack/setup_k8s_dev_env
|
|
git clone https://github.com/temporalio/temporal /tmp/temporal && pushd /tmp/temporal && make temporal-sql-tool && popd && hack/setup_dev_temporal /tmp/temporal
|
|
# Sometimes the namespace registration may fail because
|
|
# Temporal tools CrashLooped before we could run the migrations.
|
|
# Run `kubectl delete pods -l "app.kubernetes.io/name=temporal"` and then re-run
|
|
# `kubectl exec -it services/temporal-admintools -- tctl --namespace default namespace re`
|
|
hack/setup_base_internal_services
|
|
# For the cert, mkcert is recommended (mkcert.dev)
|
|
# Add default cert using `kubectl -n istio-system create secret tls default-cert --cert=cert.pem --key=cert.key`
|
|
# Create the Istio gateway
|
|
bazel run //infrastructure/istio-dev
|
|
```
|
|
Running `./hack/govendor` should create the necessary structure for development
|
|
|
|
For best experience use IntelliJ+Bazel but `govendor` creates structure that is compatible with all other Go tools
|
|
#### Auto generate (only) BUILD files for Go
|
|
`bazel run //:gazelle`
|
|
#### Vendor Go dependencies
|
|
`./hack/govendor`
|
|
#### Run UI in development mode
|
|
`ibazel run //TARGET:TARGET.server` - example: `ibazel run //apollo/ui:apollo.server`
|
|
#### Find UI server targets
|
|
`bazel query 'attr(tags, "resf_frontend_server", //...)'`
|