mirror of
https://github.com/rocky-linux/peridot.git
synced 2024-12-20 17:58:29 +00:00
Cloud-native build system and release tools tailored to building, releasing, and maintaining Enterprise Linux distributions and forks
e23a83e859
When polling RH Errata, Apollo sets the last sync date to the first advisory we process (advisories are synced in descending order). If a failure happens while processing newer advisories, the sync is already set and the system skips over advisories it has NOT yet processed. This PR sets the mirror state in a parent transaction, then commits that transaction if no failures occur. Skipping advisories when an error occurs is also reworked, where the first failure fails the workflow. The workflow will retry on its normal schedule. |
||
---|---|---|
.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", //...)'