| pipeline { |
| options { |
| disableConcurrentBuilds() |
| } |
| |
| parameters { |
| string(name: 'LABEL', defaultValue: params.LABEL ?: 'macos-x86_64', description: 'Node label to run on') |
| |
| string(name: 'GIT_SHA', defaultValue: params.GIT_REVISION ?: '*/main', description: 'Git commit to build.') |
| |
| string(name: 'ARTIFACT', defaultValue: params.ARTIFACT ?: 'llvm.org/clang-stage1-RA/latest', description: 'Clang artifact to use') |
| } |
| |
| agent { |
| node { |
| label params.LABEL |
| } |
| } |
| |
| stages { |
| stage('Checkout') { |
| steps { |
| dir('llvm-project') { |
| checkout([$class: 'GitSCM', branches: [ |
| [name: params.GIT_SHA] |
| ], extensions: [ |
| [$class: 'CloneOption', |
| timeout: 30] |
| ], userRemoteConfigs: [ |
| [url: 'https://github.com/llvm/llvm-project.git'] |
| ]]) |
| } |
| dir('llvm-zorg') { |
| checkout([$class: 'GitSCM', branches: [ |
| [name: '*/main'] |
| ], extensions: [ |
| [$class: 'CloneOption', |
| reference: '/Users/Shared/llvm-zorg.git'] |
| ], userRemoteConfigs: [ |
| [url: 'https://github.com/llvm/llvm-zorg.git'] |
| ]]) |
| } |
| } |
| } |
| stage('Setup Venv') { |
| environment { |
| PATH="$PATH:/usr/bin:/usr/local/bin" |
| } |
| steps { |
| sh ''' |
| # Non-incremental, so always delete. |
| rm -rf clang-build clang-install host-compiler *.tar.gz |
| rm -rf venv |
| python3 -m venv venv |
| set +u |
| source ./venv/bin/activate |
| pip install -r ./llvm-zorg/zorg/jenkins/jobs/requirements.txt |
| set -u |
| ''' |
| } |
| } |
| stage('Fetch Artifact') { |
| environment { |
| PATH="$PATH:/usr/bin:/usr/local/bin" |
| } |
| steps { |
| withCredentials([string(credentialsId: 's3_resource_bucket', variable: 'S3_BUCKET')]) { |
| sh """ |
| source ./venv/bin/activate |
| echo "ARTIFACT=${params.ARTIFACT}" |
| python llvm-zorg/zorg/jenkins/monorepo_build.py fetch |
| ls $WORKSPACE/host-compiler/lib/clang/ |
| VERSION=`ls $WORKSPACE/host-compiler/lib/clang/` |
| """ |
| } |
| } |
| } |
| stage('Build') { |
| environment { |
| PATH="$PATH:/usr/bin:/usr/local/bin" |
| HOST_INC_DIR="$WORKSPACE/host-compiler/bin/../include" |
| } |
| steps { |
| withCredentials([string(credentialsId: 's3_resource_bucket', variable: 'S3_BUCKET')]) { |
| sh ''' |
| source ./venv/bin/activate |
| |
| cd llvm-project |
| git tag -a -m "First Commit" first_commit 97724f18c79c7cc81ced24239eb5e883bf1398ef || true |
| |
| git_desc=$(git describe --match "first_commit") |
| export GIT_DISTANCE=$(echo ${git_desc} | cut -f 2 -d "-") |
| |
| sha=$(echo ${git_desc} | cut -f 3 -d "-") |
| export GIT_SHA=${sha:1} |
| |
| cd - |
| |
| python llvm-zorg/zorg/jenkins/monorepo_build.py cmake build \ |
| --cmake-type=RelWithDebInfo \ |
| --projects="clang;clang-tools-extra" \ |
| --runtimes="libcxx;libcxxabi;libunwind" \ |
| --cmake-flag='-DLLVM_USE_SANITIZER=Address;Undefined' \ |
| --cmake-flag="-DLIBCXX_INCLUDE_TESTS=OFF" \ |
| --timeout=1800 \ |
| --cmake-flag="-DPython3_EXECUTABLE=$(which python)" |
| ''' |
| } |
| } |
| } |
| stage('Test') { |
| environment { |
| PATH="$PATH:/usr/bin:/usr/local/bin" |
| ASAN_SYMBOLIZER_PATH="$WORKSPACE/host-compiler/bin/llvm-symbolizer" |
| } |
| steps { |
| sh ''' |
| set -u |
| source ./venv/bin/activate |
| python llvm-zorg/zorg/jenkins/monorepo_build.py cmake test \ |
| --cmake-test-target=check-llvm \ |
| --cmake-test-target=check-clang |
| ''' |
| } |
| post { |
| always { |
| script { |
| junit "clang-build/**/testresults.xunit.xml" |
| } |
| } |
| } |
| } |
| } |
| post { |
| always { |
| script { |
| // ToDo: Restore the issue scanner |
| // scanForIssues tool: clang() |
| sh "rm -rf clang-build clang-install host-compiler *.tar.gz" |
| } |
| } |
| } |
| } |
| |