-
Notifications
You must be signed in to change notification settings - Fork 171
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Jenkinsfile for release builds (#42)
- Loading branch information
Showing
2 changed files
with
164 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
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,162 @@ | ||
pipeline { | ||
agent { label 'UbuntuVM' } | ||
options { skipDefaultCheckout() } | ||
parameters { | ||
gitParameter(name: 'GIT_TAG', | ||
type: 'PT_BRANCH_TAG', | ||
description: 'The Git tag to checkout. If not specified "master" will be checkout.', | ||
defaultValue: 'master') | ||
string(name: 'DOCKER_TAG', | ||
description: 'An extra Docker tag (e.g. "latest"). By default GIT_TAG will also be used as Docker tag', | ||
defaultValue: '') | ||
} | ||
environment { | ||
LABEL = get_label() | ||
} | ||
|
||
stages { | ||
stage('[MacMini] Checkout Git TAG') { | ||
agent { label 'MacMini' } | ||
steps { | ||
cleanWs() | ||
checkout([$class: 'GitSCM', | ||
branches: [[name: "${params.GIT_TAG}"]], | ||
doGenerateSubmoduleConfigurations: false, | ||
extensions: [], | ||
gitTool: 'Default', | ||
submoduleCfg: [], | ||
userRemoteConfigs: [[url: 'https://github.com/eclipse-zenoh/zenoh.git']] | ||
]) | ||
} | ||
} | ||
stage('[MacMini] Update Rust env') { | ||
agent { label 'MacMini' } | ||
steps { | ||
sh ''' | ||
env | ||
echo "Building eclipse-zenoh-${LABEL}" | ||
rustup update | ||
''' | ||
} | ||
} | ||
|
||
stage('[MacMini] Build and tests') { | ||
agent { label 'MacMini' } | ||
steps { | ||
sh ''' | ||
cargo build --release --all-targets | ||
cargo test --release | ||
''' | ||
} | ||
} | ||
|
||
stage('[MacMini] MacOS Package') { | ||
agent { label 'MacMini' } | ||
steps { | ||
sh ''' | ||
tar -czvf eclipse-zenoh-${LABEL}-macosx-x86-64.tgz --strip-components 2 target/release/zenohd target/release/*.dylib | ||
tar -czvf eclipse-zenoh-${LABEL}-examples-macosx-x86-64.tgz --exclude 'target/release/examples/*.*' --strip-components 3 target/release/examples/* | ||
''' | ||
stash includes: 'eclipse-zenoh-*-macosx-x86-64.tgz', name: 'zenohMacOS' | ||
} | ||
} | ||
|
||
stage('[MacMini] Docker build') { | ||
agent { label 'MacMini' } | ||
steps { | ||
sh ''' | ||
RUSTFLAGS='-C target-feature=-crt-static' cargo build --release --target=x86_64-unknown-linux-musl | ||
if [ -n "${DOCKER_TAG}" ]; then | ||
export EXTRA_TAG="-t eclipse/zenoh:${DOCKER_TAG}" | ||
fi | ||
docker build -t eclipse/zenoh:${LABEL} ${EXTRA_TAG} . | ||
''' | ||
} | ||
} | ||
|
||
stage('[MacMini] manylinux2010 x64 build') { | ||
agent { label 'MacMini' } | ||
steps { | ||
sh ''' | ||
docker run --init --rm -v $(pwd):/workdir -w /workdir adlinktech/manylinux2010-x64-rust-nightly \ | ||
/bin/bash -c "\ | ||
cargo build --release --bins --lib --examples --target-dir=target/manylinux2010-x64 && \ | ||
cargo deb -p zenoh-router -o target/manylinux2010-x64 && \ | ||
cargo deb -p zplugin-http -o target/manylinux2010-x64 && \ | ||
cargo deb -p zplugin_storages -o target/manylinux2010-x64 \ | ||
" | ||
''' | ||
} | ||
} | ||
stage('[MacMini] manylinux2010 x64 Package') { | ||
agent { label 'MacMini' } | ||
steps { | ||
sh ''' | ||
tar -czvf eclipse-zenoh-${LABEL}-manylinux2010-x64.tgz --strip-components 3 target/manylinux2010-x64/release/zenohd target/manylinux2010-x64/release/*.so | ||
tar -czvf eclipse-zenoh-${LABEL}-examples-manylinux2010-x64.tgz --exclude 'target/manylinux2010-x64/release/examples/*.*' --exclude 'target/manylinux2010-x64/release/examples/*-*' --strip-components 4 target/manylinux2010-x64/release/examples/* | ||
''' | ||
stash includes: 'eclipse-zenoh-*-manylinux2010-x64.tgz, target/manylinux2010-x64/*.deb', name: 'zenohManylinux-x64' | ||
} | ||
} | ||
|
||
stage('[MacMini] manylinux2010 i686 build') { | ||
agent { label 'MacMini' } | ||
steps { | ||
sh ''' | ||
docker run --init --rm -v $(pwd):/workdir -w /workdir adlinktech/manylinux2010-i686-rust-nightly \ | ||
/bin/bash -c "\ | ||
cargo build --release --bins --lib --examples --target-dir=target/manylinux2010-i686 && \ | ||
cargo deb -p zenoh-router -o target/manylinux2010-i686 && \ | ||
cargo deb -p zplugin-http -o target/manylinux2010-i686 && \ | ||
cargo deb -p zplugin_storages -o target/manylinux2010-i686 \ | ||
" | ||
''' | ||
} | ||
} | ||
stage('[MacMini] manylinux2010 i686 Package') { | ||
agent { label 'MacMini' } | ||
steps { | ||
sh ''' | ||
tar -czvf eclipse-zenoh-${LABEL}-manylinux2010-i686.tgz --strip-components 3 target/manylinux2010-i686/release/zenohd target/manylinux2010-i686/release/*.so | ||
tar -czvf eclipse-zenoh-${LABEL}-examples-manylinux2010-i686.tgz --exclude 'target/manylinux2010-i686/release/examples/*.*' --exclude 'target/manylinux2010-i686/release/examples/*-*' --strip-components 4 target/manylinux2010-i686/release/examples/* | ||
''' | ||
stash includes: 'eclipse-zenoh-*-manylinux2010-i686.tgz, target/manylinux2010-i686/*.deb', name: 'zenohManylinux-i686' | ||
} | ||
} | ||
|
||
stage('[MacMini] Docker publish') { | ||
agent { label 'MacMini' } | ||
steps { | ||
withCredentials([usernamePassword(credentialsId: 'dockerhub-bot', | ||
passwordVariable: 'DOCKER_HUB_CREDS_PSW', usernameVariable: 'DOCKER_HUB_CREDS_USR')]) | ||
{ | ||
sh ''' | ||
docker login -u ${DOCKER_HUB_CREDS_USR} -p ${DOCKER_HUB_CREDS_PSW} | ||
docker push eclipse/zenoh | ||
docker logout | ||
''' | ||
} | ||
} | ||
} | ||
|
||
stage('Deploy to to download.eclipse.org') { | ||
steps { | ||
// Unstash MacOS package to be deployed | ||
unstash 'zenohMacOS' | ||
unstash 'zenohManylinux-x64' | ||
unstash 'zenohManylinux-i686' | ||
sshagent ( ['projects-storage.eclipse.org-bot-ssh']) { | ||
sh ''' | ||
ssh [email protected] mkdir -p /home/data/httpd/download.eclipse.org/zenoh/zenoh/${LABEL} | ||
ssh [email protected] ls -al /home/data/httpd/download.eclipse.org/zenoh/zenoh/${LABEL} | ||
scp eclipse-zenoh-${LABEL}-*.tgz *.deb [email protected]:/home/data/httpd/download.eclipse.org/zenoh/zenoh/${LABEL}/ | ||
''' | ||
} | ||
} | ||
} | ||
} | ||
} | ||
|
||
def get_label() { | ||
return env.GIT_TAG.startsWith('origin/') ? env.GIT_TAG.minus('origin/') : env.GIT_TAG | ||
} |