-
Notifications
You must be signed in to change notification settings - Fork 396
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PR Builds: New Features #6525
PR Builds: New Features #6525
Conversation
jenkins build linux_x86_cgroupv1_docker |
jenkins build linux_x86 |
jenkins build linux_x86_cgroupv1_docker |
jenkins build linux_x86 |
jenkins build xlinux |
jenkins build xlinux |
jenkins build xlinux |
@jdekonin @AdamBrousseau Docker Pipeline plugin needs to be installed for OMR Jenkins. Ref: https://stackoverflow.com/questions/41215997/jenkins-docker-pipeline-error.
|
@AdamBrousseau Currently, Also, we can reuse existing specs in omrbuild.groovy without adding any new ones for supporting cgroupv1/v2 and docker. |
8e3bdb7
to
1cd54c6
Compare
As per eclipse-cbi/jiro#214 (comment), the Eclipse foundation does not support the Docker plugin in Jenkins:
|
Will address error handling and container size concerns once the test environment is alive i.e. job to upload docker image to dockerhub. Then, will be able to test PR builds. Also, regex restrictions need to be removed. |
I think we need to "protect" against unexpected behaviour a bit. In particular, if a Windows machine had docker installed, it would run the default ub20 x64 container which would be a different environment than you would expect. However, I wouldn't object to leaving that for a future improvement. |
TODOs from the OMR arch meeting #6528:
|
jenkins build xlinux(!cgroupv2,test:'-R porttest',configure:'-DCMAKE_CXX_FLAGS=-DDUMP_DBG -DCMAKE_C_FLAGS=-DDUMP_DBG',env:'GTEST_FILTER=PortDumpTest.*',compile:'-j8') |
jenkins build xlinux(!cgroupv2,test:'-R porttest',configure:'-DCMAKE_CXX_FLAGS=-DDUMP_DBG -DCMAKE_C_FLAGS=-DDUMP_DBG',env:'GTEST_FILTER=PortDumpTest.*',compile:'-j8') |
1 similar comment
jenkins build xlinux(!cgroupv2,test:'-R porttest',configure:'-DCMAKE_CXX_FLAGS=-DDUMP_DBG -DCMAKE_C_FLAGS=-DDUMP_DBG',env:'GTEST_FILTER=PortDumpTest.*',compile:'-j8') |
jenkins build xlinux(!cgroupv2,test:'-R porttest',cmake:'-DCMAKE_CXX_FLAGS=-DDUMP_DBG -DCMAKE_C_FLAGS=-DDUMP_DBG',env:'GTEST_FILTER=PortDumpTest.*',compile:'-j8') |
jenkins build x32linux(!cgroupv1,docker,test:'-R porttest',cmake:'-DCMAKE_CXX_FLAGS=-DDUMP_DBG -DCMAKE_C_FLAGS=-DDUMP_DBG',env:'GTEST_FILTER=PortDumpTest.*',compile:'-j8') |
jenkins build all |
New changes are summarized in the below table. It highilghts the minimal infra coverage for cgroup support.
"Others" refer to the remaining Linux build specs which have machine nodes with old operating systems and no cgroup labels. These machine nodes have the cgroup.v1 configuration by default. |
jenkins build plinux(cgroupv1) |
1 similar comment
jenkins build plinux(cgroupv1) |
jenkins build plinux(cgroupv2) |
Can you add the documentation for the new Jenkins launch options to the Committer Guide? [1] It's really the only doc we have on the Jenkins options and it saves developers having to find this PR for usage info. Thanks. [1] https://github.com/eclipse/omr/blob/master/doc/GuideForCommitters.md |
1. Ubuntu 16 (Ub16) is out of service. Thus, Ub16 x86_64 Dockerfile has been removed. 2. We can write a script to generate Dockerfiles to support different operating systems (OSs) and architectures. For the time being, only a Dockerfile for Ubuntu 20 x86_64 has been added. This Dockerfile can be used to derive a script to generate Dockerfiles for other OSs and architectures since it has all the fundamental components. 3. OMR_RUNNING_IN_DOCKER=1 environment variable is set when the PR builds are run inside Docker. This will be used in tests to verify the behaviour port library sysinfo functions. 4. PortStrTest.str_test4 is temporarily disabled since it fails in a container. Issue tracker: eclipse-omr#6566. 5. Changes to the default behaviour: a) linux_x86 PR builds will be run on cgroup.v1 nodes inside a container. b) linux_x86-64 PR builds will be run on cgroup.v2 nodes inside a container. c) linux_ppc-64_le_gcc PR builds will be run on cgroup.v2 nodes. 6. PR build changes: a) Existing PR build syntax should have no impact. b) All new features are additive. c) New features allow PR builds to be configurable. 7. New command example: jenkins build xlinux(OPTION1,OPTION2,...) 8. The following options are added: a) cgroupv1 -> add label to run the build on a cgroup.v1 node. E.g. jenkins build xlinux(cgroupv1) b) !cgroupv1 -> remove label to run the build on a cgroup.v1 node. E.g. jenkins build xlinux(!cgroupv1) c) cgroupv2 -> add label to run the build on a cgroup.v2 node. E.g. jenkins build xlinux(cgroupv2) d) !cgroupv2 -> remove label to run the build on a cgroup.v2 node. E.g. jenkins build xlinux(!cgroupv2) e) docker -> run the build inside a Docker container. E.g. jenkins build xlinux(cgroupv2,docker) f) !docker -> do not run the build inside a Docker container. E.g. jenkins build xlinux(cgroupv1,!docker) g) cmake:'ARGS' -> ARGS will be appended during the configure phase. E.g. jenkins build xlinux(cmake:'-DCMAKE_C_FLAGS=-DDUMP_DBG') h) compile:'ARGS' -> ARGS will be appended during the compile phase. E.g. jenkins build xlinux(compile:'-d') i) test:'ARGS' -> ARGS will be appended while running the tests. E.g. jenkins build xlinux(test:'-R porttest') j) env:'VAR1=VAL1,VAR2=VAL2' -> environment variables will be added. E.g. jenkins build xlinux(env:'GTEST_FILTER=PortDumpTest.*') 9. Example: jenkins build xlinux(<OPTIONS_A>),all In this example, the xlinux PR build will use OPTIONS_A whereas all other PR builds will use their default settings/options. 10. Example: jenkins build xlinux(<OPTIONS_A>),all(<OPTIONS_B>) In this example, the xlinux PR build will use OPTIONS_A whereas all other PR builds will use OPTIONS_B. 11. Example: jenkins build xlinux(<OPTIONS_A>),all,linux_x86-64(<OPTIONS_B>) In this example, xlinux is an alias for linux_x86-64. Two different sets of options are provided for the same PR build specfication. The set of options of provided at the end will be enforced. In this example, OPTIONS_B will be used whereas OPTIONS_A will be ignored. The same analogy is also used if N-sets of options are specified for the a PR build specification. 12. Related: - eclipse-omr#1281 - eclipse-omr#6468 - eclipse-omr#6477 - eclipse-omr#6501 Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
f27ffa9
to
fdf0c72
Compare
30c44c4
to
eed05cf
Compare
Signed-off-by: Babneet Singh <sbabneet@ca.ibm.com>
eed05cf
to
cdfc670
Compare
@0xdaryl Documentation added in a separate commit for the time being. If needed, I will squash it after the review. |
been removed.
operating systems (OSs) and architectures. For the time being, only a
Dockerfile for Ubuntu 20 x86_64 has been added. This Dockerfile
can be used to derive a script to generate Dockerfiles for other
OSs and architectures since it has all the fundamental components.
OMR_RUNNING_IN_DOCKER=1
environment variable is set when the PR buildsare run inside Docker. This will be used in tests to verify the
behaviour port library sysinfo functions.
PortStrTest.str_test4
is temporarily disabled since it fails in acontainer. Issue tracker: PortStrTest.str_test4 fails inside a Docker container #6566.
a) linux_x86 PR builds will be run on cgroup.v1 nodes inside a container.
b) linux_x86-64 PR builds will be run on cgroup.v2 nodes inside a container.
c) linux_ppc-64_le_gcc PR builds will be run on cgroup.v2 nodes.
a) Existing PR build syntax should have no impact.
b) All new features are additive.
c) New features allow PR builds to be configurable.
jenkins build xlinux(OPTION1,OPTION2,...)
a)
cgroupv1
-> add label to run the build on a cgroup.v1 node.E.g. --
jenkins build xlinux(cgroupv1)
b)
!cgroupv1
-> remove label to run the build on a cgroup.v1 node.E.g. --
jenkins build xlinux(!cgroupv1)
c)
cgroupv2
-> add label to run the build on a cgroup.v2 node.E.g. --
jenkins build xlinux(cgroupv2)
d)
!cgroupv2
-> remove label to run the build on a cgroup.v2 node.E.g. --
jenkins build xlinux(!cgroupv2)
e)
docker
-> run the build inside a Docker container.E.g. --
jenkins build xlinux(cgroupv2,docker)
f)
!docker
-> do not run the build inside a Docker container.E.g. --
jenkins build xlinux(cgroupv1,!docker)
g)
cmake:'ARGS'
-> ARGS will be appended during the configure phase.E.g. --
jenkins build xlinux(cmake:'-DCMAKE_C_FLAGS=-DDUMP_DBG')
h)
compile:'ARGS'
-> ARGS will be appended during the compile phase.E.g. --
jenkins build xlinux(compile:'-d')
i)
test:'ARGS'
-> ARGS will be appended while running the tests.E.g. --
jenkins build xlinux(test:'-R porttest')
j)
env:'VAR1=VAL1,VAR2=VAL2'
-> environment variables will be added.E.g. --
jenkins build xlinux(env:'GTEST_FILTER=PortDumpTest.*')
jenkins build xlinux(<OPTIONS_A>),all
In this example, the
xlinux
PR build will useOPTIONS_A
whereasall other PR builds will use their default settings/options.
jenkins build xlinux(<OPTIONS_A>),all(<OPTIONS_B>)
In this example, the
xlinux
PR build will useOPTIONS_A
whereasall other PR builds will use
OPTIONS_B
.jenkins build xlinux(<OPTIONS_A>),all,linux_x86-64(<OPTIONS_B>)
In this example,
xlinux
is an alias forlinux_x86-64
. Two differentsets of options are provided for the same PR build specfication. The set
of options of provided at the end will be enforced. In this example,
OPTIONS_B
will be used whereasOPTIONS_A
will be ignored. The sameanalogy is also used if N-sets of options are specified for the a PR
build specification.
Signed-off-by: Babneet Singh sbabneet@ca.ibm.com