Cloud-native build system and release tools tailored to building, releasing, and maintaining Enterprise Linux distributions and forks
Go to file
Neil Hanlon 289947247b
feature(peridot-cli): add task logs command
`peridot task logs` will accept either a build ID or package name. In
the latter case, the project will be queried for the latest build for
the given package name. With the build task ID in hand, the task can be
queried for its BUILD_ARCH subtasks, which contain the logs for the
binary RPM builds.

Passing `-C` or `--cwd` with a directory will change into that directory
before writing files. That directory **must** exist beforehand.
Otherwise, $PWD is used.

By default, a separate file will be created for each
<task>-<subtask>-<architecture> tuple, which accounts for modular packages
with multiple outputs.

Passing the `-c` or `--combined` flag will combine all the logs into a
single file, named <task id>.log
2024-07-25 21:44:31 -04:00
.github/ISSUE_TEMPLATE add issue templates 2022-07-12 11:06:59 -07:00
.ijwb Major upgrades 2024-03-17 08:06:08 +01:00
.yarn/releases Lock yarn version to classic because build does not support yarn modern 2023-01-26 00:42:18 -08:00
apollo add ^ as a character for release tag 2024-04-24 13:49:44 -07:00
bases maintenance: upgrade base images and enable rpmautospec for RL10 2024-02-23 23:27:36 +01:00
build/bazel Major upgrades 2024-03-17 08:06:08 +01:00
ci Yumrepofsupdater now supports updateinfo.xml, and delete works better. Heartbeats should no longer cause memory leaks 2023-02-17 19:48:59 +01:00
common Initial Helm support 2022-10-31 03:23:40 +01:00
config Use newer CI images due to Bazel corruption issue 2023-11-09 01:02:38 +01:00
docs docs: Pretty up the yumrepofs doc, pending further expansion 2022-07-08 08:19:52 -07:00
dotui Initial commit 2022-07-07 22:13:21 +02:00
google Initial commit 2022-07-07 22:13:21 +02:00
hack Major upgrades 2024-03-17 08:06:08 +01:00
hydra Major upgrades 2024-03-17 08:06:08 +01:00
infrastructure Rename all to rules_resf and resf_frontend 2022-10-30 08:58:16 +01:00
initdb Rename all to rules_resf and resf_frontend 2022-10-30 08:58:16 +01:00
koji Initial commit 2022-07-07 22:13:21 +02:00
modulemd Support modulemd v3 and module sync 2022-11-04 03:30:10 +01:00
nofussvendor Major upgrades 2024-03-17 08:06:08 +01:00
obsidian fix: check return of consent request and don't send context (apparently) 2024-03-17 16:26:50 -04:00
patches Upgrade Go to 1.22.2 and fix ppc64le builds 2024-04-25 13:07:06 +02:00
peridot feature(peridot-cli): add task logs command 2024-07-25 21:44:31 -04:00
platforms Initial Helm support 2022-10-31 03:23:40 +01:00
proto Major upgrades 2024-03-17 08:06:08 +01:00
protoc-gen-openapiv2 Major upgrades 2024-03-17 08:06:08 +01:00
rules_raw_ts_library Initial commit 2022-07-07 22:13:21 +02:00
rules_resf Add favicon to page template 2023-02-10 16:25:23 -08:00
servicecatalog Rename all to rules_resf and resf_frontend 2022-10-30 08:58:16 +01:00
spicedb Re-add apollo proto and UI (UI served from errata.rocky is still managed from this repo) 2023-02-22 03:10:28 +01:00
tailwind Initial commit 2022-07-07 22:13:21 +02:00
temporalutils Rename all to rules_resf and resf_frontend 2022-10-30 08:58:16 +01:00
third_party Initial commit 2022-07-07 22:13:21 +02:00
tools Support changing local domain 2022-11-04 03:30:10 +01:00
utils Fix authentication for machine clients 2024-04-25 16:43:29 +02:00
validate Initial commit 2022-07-07 22:13:21 +02:00
vendor Major upgrades 2024-03-17 08:06:08 +01:00
views Initial commit 2022-07-07 22:13:21 +02:00
wrksp Initial commit 2022-07-07 22:13:21 +02:00
.bazelignore Initial commit 2022-07-07 22:13:21 +02:00
.bazelrc Major upgrades 2024-03-17 08:06:08 +01:00
.bazelversion Match bazelversion to new image 2023-11-09 01:12:02 +01:00
.editorconfig Initial commit 2022-07-07 22:13:21 +02:00
.envrc Add support for .envrc.local 2022-11-04 03:30:09 +01:00
.envrc.prod.extarches Initial commit 2022-07-07 22:13:21 +02:00
.envrc.prod.ghcr Major upgrades 2024-03-17 08:06:08 +01:00
.envrc.prod.mustafarocky Sync-01 - 10/30/2022 2022-10-30 02:59:43 +01:00
.envrc.prod.quaymirror Initial commit 2022-07-07 22:13:21 +02:00
.envrc.prod.resf Initial commit 2022-07-07 22:13:21 +02:00
.gitignore Major upgrades 2024-03-17 08:06:08 +01:00
.gitlab-ci.yml Initial commit 2022-07-07 22:13:21 +02:00
.prettierrc Initial commit 2022-07-07 22:13:21 +02:00
.yarnrc.yml Lock yarn version to classic because build does not support yarn modern 2023-01-26 00:42:18 -08:00
BUILD.bazel Major upgrades 2024-03-17 08:06:08 +01:00
CONTRIBUTORS Fix maintainers list 2022-07-08 22:40:40 +02:00
COPYRIGHT Initial commit 2022-07-07 22:13:21 +02:00
go.mod Major upgrades 2024-03-17 08:06:08 +01:00
go.sum Major upgrades 2024-03-17 08:06:08 +01:00
LICENSE Initial commit 2022-07-07 22:13:21 +02:00
nogo.json Initial commit 2022-07-07 22:13:21 +02:00
OWNERS Add owners and prow config 2022-10-30 02:21:39 +02:00
OWNERS_ALIASES Add owners and prow config 2022-10-30 02:21:39 +02:00
package.json Yumrepofsupdater now supports updateinfo.xml, and delete works better. Heartbeats should no longer cause memory leaks 2023-02-17 19:48:59 +01:00
peridot.code-workspace Initial commit 2022-07-07 22:13:21 +02:00
README.md section for reporting issues 2023-09-12 11:14:19 -07:00
repositories.bzl Major upgrades 2024-03-17 08:06:08 +01:00
tsconfig.json Add Cancel button to running tasks 2022-10-30 22:10:39 +01:00
WORKSPACE build RPM for peridot cli 2024-07-25 09:42:38 -04:00
yarn.lock Bump http-cache-semantics from 4.1.0 to 4.1.1 2023-02-18 14:41:42 +00:00

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:

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