diff --git a/netops_demo/golang/src/github.com/v3io/demos/vendor/github.com/v3io/v3io-tsdb/Jenkinsfile b/netops_demo/golang/src/github.com/v3io/demos/vendor/github.com/v3io/v3io-tsdb/Jenkinsfile index 93cb4b8..5cae96e 100644 --- a/netops_demo/golang/src/github.com/v3io/demos/vendor/github.com/v3io/v3io-tsdb/Jenkinsfile +++ b/netops_demo/golang/src/github.com/v3io/demos/vendor/github.com/v3io/v3io-tsdb/Jenkinsfile @@ -24,7 +24,6 @@ def build_nuclio() { cd ${BUILD_FOLDER}/src/github.com/v3io/${git_project} cp -R functions/ingest/vendor/github.com/v3io/v3io-tsdb functions/query/vendor/github.com/v3io/v3io-tsdb """ - // git checkout ${V3IO_TSDB_VERSION} } } @@ -53,20 +52,19 @@ def build_demo() { usernamePassword(credentialsId: git_deploy_user, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME'), string(credentialsId: git_deploy_user_token, variable: 'GIT_TOKEN') ]) { - def git_project = 'iguazio_api_examples' + def git_project = 'demos' stage('prepare sources') { container('jnlp') { sh """ cd ${BUILD_FOLDER} git clone https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/${git_project_user}/${git_project}.git src/github.com/v3io/${git_project} - cd ${BUILD_FOLDER}/src/github.com/v3io/${git_project}/netops_demo/golang/src/github.com/v3io/demos + cd ${BUILD_FOLDER}/src/github.com/v3io/${git_project}/netops/golang/src/github.com/v3io/demos rm -rf vendor/github.com/v3io/v3io-tsdb/ git clone https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/${git_project_user}/v3io-tsdb.git vendor/github.com/v3io/v3io-tsdb cd vendor/github.com/v3io/v3io-tsdb rm -rf .git vendor/github.com/v3io vendor/github.com/nuclio """ - // git checkout ${V3IO_TSDB_VERSION} } } @@ -77,7 +75,7 @@ def build_demo() { sh """ git config --global user.email '${GIT_USERNAME}@iguazio.com' git config --global user.name '${GIT_USERNAME}' - cd ${BUILD_FOLDER}/src/github.com/v3io/${git_project}/netops_demo + cd ${BUILD_FOLDER}/src/github.com/v3io/${git_project}/netops git add * git commit -am 'Updated TSDB to latest'; git push origin master @@ -153,7 +151,7 @@ spec: shareProcessNamespace: true containers: - name: jnlp - image: jenkinsci/jnlp-slave + image: jenkins/jnlp-slave resources: limits: cpu: 1 @@ -196,12 +194,12 @@ spec: returnStdout: true ).trim() - sh "curl -v -H \"Authorization: token ${GIT_TOKEN}\" https://api.github.com/repos/gkirok/${git_project}/releases/tags/v${MAIN_TAG_VERSION} > ~/tag_version" + sh "curl -v -H \"Authorization: token ${GIT_TOKEN}\" https://api.github.com/repos/${git_project_user}/${git_project}/releases/tags/v${MAIN_TAG_VERSION} > ~/tag_version" PUBLISHED_BEFORE = sh( script: "tag_published_at=\$(cat ~/tag_version | python -c 'import json,sys;obj=json.load(sys.stdin);print obj[\"published_at\"]'); SECONDS=\$(expr \$(date +%s) - \$(date -d \"\$tag_published_at\" +%s)); expr \$SECONDS / 60 + 1", returnStdout: true - ).trim() + ).trim().toInteger() echo "$MAIN_TAG_VERSION" echo "$PUBLISHED_BEFORE" @@ -210,13 +208,12 @@ spec: } } - if ( MAIN_TAG_VERSION && PUBLISHED_BEFORE < 240 ) { + if ( MAIN_TAG_VERSION != null && MAIN_TAG_VERSION.length() > 0 && PUBLISHED_BEFORE < 240 ) { parallel( 'tsdb-nuclio': { podTemplate(label: "v3io-tsdb-nuclio-${label}", inheritFrom: "${git_project}-${label}") { node("v3io-tsdb-nuclio-${label}") { withCredentials([ -// usernamePassword(credentialsId: git_deploy_user, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME'), string(credentialsId: git_deploy_user_token, variable: 'GIT_TOKEN') ]) { def TAG_VERSION @@ -235,7 +232,7 @@ spec: stage('get previous release version') { container('jnlp') { sh """ - curl -H "Authorization: bearer ${GIT_TOKEN}" -X POST -d '{"query": "query { repository(owner: \\"gkirok\\", name: \\"tsdb-nuclio\\") { refs(refPrefix: \\"refs/tags/\\", first: 1, orderBy: { field: ALPHABETICAL, direction: DESC }) { nodes { name } } } }" }' https://api.github.com/graphql > ~/last_tag; + curl -H "Authorization: bearer ${GIT_TOKEN}" -X POST -d '{"query": "query { repository(owner: \\"${git_project_user}\\", name: \\"tsdb-nuclio\\") { refs(refPrefix: \\"refs/tags/\\", first: 1, orderBy: { field: ALPHABETICAL, direction: DESC }) { nodes { name } } } }" }' https://api.github.com/graphql > ~/last_tag; cat ~/last_tag | python -c 'import json,sys;obj=json.load(sys.stdin);print obj["data"]["repository"]["refs"]["nodes"][0]["name"]' | sed "s/v//" > ~/tmp_tag cat ~/tmp_tag | awk -F. -v OFS=. 'NF==1{print ++\$NF}; NF>1{if(length(\$NF+1)>length(\$NF))\$(NF-1)++; \$NF=sprintf("%0*d", length(\$NF), (\$NF+1)%(10^length(\$NF))); print}' > ~/next_version """ @@ -250,22 +247,20 @@ spec: build_nuclio() - stage('create tsdb-nuclio release') { + stage('create tsdb-nuclio prerelease') { container('jnlp') { - sh "curl -v -H \"Content-Type: application/json\" -H \"Authorization: token ${GIT_TOKEN}\" https://api.github.com/repos/gkirok/tsdb-nuclio/releases -d '{\"tag_name\": \"v${NEXT_VERSION}\", \"target_commitish\": \"master\", \"name\": \"v${NEXT_VERSION}\", \"body\": \"Autorelease, triggered by v3io-tsdb\"}'" + sh "curl -v -H \"Content-Type: application/json\" -H \"Authorization: token ${GIT_TOKEN}\" https://api.github.com/repos/${git_project_user}/tsdb-nuclio/releases -d '{\"tag_name\": \"v${NEXT_VERSION}\", \"target_commitish\": \"master\", \"name\": \"v${NEXT_VERSION}\", \"body\": \"Autorelease, triggered by v3io-tsdb\", \"prerelease\": true}'" } } } - } } } }, - 'netops-demo': { - podTemplate(label: "v3io-tsdb-netops-demo-${label}", inheritFrom: "${git_project}-${label}") { - node("v3io-tsdb-netops-demo-${label}") { + 'demos': { + podTemplate(label: "demos-${label}", inheritFrom: "${git_project}-${label}") { + node("demos-${label}") { withCredentials([ -// usernamePassword(credentialsId: git_deploy_user, passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME'), string(credentialsId: git_deploy_user_token, variable: 'GIT_TOKEN') ]) { def TAG_VERSION @@ -284,7 +279,7 @@ spec: stage('get previous release version') { container('jnlp') { sh """ - curl -H "Authorization: bearer ${GIT_TOKEN}" -X POST -d '{"query": "query { repository(owner: \\"gkirok\\", name: \\"iguazio_api_examples\\") { refs(refPrefix: \\"refs/tags/\\", first: 1, orderBy: { field: ALPHABETICAL, direction: DESC }) { nodes { name } } } }" }' https://api.github.com/graphql > last_tag; + curl -H "Authorization: bearer ${GIT_TOKEN}" -X POST -d '{"query": "query { repository(owner: \\"${git_project_user}\\", name: \\"demos\\") { refs(refPrefix: \\"refs/tags/\\", first: 1, orderBy: { field: ALPHABETICAL, direction: DESC }) { nodes { name } } } }" }' https://api.github.com/graphql > last_tag; cat last_tag | python -c 'import json,sys;obj=json.load(sys.stdin);print obj["data"]["repository"]["refs"]["nodes"][0]["name"]' | sed "s/v//" > tmp_tag cat tmp_tag | awk -F. -v OFS=. 'NF==1{print ++\$NF}; NF>1{if(length(\$NF+1)>length(\$NF))\$(NF-1)++; \$NF=sprintf("%0*d", length(\$NF), (\$NF+1)%(10^length(\$NF))); print}' > next_version """ @@ -300,9 +295,9 @@ spec: build_demo() - stage('create iguazio_api_examples release') { + stage('create demos prerelease') { container('jnlp') { - sh "curl -v -H \"Content-Type: application/json\" -H \"Authorization: token ${GIT_TOKEN}\" https://api.github.com/repos/gkirok/iguazio_api_examples/releases -d '{\"tag_name\": \"v${NEXT_VERSION}\", \"target_commitish\": \"master\", \"name\": \"v${NEXT_VERSION}\", \"body\": \"Autorelease, triggered by v3io-tsdb\"}'" + sh "curl -v -H \"Content-Type: application/json\" -H \"Authorization: token ${GIT_TOKEN}\" https://api.github.com/repos/${git_project_user}/demos/releases -d '{\"tag_name\": \"v${NEXT_VERSION}\", \"target_commitish\": \"master\", \"name\": \"v${NEXT_VERSION}\", \"body\": \"Autorelease, triggered by v3io-tsdb\", \"prerelease\": true}'" } } } @@ -345,9 +340,9 @@ spec: build_prometheus(NEXT_VERSION) - stage('create prometheus release') { + stage('create prometheus prerelease') { container('jnlp') { - sh "curl -v -H \"Content-Type: application/json\" -H \"Authorization: token ${GIT_TOKEN}\" https://api.github.com/repos/gkirok/prometheus/releases -d '{\"tag_name\": \"v${NEXT_VERSION}\", \"target_commitish\": \"master\", \"name\": \"v${NEXT_VERSION}\", \"body\": \"Autorelease, triggered by v3io-tsdb\"}'" + sh "curl -v -H \"Content-Type: application/json\" -H \"Authorization: token ${GIT_TOKEN}\" https://api.github.com/repos/${git_project_user}/prometheus/releases -d '{\"tag_name\": \"v${NEXT_VERSION}\", \"target_commitish\": \"master\", \"name\": \"v${NEXT_VERSION}\", \"body\": \"Autorelease, triggered by v3io-tsdb\", \"prerelease\": true}'" } } } @@ -365,4 +360,49 @@ spec: } } } -} \ No newline at end of file + + node("${git_project}-${label}") { + withCredentials([ + string(credentialsId: git_deploy_user_token, variable: 'GIT_TOKEN') + ]) { + stage('waiting for prereleases moved to releases') { + container('jnlp') { + i = 0 + def success = ['demos':false, 'prometheus':false, 'tsdb-nuclio':false] + def success_count = 0 + while( true ) { + success.each { project, status -> + if (!status) { + RELEASE_SUCCESS = sh( + script: "curl -H \"Content-Type: application/json\" -H \"Authorization: token ${GIT_TOKEN}\" -X GET https://api.github.com/repos/${git_project_user}/${project}/releases/tags/v${NEXT_VERSION} | python -c 'import json,sys;obj=json.load(sys.stdin);print obj[\"prerelease\"]' | grep -i false", + returnStdout: true + ).trim() + + if (RELEASE_SUCCESS != null || RELEASE_SUCCESS.length() > 0) { + success.putAt(project, true) + success_count++ + } + } + } + if(success_count >= 3) { + echo "all releases have been successfully completed" + break + } + if(i++ > 10) { + def failed + success.each { project, status -> + if(!status) { + failed.putAt(project) + } + } + error(failed.join(',') + ' have been not completed :(') + break + } + + sleep(60) + } + } + } + } + } +}