pipeline {
agent any
stages {
stage('build docker container') {
steps {
sh 'docker-compose build'
sh 'docker-compose run start_dependencies'
}
}
stage('prepare database') {
steps {
sh 'docker-compose run --rm rails bundle exec rails db:create'
sh 'docker-compose run --rm rails bundle exec rails db:migrate'
}
}
stage('coding style check') {
steps {
sh 'docker-compose run --rm rails bundle exec rubocop'
}
}
stage('automated tests') {
steps {
sh 'docker-compose run --rm rails bundle exec rspec'
}
}
stage('deploy to staging') {
when {
branch "master"
}
steps {
input 'deploy to staging?'
lock(resource: 'staging-server', inversePrecedence: true) {
sshagent (credentials: ['a99a855d-e3c8-484c-82ce-f9f6f0fd0ffc']) {
sh 'docker-compose run -u $(id -u $USER):$(id -g $USER) -v /var/lib/jenkins:/var/lib/jenkins -v /etc/group:/etc/group:ro -v /etc/passwd:/etc/passwd:ro -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent -e COMMIT=$GIT_COMMIT --rm rails bundle exec mina staging deploy'
}
}
}
}
}
post {
always {
sh 'docker-compose kill'
sh 'docker-compose rm -fv'
}
}
}Enter code here...