diff --git a/Jenkinsfile b/Jenkinsfile index 24bed98f..c061d88c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,19 +1,19 @@ pipeline { - agent any - - stages { + agent any + + stages { stage('Setup npm') { steps { sh 'npm i' } } - stage('Test') { + stage('Test') { steps { sh 'npm run lint'; sh 'npm run scss-lint'; } } - stage('Documentation') { + stage('Documentation') { when { branch 'master' } @@ -30,43 +30,68 @@ pipeline { ]) } } - stage('Build Docker image') { - steps { - echo 'Test styles and building docker image...' - sh 'docker build --no-cache -f ./Dockerfile -t registry.sonata-nfv.eu:5000/tng-portal .' - } - } - stage('Publishing') { - steps { - echo 'Publishing docker image....' - sh 'docker push registry.sonata-nfv.eu:5000/tng-portal' - } - } - stage('Deploying in pre-int') { - steps { - echo 'Deploying in pre-integration....' - sh 'rm -rf tng-devops || true' - sh 'git clone https://github.com/sonata-nfv/tng-devops.git' - dir(path: 'tng-devops') { - sh 'ansible-playbook roles/sp.yml -i environments -e "target=pre-int-sp component=portal"' - sh 'ansible-playbook roles/vnv.yml -i environments -e "target=pre-int-vnv component=portal"' - } - } - } - stage('Deployment in Integration') { - when { - branch 'master' - } - steps { - sh 'docker tag registry.sonata-nfv.eu:5000/tng-portal:latest registry.sonata-nfv.eu:5000/tng-portal:int' - sh 'docker push registry.sonata-nfv.eu:5000/tng-portal:int' - sh 'rm -rf tng-devops || true' - sh 'git clone https://github.com/sonata-nfv/tng-devops.git' - dir(path: 'tng-devops') { - sh 'ansible-playbook roles/sp.yml -i environments -e "target=int-sp component=portal"' + stage('Build Docker image') { + steps { + echo 'Test styles and building docker image...' + sh 'docker build --no-cache -f ./Dockerfile -t registry.sonata-nfv.eu:5000/tng-portal .' + } + } + stage('Publishing') { + steps { + echo 'Publishing docker image....' + sh 'docker push registry.sonata-nfv.eu:5000/tng-portal' + } + } + stage('Deploying in pre-int') { + steps { + echo 'Deploying in pre-integration....' + sh 'rm -rf tng-devops || true' + sh 'git clone https://github.com/sonata-nfv/tng-devops.git' + dir(path: 'tng-devops') { + sh 'ansible-playbook roles/sp.yml -i environments -e "target=pre-int-sp component=portal"' + sh 'ansible-playbook roles/vnv.yml -i environments -e "target=pre-int-vnv component=portal"' + } + } + } + stage('Deployment in Integration') { + when { + branch 'master' + } + steps { + sh 'docker tag registry.sonata-nfv.eu:5000/tng-portal:latest registry.sonata-nfv.eu:5000/tng-portal:int' + sh 'docker push registry.sonata-nfv.eu:5000/tng-portal:int' + sh 'rm -rf tng-devops || true' + sh 'git clone https://github.com/sonata-nfv/tng-devops.git' + dir(path: 'tng-devops') { + sh 'ansible-playbook roles/sp.yml -i environments -e "target=int-sp component=portal"' sh 'ansible-playbook roles/vnv.yml -i environments -e "target=int-vnv component=portal"' - } - } - } - } + } + } + } + stage('Promoting release v5.0') { + when { + branch 'v5.0' + } + stages { + stage('Generating release') { + steps { + sh 'docker tag registry.sonata-nfv.eu:5000/tng-portal:latest registry.sonata-nfv.eu:5000/tng-portal:v5.0' + sh 'docker tag registry.sonata-nfv.eu:5000/tng-portal:latest sonatanfv/tng-portal:v5.0' + sh 'docker push registry.sonata-nfv.eu:5000/tng-portal:v5.0' + sh 'docker push sonatanfv/tng-portal:v5.0' + } + } + stage('Deploying in v5.0 servers') { + steps { + sh 'rm -rf tng-devops || true' + sh 'git clone https://github.com/sonata-nfv/tng-devops.git' + dir(path: 'tng-devops') { + sh 'ansible-playbook roles/sp.yml -i environments -e "target=sta-sp-v5-0 component=portal"' + sh 'ansible-playbook roles/vnv.yml -i environments -e "target=sta-vnv-v5-0 component=portal"' + } + } + } + } + } + } }