Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 10

image: docker.siemens.

com/mindsphere-azure/hub/mdsp-az-java:vanilla

variables:
gitlab_version: "3.1.1" # Required
product_line: $account_name_prefix
service_line: $CI_PROJECT_NAME
app_type: backend/frontend/internal ## Update
sub_group: Your_sub_group ## Update

cache:
key: ${CI_PROJECT_NAME}
paths:
- .gradle/wrapper
- .gradle/caches
stages:
- pre-build
- build and plan
- test
- publish and apply
- deploy
- destroy

################################################################################
#
# Please update value as per your requirement
#
################################################################################

.common: &common
before_script:
- >
if [[ -z $build_env ]] ; then
build_env=$(git log -1 --pretty=%s |grep -oE az.*|cut -d '*' -f1)
fi

if [[ $build_env == "azure" ]]; then


release_repo="mindsphere_rnd-release-maven2-egll"
resolve_repo="mindsphere_rnd-release-maven2"
snapshot_repo="mindsphere_rnd-dev-maven2"
PackageURL="com/siemens/mindsphere"
ArtifactReleaseVersion="3.0.1"
DockerFileName="Dockerfile_azcloud"
else
release_repo="mindsphere_rnd-release-maven2-egll"
resolve_repo="mindsphere_rnd-release-maven2"
snapshot_repo="mindsphere_rnd-dev-maven2"
PackageURL="com/siemens/mindsphere"
export ArtifactReleaseVersion="3.3.0"
DockerFileName="azstack-Dockerfile"
fi
- export basepath="https://captain.rtf.siemens.net/artifactory/"
- git submodule sync --recursive
- git submodule update --init --recursive
- echo "Running for build env ${build_env}"
- cp -prf ./ServiceInfraModules/* .
- export GRADLE_OPTS="-Dorg.gradle.daemon=false -Drepo.publish=$release_repo
-Drepo.baseUrl=$basepath -Drepo.resolve=$resolve_repo
-Drepo.username=$captainjfrogusername -Drepo.password=$captainjfrogpassword
-Dgradle.wrapperUser=$captainjfrogusername
-Dgradle.wrapperPassword=$captainjfrogpassword"

.Terraform_plan: &Terraform_plan
<<: *common
stage: build and plan
script:
- "chmod 777 serviceinfrasetup.sh; ./serviceinfrasetup.sh plan"
when: manual # [opitional Remove this if you want]
tags:
- azure-build
except:
- tags

.build_common: &build_common_from_repo
<<: *common
stage: build and plan
script:
- export REPONAME=$(echo $service_name | awk '{print tolower($0)}'); mkdir -p
build/libs/ || echo "Already exist"
- curl -k --noproxy "*" -u $jfrogusername:$jfrogpassword -X GET
https://captain.rtf.siemens.net//artifactory/$release_repo/$PackageURL/$REPONAME/
[RELEASE]/$REPONAME-[RELEASE].jar -o platform/azure/build/libs/$REPONAME.jar
- bash ./serviceinfrasetup.sh publish
# when: manual # [opitional Remove this if you want]
tags:
- azure
artifacts:
expire_in: 2h
paths:
- build/libs
when: on_success

.deploy_common: &deploy_common
<<: *common
stage: publish and apply
when: manual
script:
- "chmod 777 serviceinfrasetup.sh; ./serviceinfrasetup.sh apply"
except:
- tags
tags:
- azure
environment:
name: "${Environment}"

.jenkins_common: &jenkins_common
<<: *common
stage: deploy
when: manual
script:
- "chmod 777 serviceinfrasetup.sh; ./serviceinfrasetup.sh jenkinsbuild"
except:
- tags
tags:
- azure-build
environment:
name: "${Environment}"

.destroy_common: &destroy_common
<<: *common
stage: destroy
script:
- "chmod 777 serviceinfrasetup.sh; ./serviceinfrasetup.sh destroy
$destroy_client_token"
when: manual

.docker_build: &docker_build
<<: *common
stage: publish and apply
image: docker.siemens.com/mindsphere-azure/hub/mdsp-dind-java:vanilla
script:
- export REPONAME=$(echo $service_name | awk '{print tolower($0)}');
- export project_name="${CI_PROJECT_NAME}"
- rm build/libs/$REPONAME-*.jar.original build/libs/$REPONAME-*-sources.jar ||
echo error
- mv build/libs/$REPONAME-*jar build/libs/${REPONAME}.jar || echo error
- docker build --force-rm -f ./buildEnvs/${DockerFileName} -t
$dockerregistryurl/$account_name_prefix/$project_name:${ArtifactReleaseVersion} .
- docker login $dockerregistryurl -u $dockerusername -p $dockerpass
- docker push $dockerregistryurl/$account_name_prefix/$project_name:$
{ArtifactReleaseVersion}

when: manual
tags:
- stack-build
- az-docker

unit-test:
<<: *common
stage: test
script:
- "sh gradlew --stacktrace -PbuildEnv=$build_env test"
when: manual
tags:
- azure-build
artifacts:
expire_in: 2h
paths:
- build/libs
when: on_success # [opitional Remove this if you want]

cdc-test:
<<: *common
stage: test
script:
- "sh gradlew --stacktrace -PbuildEnv=$build_env cdcTest"
when: manual
tags:
- azure-build
artifacts:
expire_in: 2h
paths:
- build/libs

int-test:
<<: *common
stage: test
script:
- "sh gradlew --stacktrace -PbuildEnv=$build_env intTest"
when: manual
tags:
- azure-build
artifacts:
expire_in: 2h
paths:
- build/libs

######################################### Stack ##################################

.stack_module_upload: &stack_module_upload
<<: *common
stage: deploy
when: manual
tags:
- azure-build
script:
- "tar -cvf $service_name-$ArtifactReleaseVersion.tar -C
config/azstack/metadata/ ."
- "chmod 777 serviceinfrasetup.sh; ./serviceinfrasetup.sh stack_module_upload"
tags:
- stack-build
- azure

######################################## PRE-BUILD #############################

update-service-module:
<<: *common
stage: pre-build
script:
- "chmod 777 serviceinfrasetup.sh; ./serviceinfrasetup.sh update"
when: manual
except:
- tags

#register:
# <<: *common
# stage: pre-build
# except:
# - tags
# script:
# - cd gwrRegistration
# - "chmod 777 ./gr_registration.py;"
# - python ./gr_registration.py ${Environment} ../gwrregister/gwr.json
# when: manual

######################################## DEV #############################

Stack-DEV module upload:


<<: *stack_module_upload
except:
- rc
- nfr
- master
- tags

Dev Build:
<<: *common
stage: build and plan
script:
- java -version
- sh gradlew --stacktrace build -PbuildEnv=$build_env --refresh-dependencies
tags:
- azure-build
artifacts:
expire_in: 2h
paths:
- build/libs
when: on_success
except:
- tag
- rc
- nfr
- master

artifacts-snapshot:
<<: *common
stage: publish and apply
tags:
- azure-build
script:
- export changesetid=$(git log -1 --format=%B | grep "^jira-id" | cut -d ':' -f 2
|sed 's/ //')
- export buildnumber=${CI_PIPELINE_ID}
- sh gradlew publish -PbuildEnv=$build_env -Pchangesetid=$changesetid
-Pbuildnumber=$buildnumber -D repo.publish=$snapshot_repo
- export project_name=`sed -r 's/.*/\L&/' <<< "${CI_PROJECT_NAME}"`
when: manual
except:
- tags
- rc
- nfr
- master

artifact-build-release:
<<: *common
stage: publish and apply
tags:
- azure-build
only:
- tags
script:
- export changesetid=$(git log -1 --format=%B | grep "^jira-id" | cut -d ':' -f 2
|sed 's/ //')
- export buildnumber=${CI_PIPELINE_ID}
- sh gradlew publish -PbuildEnv=$build_env -Drepo.resolve=$resolve_repo
-Pchangesetid=$changesetid -Pbuildnumber=$buildnumber -P taskTimes -P release -D
repo.publish=$release_repo
# when: manual

publish-metrics:
<<: *common
stage: publish and apply
tags:
- azure-build
# only:
# - master
script:
- sh gradlew sonarqube -PbuildEnv=$build_env -Dsonar.analysis.mode=publish
-Dsonar.host.url=$SONAR_HOST -Dsonar.login=$SONAR_TOKEN
-Drepo.resolve=$resolve_repo -P taskTimes--stacktrace
when: manual

Dev-Terraform_plan:
<<: *Terraform_plan
except:
- rc
- nfr
- master
- tags
variables:
Region: weur
Environment: dev

#Azure-docker-publish:
# <<: *docker_build
# except:
# - rc
# - nfr
# - master
# - tags
# variables:
# dockerregistryurl: $aksacrurl
# dockerusername: $aksacrusername
# dockerpass: $aksacrpass

DEV-AZ-blob:
<<: *common
stage: publish and apply
script:
- bash ./serviceinfrasetup.sh publish
when: manual
tags:
- azure-build
except:
- rc
- nfr
- master
- tags
variables:
Region: weur
Environment: dev

DEV-Terraform-Apply:
<<: *deploy_common
except:
- rc
- nfr
- master
- tags
variables:
Region: weur
Environment: dev
dependencies:
- :Dev-Terraform_plan
environment:
name: "${Environment}"

DEV-jenkins-build:
<<: *jenkins_common
except:
- rc
- nfr
- master
- tags
variables:
Region: weur
Environment: dev

DEV-destroy:
<<: *destroy_common
except:
- rc
- nfr
- master
- tags
variables:
Region: weur
Environment: dev

Stack-Docker-Publish:
<<: *docker_build
except:
- rc
- nfr
- master
variables:
dockerregistryurl: $MDSP_STACK_ACR_DEV
dockerusername: $MDSP_STACK_ACR_DEV_USER_NAME
dockerpass: $MDSP_STACK_ACR_DEV_PASS

stack-artifact-release:
<<: *common
stage: publish and apply
image: docker.siemens.com/mindsphere-azure/hub/mdsp-dind-java:vanilla
tags:
- azure-build
only:
- tags
when: manual
script:
- chmod 777 serviceinfrasetup.sh; ./serviceinfrasetup.sh
stack_module_release

######################################## RC #############################

RC-Terraform_plan:
<<: *Terraform_plan
only:
- rc
variables:
Region: weur
Environment: rc

RC-AZ-blob:
<<: *build_common_from_repo
only:
- rc
variables:
Region: weur
Environment: rc

RC-Terraform-Apply:
<<: *deploy_common
only:
- rc
variables:
Region: weur
Environment: rc
dependencies:
- :RC-Terraform_plan

RC-Jenkins-build:
<<: *jenkins_common
only:
- rc
variables:
Region: weur
Environment: rc

RC-destroy:
<<: *destroy_common
only:
- rc
variables:
Region: weur
Environment: rc

Stack-RC module upload:


<<: *stack_module_upload
only:
- rc

######################################## NFR #############################

Stack-NFR module upload:


<<: *stack_module_upload
only:
- nfr

NFR-Terraform_plan:
<<: *Terraform_plan
only:
- nfr
variables:
Region: weur
Environment: nfr
NFR-AZ-blob:
<<: *build_common_from_repo
only:
- nfr
variables:
Region: weur
Environment: nfr

NFR-Terraform-Apply:
<<: *deploy_common
only:
- nfr
variables:
Region: weur
Environment: nfr
dependencies:
- :NFR-Terraform_plan

NFR-Jenkins-build:
<<: *jenkins_common
only:
- nfr
variables:
Region: weur
Environment: nfr

NFR-destroy:
<<: *destroy_common
only:
- nfr
variables:
Region: weur
Environment: nfr

######################################## RPOD #############################

Stack-PROD module upload:


<<: *stack_module_upload
only:
- master

PROD-Terraform_plan:
<<: *Terraform_plan
only:
- master
variables:
Region: weur
Environment: prod

PROD-AZ-blob:
<<: *build_common_from_repo
only:
- master
variables:
Region: weur
Environment: prod

PROD-Terraform-Apply:
<<: *deploy_common
only:
- master
variables:
Region: weur
Environment: prod
dependencies:
- :PROD-Terraform_plan

PROD-Jenkins-build:
<<: *jenkins_common
only:
- master
variables:
Region: weur
Environment: prod

PROD-destroy:
<<: *destroy_common
only:
- master
variables:
Region: weur
Environment: prod

You might also like