Skip to content

Instantly share code, notes, and snippets.

@arehmandev
Created May 9, 2017 01:51
Show Gist options
  • Save arehmandev/aa657571e86bade1f8e3424f981fb481 to your computer and use it in GitHub Desktop.
Save arehmandev/aa657571e86bade1f8e3424f981fb481 to your computer and use it in GitHub Desktop.
def app_name = 'app-name'
stage 'Checkout'
node {
checkout scm
}
stage 'Testing'
node {
try {
sh 'docker-compose build --pull'
sh 'docker-compose run app test'
} catch (err) {
sh 'docker-compose down -v --remove-orphans'
throw err
} finally {
sh 'docker-compose down -v --remove-orphans'
}
}
def app
stage 'Build Image'
node {
app = docker.build "COMPANYNAME/${app_name}","--pull ."
app.push("${env.BRANCH_NAME}-${env.BUILD_NUMBER}")
}
if (env.BRANCH_NAME == 'master') {
stage 'Deploy Staging'
node {
sh "kubectl --kubeconfig /var/lib/jenkins/credentials/kubectl.config --context staging-context apply -f k8s/staging-${app_name}-svc.yml"
sh "kubectl --kubeconfig /var/lib/jenkins/credentials/kubectl.config --context staging-context apply -f k8s/staging-${app_name}-ingress.yml"
sh "sed -i.bak 's/${app_name}:staging/${app_name}:${env.BRANCH_NAME}-${env.BUILD_NUMBER}/' k8s/staging-${app_name}-deploy.yml"
sh "kubectl --kubeconfig /var/lib/jenkins/credentials/kubectl.config --context staging-context apply -f k8s/staging-${app_name}-deploy.yml"
sh "kubectl --kubeconfig /var/lib/jenkins/credentials/kubectl.config --context staging-context rollout status deployment/${app_name}"
app.push("staging")
}
timeout(time: 1, unit: 'HOURS') {
stage 'Deploy Production'
input 'Ready for production?'
node {
sh "kubectl --kubeconfig /var/lib/jenkins/credentials/kubectl.config --context production-context apply -f k8s/production-${app_name}-svc.yml"
sh "kubectl --kubeconfig /var/lib/jenkins/credentials/kubectl.config --context production-context apply -f k8s/production-${app_name}-ingress.yml"
sh "sed -i.bak 's/${app_name}:production/${app_name}:${env.BRANCH_NAME}-${env.BUILD_NUMBER}/' k8s/production-${app_name}-deploy.yml"
sh "kubectl --kubeconfig /var/lib/jenkins/credentials/kubectl.config --context production-context apply -f k8s/production-${app_name}-deploy.yml"
sh "kubectl --kubeconfig /var/lib/jenkins/credentials/kubectl.config --context production-context rollout status deployment/${app_name}"
app.push("production")
app.push("latest")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment