2d8541533d
Currently the Rust builds fails, most likely due to a lock that happens with aarch64. Either the heartbeat tick dies early and timeout happens right before success or something else makes heartbeats not work at all. Best solution for now is to just increase timeout. |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
.ijwb | ||
.yarn/releases | ||
apollo | ||
bases | ||
build/bazel | ||
ci | ||
common | ||
config | ||
docs | ||
dotui | ||
hack | ||
hydra | ||
infrastructure | ||
initdb | ||
koji | ||
modulemd | ||
nofussvendor | ||
obsidian | ||
patches | ||
peridot | ||
platforms | ||
proto | ||
protoc-gen-openapiv2 | ||
rules_raw_ts_library | ||
rules_resf | ||
servicecatalog | ||
spicedb | ||
tailwind | ||
temporalutils | ||
third_party | ||
tools | ||
utils | ||
validate | ||
vendor | ||
views | ||
wrksp | ||
.bazelignore | ||
.bazelrc | ||
.bazelversion | ||
.editorconfig | ||
.envrc | ||
.envrc.prod.extarches | ||
.envrc.prod.mustafarocky | ||
.envrc.prod.quaymirror | ||
.envrc.prod.resf | ||
.gitignore | ||
.gitlab-ci.yml | ||
.prettierrc | ||
.yarnrc.yml | ||
BUILD.bazel | ||
CONTRIBUTORS | ||
COPYRIGHT | ||
go.mod | ||
go.sum | ||
LICENSE | ||
nogo.json | ||
OWNERS | ||
OWNERS_ALIASES | ||
package.json | ||
peridot.code-workspace | ||
README.md | ||
tsconfig.json | ||
WORKSPACE | ||
yarn.lock |
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)
# 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", //...)'
Reporting Issues / Bugs
Before opening any issues in this GitHub repository, please take a moment to read the wiki page Reporting Bugs and RFE's