diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..a7ff27c --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,101 @@ +library('pipeline-library@feature/add-with-ecr') + +pipeline { + options { timestamps() } + agent any + environment { + SERVICE = 'auto-semver' + GITHUB_KEY = 'autosemverDeployKey' + GITHUB_URL = 'https://github.com/RightBrain-Networks/auto-semver' + DOCKER_REGISTRY = '356438515751.dkr.ecr.us-east-1.amazonaws.com' + VERSION = "" + + + //Image tag to use for self-versioning + SELF_SEMVER_TAG = "HEAD" + + } + stages { + //Pulls docker image for self-versioning + stage("Pull Versioning Image") + { + steps + { + sh "docker pull ${DOCKER_REGISTRY}/auto-semver:${SELF_SEMVER_TAG}" + } + } + //Runs versioning in docker container + stage('Version') { + agent { + docker { + image "${DOCKER_REGISTRY}/auto-semver:${SELF_SEMVER_TAG}" + } + } + steps { + // runs the automatic semver tool which will version, & tag, + runAutoSemver() + + //Grabs current version + script + { + env.VERSION = getVersion('-d') + } + } + post{ + // Update Git with status of version stage. + success { + updateGithubCommitStatus(GITHUB_URL, 'Passed version stage', 'SUCCESS', 'Version') + } + failure { + updateGithubCommitStatus(GITHUB_URL, 'Failed version stage', 'FAILURE', 'Version') + } + } + } + stage('Build') { + steps { + + echo "Building ${env.SERVICE} docker image" + + // Docker build flags are set via the getDockerBuildFlags() shared library. + sh "docker build ${getDockerBuildFlags()} -t ${env.DOCKER_REGISTRY}/${env.SERVICE}:${env.VERSION} ." + + //sh "tar -czvf ${env.SERVICE}-${getVersion('-d')}.tar.gz deployer" + } + post{ + // Update Git with status of build stage. + success { + updateGithubCommitStatus(GITHUB_URL, 'Passed build stage', 'SUCCESS', 'Build') + } + failure { + updateGithubCommitStatus(GITHUB_URL, 'Failed build stage', 'FAILURE', 'Build') + } + } + } + stage('Push') + { + steps { + withEcr { + sh "docker push ${env.DOCKER_REGISTRY}/${env.SERVICE}:${env.VERSION}" + } + + } + post + { + // Update Git with status of push stage. + success { + updateGithubCommitStatus(GITHUB_URL, 'Passed push stage', 'SUCCESS', 'Push') + } + failure { + updateGithubCommitStatus(GITHUB_URL, 'Failed push stage', 'FAILURE', 'Push') + } + } + } + } + post { + always { + removeDockerImages() + cleanWs() + } + } + +}