mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-19 18:15:50 +00:00
Add slack notify for approvals, remove old RPM build
This commit is contained in:
161
Jenkinsfile
vendored
161
Jenkinsfile
vendored
@@ -70,8 +70,10 @@ try {
|
|||||||
|
|
||||||
if (! collab_found) {
|
if (! collab_found) {
|
||||||
echo "$CHANGE_AUTHOR is not a collaborator - waiting for manual approval."
|
echo "$CHANGE_AUTHOR is not a collaborator - waiting for manual approval."
|
||||||
|
sendToSlack("A <${env.BUILD_URL}|jenkins job (PR)> is waiting for approval - please review.")
|
||||||
|
|
||||||
try {
|
try {
|
||||||
response = httpRequest(
|
httpRequest(
|
||||||
timeout: 10,
|
timeout: 10,
|
||||||
authentication: github_cred,
|
authentication: github_cred,
|
||||||
url: getCommentURL(),
|
url: getCommentURL(),
|
||||||
@@ -106,6 +108,11 @@ try {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UNCOMMENT the following if we want one message for every job...
|
||||||
|
//node('rippled-dev') {
|
||||||
|
// sendToSlack("<${env.BUILD_URL}|Job ${env.BUILD_TAG}> has started.")
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage ('Parallel Build') {
|
stage ('Parallel Build') {
|
||||||
@@ -317,52 +324,6 @@ try {
|
|||||||
} //builds item
|
} //builds item
|
||||||
} //for variants
|
} //for variants
|
||||||
|
|
||||||
// Also add a single build job for doing the RPM build
|
|
||||||
// on a docker node
|
|
||||||
builds['rpm'] = {
|
|
||||||
node('docker') {
|
|
||||||
def bldlabel = 'rpm'
|
|
||||||
def remote =
|
|
||||||
(git_fork == 'ripple') ? 'origin' : git_fork
|
|
||||||
|
|
||||||
withCredentials(
|
|
||||||
[string(
|
|
||||||
credentialsId: 'RIPPLED_RPM_ROLE_ID',
|
|
||||||
variable: 'ROLE_ID')])
|
|
||||||
{
|
|
||||||
withEnv([
|
|
||||||
'docker_image=artifactory.ops.ripple.com:6555/rippled-rpm-builder:latest',
|
|
||||||
"git_commit=${commit_id}",
|
|
||||||
"git_remote=${remote}",
|
|
||||||
"rpm_release=${env.BUILD_ID}"])
|
|
||||||
{
|
|
||||||
def thrown = '';
|
|
||||||
try {
|
|
||||||
sh "rm -fv ${bldlabel}.txt"
|
|
||||||
sh "if [ -d rpm-out ]; then rm -rf rpm-out; fi"
|
|
||||||
sh rpmBuildCmd(bldlabel)
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
thrown = "${e}"
|
|
||||||
throw e
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
def st = reportStatus(bldlabel, bldlabel, env.BUILD_URL, thrown)
|
|
||||||
lock('rippled_dev_status') {
|
|
||||||
all_status[bldlabel] = st
|
|
||||||
}
|
|
||||||
archiveArtifacts(
|
|
||||||
artifacts: 'rpm-out/*.rpm',
|
|
||||||
allowEmptyArchive: true)
|
|
||||||
if (thrown == '') {
|
|
||||||
assert st[0] : "Unit Test Failures"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} //withEnv
|
|
||||||
} //withCredentials
|
|
||||||
} //node
|
|
||||||
}
|
|
||||||
|
|
||||||
// this actually executes all the builds we just defined
|
// this actually executes all the builds we just defined
|
||||||
// above, in parallel as slaves are available
|
// above, in parallel as slaves are available
|
||||||
parallel builds
|
parallel builds
|
||||||
@@ -591,6 +552,30 @@ def upDir(path) {
|
|||||||
matcher ? matcher[0][1] : path
|
matcher ? matcher[0][1] : path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def sendToSlack(message) {
|
||||||
|
try {
|
||||||
|
withCredentials( [string( credentialsId: 'RIPPLED_SLACK_INCOMING_URL', variable: 'SLACK_URL')]) {
|
||||||
|
// I was unable to make httpRequest method work with the
|
||||||
|
// formdata required by slack API, so resorting
|
||||||
|
// to curl commands...
|
||||||
|
sh '''\
|
||||||
|
CONTENT=$(tr -d '[\n]' <<JSON
|
||||||
|
payload={
|
||||||
|
"channel": "#cpp-notifications",
|
||||||
|
"username": "JenkinsCI",
|
||||||
|
"text": "''' + message + '''",
|
||||||
|
"icon_emoji": ":jenkins:"}
|
||||||
|
JSON
|
||||||
|
)
|
||||||
|
curl ${SLACK_URL} --data-urlencode "${CONTENT}"
|
||||||
|
'''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
echo "had a problem posting to slack: ${e}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// the shell command used for building on redhat
|
// the shell command used for building on redhat
|
||||||
def redhatBuildCmd(bldlabel) {
|
def redhatBuildCmd(bldlabel) {
|
||||||
'''\
|
'''\
|
||||||
@@ -605,7 +590,7 @@ ccache -s
|
|||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
|
||||||
// the powershell command used for building an RPM
|
// the powershell command used for building
|
||||||
def windowsBuildCmd() {
|
def windowsBuildCmd() {
|
||||||
'''
|
'''
|
||||||
# Enable streams 3-6
|
# Enable streams 3-6
|
||||||
@@ -666,86 +651,6 @@ finally {
|
|||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
|
||||||
// the shell command used for building an RPM
|
|
||||||
def rpmBuildCmd(bldlabel) {
|
|
||||||
'''\
|
|
||||||
#!/bin/bash
|
|
||||||
set -ex
|
|
||||||
log_file=''' + "${bldlabel}.txt" + '''
|
|
||||||
exec 3>&1 1>>${log_file} 2>&1
|
|
||||||
|
|
||||||
# Vault Steps
|
|
||||||
SECRET_ID=$(cat /.vault/rippled-build-role/secret-id)
|
|
||||||
export VAULT_TOKEN=$(/usr/local/ripple/ops-toolbox/vault/vault_approle_auth -r ${ROLE_ID} -s ${SECRET_ID} -t)
|
|
||||||
/usr/local/ripple/ops-toolbox/vault/vault_get_sts_token.py -r rippled-build-role
|
|
||||||
|
|
||||||
mkdir -p rpm-out
|
|
||||||
|
|
||||||
docker pull "${docker_image}"
|
|
||||||
|
|
||||||
echo "Running build container"
|
|
||||||
|
|
||||||
docker run --rm \
|
|
||||||
-v $PWD/rpm-out:/opt/rippled-rpm/out \
|
|
||||||
-e "GIT_COMMIT=$git_commit" \
|
|
||||||
-e "GIT_REMOTE=$git_remote" \
|
|
||||||
-e "RPM_RELEASE=$rpm_release" \
|
|
||||||
"${docker_image}"
|
|
||||||
|
|
||||||
. rpm-out/build_vars
|
|
||||||
|
|
||||||
cd rpm-out
|
|
||||||
tar xvf rippled-*.tar.gz
|
|
||||||
ls -la *.rpm
|
|
||||||
#################################
|
|
||||||
## for now we don't want the src
|
|
||||||
## and debugsource rpms for testing
|
|
||||||
## or archiving...
|
|
||||||
#################################
|
|
||||||
rm rippled-debugsource*.rpm
|
|
||||||
rm *.src.rpm
|
|
||||||
mkdir rpm-main
|
|
||||||
cp *.rpm rpm-main
|
|
||||||
cd rpm-main
|
|
||||||
cd ../..
|
|
||||||
|
|
||||||
cat > test_rpm.sh << "EOL"
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
function error {
|
|
||||||
echo $1
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
yum install -y yum-utils openssl-static zlib-static
|
|
||||||
rpm -i /opt/rippled-rpm/*.rpm
|
|
||||||
rc=$?; if [[ $rc != 0 ]]; then
|
|
||||||
error "error installing rpms"
|
|
||||||
fi
|
|
||||||
|
|
||||||
/opt/ripple/bin/rippled --unittest
|
|
||||||
rc=$?; if [[ $rc != 0 ]]; then
|
|
||||||
error "rippled --unittest failed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
/opt/ripple/bin/validator-keys --unittest
|
|
||||||
rc=$?; if [[ $rc != 0 ]]; then
|
|
||||||
error "validator-keys --unittest failed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
EOL
|
|
||||||
|
|
||||||
chmod +x test_rpm.sh
|
|
||||||
|
|
||||||
echo "Running test container"
|
|
||||||
|
|
||||||
docker run --rm \
|
|
||||||
-v $PWD/rpm-out/rpm-main:/opt/rippled-rpm \
|
|
||||||
-v $PWD:/opt/rippled --entrypoint /opt/rippled/test_rpm.sh \
|
|
||||||
centos:latest
|
|
||||||
'''
|
|
||||||
}
|
|
||||||
|
|
||||||
// post processing step after each build:
|
// post processing step after each build:
|
||||||
// * archives the log file
|
// * archives the log file
|
||||||
// * adds short description/status to build status
|
// * adds short description/status to build status
|
||||||
|
|||||||
Reference in New Issue
Block a user