carla/Jenkinsfile

470 lines
24 KiB
Plaintext
Raw Normal View History

2020-03-19 07:45:00 +08:00
#!/usr/bin/env groovy
pipeline
{
agent none
2018-05-07 23:33:43 +08:00
options
{
2018-07-10 22:26:05 +08:00
buildDiscarder(logRotator(numToKeepStr: '3', artifactNumToKeepStr: '3'))
2018-05-08 23:01:04 +08:00
}
stages
{
2024-02-08 00:35:48 +08:00
//stage('Building CARLA')
//{
2024-02-08 00:32:31 +08:00
//parallel
2024-02-08 00:34:12 +08:00
//{
stage('ubuntu')
{
2024-02-06 18:32:32 +08:00
agent { label "gpu" }
2021-02-10 02:35:20 +08:00
environment
{
UE4_ROOT = '/home/jenkins/UnrealEngine_4.26'
}
stages
{
2024-02-20 00:05:15 +08:00
stage('stash dependencies')
{
2024-02-20 18:16:07 +08:00
agent{ label 'cache' }
2024-02-20 00:05:15 +08:00
options{skipDefaultCheckout()}
steps
{
2024-02-20 18:57:25 +08:00
sh "echo ${BRANCH_NAME}"
2024-02-20 19:12:58 +08:00
sh "set"
2024-02-20 18:42:11 +08:00
sh "cp ../../Build_Linux.tar.gz ."
stash includes: 'Build_Linux.tar.gz', name: 'build_cache'
2024-02-20 00:05:15 +08:00
}
}
2024-02-08 00:16:52 +08:00
stage('prepare environment')
{
2024-02-08 00:16:52 +08:00
parallel
{
2024-02-08 00:16:52 +08:00
stage('generate libs')
{
2024-02-08 00:16:52 +08:00
stages
2024-02-07 23:45:11 +08:00
{
2024-02-08 00:16:52 +08:00
stage('ubuntu setup')
2024-02-07 23:45:11 +08:00
{
2024-02-08 00:16:52 +08:00
steps
2024-02-07 23:45:11 +08:00
{
2024-02-20 18:42:11 +08:00
unstash name: 'build_cache'
sh 'tar -xvzf Build_Linux.tar.gz'
2024-02-08 00:16:52 +08:00
sh 'git update-index --skip-worktree Unreal/CarlaUE4/CarlaUE4.uproject'
sh 'make setup ARGS="--python-version=3.8,2 --target-wheel-platform=manylinux_2_27_x86_64 --chrono"'
2024-02-07 23:45:11 +08:00
}
}
2024-02-08 00:16:52 +08:00
stage('ubuntu build')
2024-02-07 23:45:11 +08:00
{
2024-02-08 00:16:52 +08:00
steps
{
sh 'make LibCarla'
sh 'make PythonAPI ARGS="--python-version=3.8,2 --target-wheel-platform=manylinux_2_27_x86_64"'
sh 'make CarlaUE4Editor ARGS="--chrono"'
sh 'make plugins'
sh 'make examples'
}
post
{
always
{
archiveArtifacts 'PythonAPI/carla/dist/*.egg'
archiveArtifacts 'PythonAPI/carla/dist/*.whl'
2024-02-08 07:57:50 +08:00
stash includes: 'PythonAPI/carla/dist/*.egg', name: 'ubuntu_eggs'
stash includes: 'PythonAPI/carla/dist/*.whl', name: 'ubuntu_wheels'
2024-02-08 00:16:52 +08:00
}
}
2024-02-07 23:45:11 +08:00
}
2024-02-08 00:16:52 +08:00
stage('ubuntu unit tests')
2024-02-07 23:45:11 +08:00
{
2024-02-08 00:16:52 +08:00
steps
{
sh 'make check ARGS="--all --xml --python-version=3.8,2 --target-wheel-platform=manylinux_2_27_x86_64"'
}
post
2024-02-07 23:45:11 +08:00
{
2024-02-08 00:16:52 +08:00
always
{
junit 'Build/test-results/*.xml'
archiveArtifacts 'profiler.csv'
}
2024-02-07 23:45:11 +08:00
}
}
}
}
2024-02-08 00:16:52 +08:00
stage('Download additional resources')
{
2024-02-08 00:16:52 +08:00
stages
2024-02-07 23:45:11 +08:00
{
2024-02-08 00:16:52 +08:00
stage('TEST: Checkout Doxygen repo')
2024-02-07 23:45:11 +08:00
{
2024-02-08 00:16:52 +08:00
when { branch "ruben/jenkins_migration"; }
steps
2024-02-07 23:45:11 +08:00
{
2024-02-08 00:16:52 +08:00
dir('doc_repo')
{
checkout scmGit(
branches: [[name: '*/ruben/jenkins_migration']],
extensions: [
cleanBeforeCheckout(),
checkoutOption(120),
localBranch("**"),
cloneOption(noTags:false, reference:'', shallow: false, timeout:120)
],
userRemoteConfigs: [
[
credentialsId: 'github_token_as_pwd_2',
url: 'https://github.com/carla-simulator/carla-simulator.github.io.git'
]
2024-02-07 23:45:11 +08:00
]
2024-02-08 00:16:52 +08:00
)
}
2024-02-07 23:45:11 +08:00
}
}
stage('Checkout Doxygen repo')
{
when { anyOf { branch "master"; branch "dev"; buildingTag() } }
steps
{
dir('doc_repo')
{
checkout scmGit(
branches: [[name: '*/master']],
extensions: [
cleanBeforeCheckout(),
checkoutOption(120),
localBranch("**"),
cloneOption(noTags:false, reference:'', shallow: false, timeout:120)
],
userRemoteConfigs: [
[
credentialsId: 'github_token_as_pwd_2',
url: 'https://github.com/carla-simulator/carla-simulator.github.io.git'
]
]
)
}
}
}
2024-02-07 23:45:11 +08:00
2024-02-08 00:16:52 +08:00
stage('ubuntu retrieve content')
2024-02-07 23:45:11 +08:00
{
2024-02-08 00:16:52 +08:00
steps
{
sh './Update.sh'
}
2024-02-07 23:45:11 +08:00
}
}
}
2024-02-07 23:45:11 +08:00
2024-02-08 00:16:52 +08:00
}
}
2024-02-07 23:45:11 +08:00
stage('ubuntu package')
{
steps
{
2024-01-25 23:56:16 +08:00
sh 'make package ARGS="--python-version=3.8,2 --target-wheel-platform=manylinux_2_27_x86_64 --chrono"'
2024-02-20 18:57:25 +08:00
sh '''
2024-02-22 00:13:50 +08:00
prefix="PR-"
case "$BRANCH_NAME" in
("$prefix"*)
echo "This is a pull request, skipping complete package"
;;
(*)
echo "Generating complete package"
2024-02-21 17:18:51 +08:00
make package ARGS="--packages=AdditionalMaps,Town06_Opt,Town07_Opt,Town11,Town12,Town13,Town15 --target-archive=AdditionalMaps --clean-intermediate --python-version=3.8,2 --target-wheel-platform=manylinux_2_27_x86_64"
tar -czf CarlaUE4_logs.tar.gz Unreal/CarlaUE4/Saved/Logs/
2024-02-22 00:13:50 +08:00
;;
esac
2024-02-20 18:57:25 +08:00
'''
sh 'make examples ARGS="localhost 3654"'
}
2020-08-25 18:58:12 +08:00
post
2020-03-19 07:45:00 +08:00
{
2020-08-25 18:58:12 +08:00
always
2020-03-19 07:45:00 +08:00
{
archiveArtifacts 'Dist/*.tar.gz'
archiveArtifacts artifacts:'CarlaUE4_logs.tar.gz',
allowEmptyArchive: true
2024-02-08 07:57:50 +08:00
stash includes: 'Dist/CARLA*.tar.gz', name: 'ubuntu_package'
stash includes: 'Examples/', name: 'ubuntu_examples'
}
2020-09-16 19:22:09 +08:00
}
}
2024-02-08 07:57:50 +08:00
stage('Testing and documentation')
2020-09-16 19:22:09 +08:00
{
2024-02-08 07:57:50 +08:00
parallel
2020-09-16 19:22:09 +08:00
{
2024-02-08 07:57:50 +08:00
stage('Testing')
2020-09-16 19:22:09 +08:00
{
2024-02-08 07:57:50 +08:00
stages
{
stage('ubuntu smoke tests')
{
steps
{
unstash name: 'ubuntu_eggs'
unstash name: 'ubuntu_wheels'
unstash name: 'ubuntu_package'
unstash name: 'ubuntu_examples'
sh 'tar -xvzf Dist/CARLA*.tar.gz -C Dist/'
sh 'DISPLAY= ./Dist/CarlaUE4.sh -nullrhi -RenderOffScreen --carla-rpc-port=3654 --carla-streaming-port=0 -nosound > CarlaUE4.log &'
sh 'make smoke_tests ARGS="--xml --python-version=3.8 --target-wheel-platform=manylinux_2_27_x86_64"'
sh 'make run-examples ARGS="localhost 3654"'
}
post
{
always
{
archiveArtifacts 'CarlaUE4.log'
junit 'Build/test-results/smoke-tests-*.xml'
}
}
}
}
2020-10-01 22:12:15 +08:00
}
2024-02-08 07:57:50 +08:00
stage('Generate documentation')
{
stages
{
stage('ubuntu Doxygen generation')
{
when { anyOf { branch "master"; branch "dev"; buildingTag() } }
steps
{
sh 'make docs'
sh 'tar -czf carla_doc.tar.gz ./Doxygen'
stash includes: 'carla_doc.tar.gz', name: 'carla_docs'
}
}
2024-01-25 23:56:16 +08:00
2024-02-08 07:57:50 +08:00
stage('TEST: ubuntu Doxygen generation')
{
when { branch "ruben/jenkins_migration"; }
steps
{
sh 'make docs'
sh 'tar -czf carla_doc.tar.gz ./Doxygen'
stash includes: 'carla_doc.tar.gz', name: 'carla_docs'
}
}
}
2024-01-30 23:47:15 +08:00
}
}
}
2024-01-26 00:43:46 +08:00
2024-02-08 07:57:50 +08:00
stage('Deployment and documentation publishing')
2024-01-29 21:29:13 +08:00
{
2024-02-08 07:57:50 +08:00
parallel
2024-01-29 21:29:13 +08:00
{
2024-02-08 07:57:50 +08:00
stage('Release Deployment')
2024-01-31 07:19:08 +08:00
{
2024-02-08 07:57:50 +08:00
stages
{
stage('TEST: ubuntu deploy sim')
{
when { branch "ruben/jenkins_migration"; }
steps
{
sh 'git checkout .'
sh 'make deploy ARGS="--test"'
}
}
stage('ubuntu deploy dev')
{
when { branch "dev"; }
steps
{
sh 'git checkout .'
sh 'make deploy ARGS="--replace-latest"'
}
}
stage('ubuntu deploy master')
{
when { anyOf { branch "master"; buildingTag() } }
steps
{
sh 'git checkout .'
sh 'make deploy ARGS="--replace-latest --docker-push"'
}
}
}
}
stage('Publish documentation')
{
stages
{
stage('ubuntu Doxygen upload')
{
when { anyOf { branch "master"; branch "dev"; buildingTag() } }
steps
{
dir('doc_repo')
{
unstash name: 'carla_docs'
withCredentials([gitUsernamePassword(credentialsId: 'github_token_as_pwd_2', gitToolName: 'git-tool')]) {
sh '''
tar -xvzf carla_doc.tar.gz
git add Doxygen
git commit -m "Updated c++ docs" || true
git push --set-upstream origin ruben/jenkins_migration
'''
}
2024-02-08 07:57:50 +08:00
}
2024-02-08 07:57:50 +08:00
}
}
stage('TEST: ubuntu Doxygen upload')
{
when { branch "ruben/jenkins_migration"; }
steps
{
dir('doc_repo')
{
unstash name: 'carla_docs'
withCredentials([gitUsernamePassword(credentialsId: 'github_token_as_pwd_2', gitToolName: 'git-tool')]) {
sh '''
tar -xvzf carla_doc.tar.gz
git add Doxygen
git commit -m "Updated c++ docs" || true
git push --set-upstream origin ruben/jenkins_migration
'''
}
}
}
}
2024-01-31 07:19:08 +08:00
}
}
2024-01-31 07:25:02 +08:00
}
2020-03-13 16:24:46 +08:00
}
}
2024-02-12 19:56:19 +08:00
post
2024-02-12 19:51:56 +08:00
{
2024-02-12 19:56:19 +08:00
always
{
deleteDir()
}
2024-02-12 19:51:56 +08:00
}
}
2024-01-25 23:56:16 +08:00
/*
2020-03-19 21:38:04 +08:00
stage('windows')
{
2024-01-25 23:56:16 +08:00
agent { label "windows" }
2021-02-10 02:35:20 +08:00
environment
{
2021-02-24 01:11:55 +08:00
UE4_ROOT = 'C:\\UE_4.26'
2021-02-10 02:35:20 +08:00
}
2020-03-19 21:38:04 +08:00
stages
{
stage('windows setup')
{
steps
{
2020-12-11 20:11:14 +08:00
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2020-12-11 20:11:14 +08:00
git update-index --skip-worktree Unreal/CarlaUE4/CarlaUE4.uproject
"""
2020-03-19 21:38:04 +08:00
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2021-03-01 23:56:31 +08:00
make setup ARGS="--chrono"
2020-03-19 21:38:04 +08:00
"""
}
}
stage('windows build')
{
steps
{
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2020-03-19 21:38:04 +08:00
make LibCarla
"""
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2020-03-19 21:38:04 +08:00
make PythonAPI
"""
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2021-03-01 23:56:31 +08:00
make CarlaUE4Editor ARGS="--chrono"
2020-03-19 21:38:04 +08:00
"""
2020-12-22 18:08:27 +08:00
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2020-12-22 18:08:27 +08:00
make plugins
"""
2020-03-19 21:38:04 +08:00
}
post
{
always
{
archiveArtifacts 'PythonAPI/carla/dist/*.egg'
archiveArtifacts 'PythonAPI/carla/dist/*.whl'
2020-03-19 21:38:04 +08:00
}
}
}
stage('windows retrieve content')
{
steps
{
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2020-03-19 21:38:04 +08:00
call Update.bat
"""
}
}
stage('windows package')
{
steps
{
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2021-03-01 23:56:31 +08:00
make package ARGS="--chrono"
2020-03-19 21:38:04 +08:00
"""
2021-03-01 18:34:22 +08:00
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2023-10-27 20:39:37 +08:00
make package ARGS="--packages=AdditionalMaps,Town06_Opt,Town07_Opt,Town11,Town12,Town13,Town15 --target-archive=AdditionalMaps --clean-intermediate"
2021-03-01 18:34:22 +08:00
"""
2020-03-19 21:38:04 +08:00
}
post {
always {
archiveArtifacts 'Build/UE4Carla/*.zip'
}
}
}
2024-01-25 23:56:16 +08:00
2020-03-19 21:38:04 +08:00
stage('windows deploy')
{
2020-09-23 18:00:19 +08:00
when { anyOf { branch "master"; branch "dev"; buildingTag() } }
2020-03-19 21:38:04 +08:00
steps {
bat """
2024-01-25 23:56:16 +08:00
call C:\\Users\\jenkins\\setEnv64.bat
2020-03-20 01:58:09 +08:00
git checkout .
2024-01-25 23:56:16 +08:00
REM make deploy ARGS="--replace-latest"
2020-03-19 21:38:04 +08:00
"""
}
}
2024-01-25 23:56:16 +08:00
2020-03-19 21:38:04 +08:00
}
2020-08-25 18:58:12 +08:00
post
2020-03-19 21:38:04 +08:00
{
2020-08-25 18:58:12 +08:00
always
{
deleteDir()
2020-03-21 01:13:08 +08:00
}
2020-03-19 21:38:04 +08:00
}
2024-01-25 23:56:16 +08:00
}*/
2024-02-08 00:34:12 +08:00
//}
2024-02-08 00:35:48 +08:00
//}
}
2018-05-07 23:33:43 +08:00
}