The repo follows the Standard Go Project Layout. While this layout is not actually a Go standard, it is used in many projects and is well suited for situations where there are lots of other things beside Go code, which is the case for ods-pipeline
.
The most important pieces are:
-
build/images: `Dockerfile`s for the various container images in use. These images back Tekton tasks or the pipeline manager.
-
cmd: Main executables. These are installed (in different combinations) into the container images.
-
deploy: OpenShift/K8S resource definitions, such as
Task
resources. The tasks make use of the images built viabuild/images
and released to ghcr.io. Theirscript
calls an executables built from thecmd
folder. -
docs: Design and user documents
-
internal/manager: Implementation of the webhook receiver and pipeline manager - it creates and modifies the actual Tekton pipelines on the fly based on the config found in the repository triggering the webhook request.
-
pkg: Packages shared by the various main executables and the pipeline manager. These packages are the public interface and may be used outside this repo (e.g. by custom tasks). Example of packages are
bitbucket
(a Bitbucket Server API v1.0 client),sonar
(a SonarQube client exposing API endpoints, scanner CLI and report CLI in one unified interface),nexus
(a Nexus client for uploading, downloading and searching for assets) andconfig
(the ODS configuration specification). -
test: Test scripts and test data. The actual tests are located in the
e2e
subfolder. Those tests make use files located in thetestdata
subfolder, in particular those intestdata/workspaces
, which provide sample workspaces used by the Tekton task runs.