Skip to content

Commit

Permalink
Add docker/jenkins files
Browse files Browse the repository at this point in the history
  • Loading branch information
ianmcorvidae committed Apr 2, 2018
1 parent 81cbbce commit 1d0ba7a
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 0 deletions.
19 changes: 19 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
FROM golang:1.9-alpine

ARG git_commit=unknown
ARG version="2.9.0"
ARG descriptive_version=unknown

LABEL org.cyverse.git-ref="$git_commit"
LABEL org.cyverse.version="$version"
LABEL org.cyverse.descriptive-version="$descriptive_version"

COPY . /go/src/github.com/cyverse-de/job-status-listener
RUN go install -v -ldflags "-X main.appver=$version -X main.gitref=$git_commit" github.com/cyverse-de/job-status-listener

EXPOSE 60000
LABEL org.label-schema.vcs-ref="$git_commit"
LABEL org.label-schema.vcs-url="https://github.com/cyverse-de/templeton"
LABEL org.label-schema.version="$descriptive_version"
ENTRYPOINT ["job-status-listener"]
CMD ["--help"]
74 changes: 74 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#!groovy
node('docker') {
slackJobDescription = "job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})"
try {
stage "Build"
checkout scm

service = readProperties file: 'service.properties'

git_commit = sh(returnStdout: true, script: "git rev-parse HEAD").trim()
echo git_commit

descriptive_version = sh(returnStdout: true, script: 'git describe --long --tags --dirty --always').trim()
echo descriptive_version

dockerRepo = "test-${env.BUILD_TAG}"

sh "docker build --rm --build-arg git_commit=${git_commit} --build-arg descriptive_version=${descriptive_version} -t ${dockerRepo} ."

image_sha = sh(returnStdout: true, script: "docker inspect -f '{{ .Config.Image }}' ${dockerRepo}").trim()
echo image_sha

writeFile(file: "${dockerRepo}.docker-image-sha", text: "${image_sha}")
fingerprint "${dockerRepo}.docker-image-sha"

dockerTestRunner = "test-${env.BUILD_TAG}"
dockerPusher = "push-${env.BUILD_TAG}"
try {
stage "Test"
sh "docker run --rm --name ${dockerTestRunner} --entrypoint 'go' ${dockerRepo} test github.com/cyverse-de/${service.repo}"

milestone 100
stage "Docker Push"
dockerPushRepo = "${service.dockerUser}/${service.repo}:${env.BRANCH_NAME}"
lock("docker-push-${dockerPushRepo}") {
milestone 101
sh "docker tag ${dockerRepo} ${dockerPushRepo}"
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'jenkins-docker-credentials', passwordVariable: 'DOCKER_PASSWORD', usernameVariable: 'DOCKER_USERNAME']]) {
sh """docker run -e DOCKER_USERNAME -e DOCKER_PASSWORD \\
-v /var/run/docker.sock:/var/run/docker.sock \\
--rm --name ${dockerPusher} \\
docker:\$(docker version --format '{{ .Server.Version }}') \\
sh -e -c \\
'docker login -u \"\$DOCKER_USERNAME\" -p \"\$DOCKER_PASSWORD\" && \\
docker push ${dockerPushRepo} && \\
docker rmi ${dockerPushRepo} && \\
docker logout'"""
}
}
} finally {
sh returnStatus: true, script: "docker kill ${dockerTestRunner}"
sh returnStatus: true, script: "docker rm ${dockerTestRunner}"

sh returnStatus: true, script: "docker kill ${dockerPusher}"
sh returnStatus: true, script: "docker rm ${dockerPusher}"

sh returnStatus: true, script: "docker rmi ${dockerRepo}"

step([$class: 'hudson.plugins.jira.JiraIssueUpdater',
issueSelector: [$class: 'hudson.plugins.jira.selector.DefaultIssueSelector'],
scm: scm,
labels: [ "${service.repo}-${descriptive_version}" ]])
}
} catch (InterruptedException e) {
currentBuild.result = "ABORTED"
slackSend color: 'warning', message: "ABORTED: ${slackJobDescription}"
throw e
} catch (e) {
currentBuild.result = "FAILED"
sh "echo ${e}"
slackSend color: 'danger', message: "FAILED: ${slackJobDescription}"
throw e
}
}
2 changes: 2 additions & 0 deletions service.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
repo = job-status-listener
dockerUser = discoenv

0 comments on commit 1d0ba7a

Please sign in to comment.