forked from adoptium/temurin-build
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add docs for an initial stab at adoptium#957
- Loading branch information
1 parent
0cae7e2
commit e9d6b4b
Showing
2 changed files
with
1,235 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
|
||
# Architecture | ||
|
||
Our build farm has a number of major components: | ||
|
||
1. Jenkins Build Pipeline Configuration | ||
1. Adopt build scripts | ||
1. Supporting libraries | ||
|
||
## Process | ||
|
||
A rough structure of the build is as follows | ||
 | ||
|
||
### Jenkins Job | ||
|
||
#### Regenerate Jobs | ||
Jenkins CI jobs are generated by the [regeneration pipelines](pipelines/build/regeneration) in Jenkins. The documentation for | ||
this process can be found at [regeneration docs](pipelines/build/regeneration/README.md), however they generate the jobs | ||
at https://ci.adoptopenjdk.net/job/build-scripts/ which are the builds that coordinate the entire process of nightly | ||
and release builds. | ||
|
||
#### Pipeline Jobs | ||
These are the initial scripts that are the top level jobs that are invoked, this in turn invokes the downstream build | ||
jobs for each configuration/platform then coordinates deploying the results to Github. The majority of the code that | ||
defines this stage is contained within [build_base_file.groovy](https://github.com/AdoptOpenJDK/openjdk-build/blob/master/pipelines/build/common/build_base_file.groovy). | ||
|
||
#### Indiviual Build Jobs | ||
This are invoked by the parent pipeline job and each build creates the archives/installers for a given platform. The majority | ||
of this code is defined in [openjdk_build_pipeline.groovy](https://github.com/AdoptOpenJDK/openjdk-build/blob/master/pipelines/build/common/openjdk_build_pipeline.groovy). | ||
|
||
#### Build farm scripts | ||
These are the entry point for the build itself when it executes on the end node. These are cross platform shell scripts | ||
defined in [build-farm](https://github.com/AdoptOpenJDK/openjdk-build/tree/master/build-farm) and are kicked off by running | ||
[make-adopt-build-farm.sh](https://github.com/AdoptOpenJDK/openjdk-build/blob/master/build-farm/make-adopt-build-farm.sh). | ||
This load configuration/setup that is specific to the adopt build farm and the current architecture before | ||
invoking the build scripts. | ||
|
||
#### Build Scripts | ||
These are the cross platform scripts that invoke the actual build. When inside the build farm they are executed | ||
from [make-adopt-build-farm.sh](https://github.com/AdoptOpenJDK/openjdk-build/blob/master/build-farm/make-adopt-build-farm.sh). | ||
The initial entry point for these scripts is [makejdk-any-platform.sh](https://github.com/AdoptOpenJDK/openjdk-build/blob/master/makejdk-any-platform.sh) | ||
and the majority of the code for this step is contained within [sbin](https://github.com/AdoptOpenJDK/openjdk-build/tree/master/sbin). | ||
|
||
#### adopt-shared-lib | ||
|
||
The [adopt-shared-lib](https://github.com/AdoptOpenJDK/openjdk-build/tree/master/pipelines/library/src) is a Groovy library that provides a number of helper classes to the other parts of the build process such | ||
as a version parser, metadata file and build configuration definitions. |
Oops, something went wrong.