mirror of
https://github.com/rocky-linux/peridot.git
synced 2024-12-21 02:08:29 +00:00
Cloud-native build system and release tools tailored to building, releasing, and maintaining Enterprise Linux distributions and forks
6e77412823
Previously Keykeeper had a faulty verify check, where `rpm --checksig` didn't actually work because the RPM key was never imported. This would normally be caught but the TaskSignature creation was done after every signature without a transaction. That led to the activity succeeding next launch with either a faulty signed RPM or a correctly signed RPM. We caught all instances of this by verifying signature of all artifacts during compose, but it was an annoying problem that we would run into occasionally. This should fix that. |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
.ijwb | ||
apollo | ||
bases | ||
build/bazel | ||
ci | ||
common | ||
config | ||
docs | ||
dotui | ||
hack | ||
hydra | ||
infrastructure | ||
initdb | ||
koji | ||
modulemd | ||
nofussvendor | ||
obsidian | ||
patches | ||
peridot | ||
platforms | ||
proto | ||
protoc-gen-openapiv2 | ||
publisher | ||
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 | ||
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
, bazelisk
, docker
and kubectl
.
A local Kubernetes cluster is also required. Docker Desktop is a good solution.
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", //...)'