2022-08-22 16:17:19 +02:00
|
|
|
pipeline {
|
2022-11-14 14:58:44 +01:00
|
|
|
environment {
|
|
|
|
OSIA_GIT_SECRET = "ocp-deployment-repo"
|
|
|
|
OSIA_GIT_BRANCH = "persistence"
|
|
|
|
ANSIBLE_VAULT_PASSWORD = "ansible-vault-password"
|
|
|
|
GITLAB_CREDENTIALS = "gitlab-debeziumci-ssh"
|
|
|
|
}
|
2022-08-22 16:17:19 +02:00
|
|
|
agent {
|
2022-11-14 14:58:44 +01:00
|
|
|
label 'debezium-ci-tools'
|
2022-08-22 16:17:19 +02:00
|
|
|
}
|
|
|
|
stages {
|
|
|
|
stage('Checkout and prepare git') {
|
|
|
|
steps {
|
2022-11-14 14:58:44 +01:00
|
|
|
container("debezium-ci-tools") {
|
|
|
|
script {
|
|
|
|
withCredentials([
|
|
|
|
string(credentialsId: "${env.OSIA_GIT_SECRET}", variable: 'OSIA_GIT_REPOSITORY')
|
|
|
|
]) {
|
|
|
|
checkout([
|
|
|
|
$class : 'GitSCM',
|
|
|
|
branches : [[name: "${env.OSIA_GIT_BRANCH}"]],
|
|
|
|
userRemoteConfigs: [[url: "${OSIA_GIT_REPOSITORY}",
|
|
|
|
credentialsId: "${env.GITLAB_CREDENTIALS}"]],
|
|
|
|
extensions : [[$class: 'CleanCheckout'],
|
|
|
|
[$class: 'RelativeTargetDirectory',
|
|
|
|
relativeTargetDir: 'OSIA-dbz']] +
|
|
|
|
[[$class: 'CloneOption', noTags: false, depth: 1, reference: '', shallow: true]],
|
|
|
|
submoduleCfg : [],
|
|
|
|
doGenerateSubmoduleConfigurations: false,
|
|
|
|
])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
script {
|
2022-08-22 16:17:19 +02:00
|
|
|
withCredentials([
|
2022-11-14 14:58:44 +01:00
|
|
|
sshUserPrivateKey(credentialsId: "${env.GITLAB_CREDENTIALS}", keyFileVariable: 'TMP_SSH_KEY_FILE')
|
|
|
|
]){
|
|
|
|
sh '''
|
|
|
|
cd "${WORKSPACE}/OSIA-dbz/"
|
|
|
|
ls
|
|
|
|
git status
|
|
|
|
git config --local user.name "Debezium CI"
|
|
|
|
git config --local user.email "debezium-qe@redhat.com"
|
|
|
|
cp ${TMP_SSH_KEY_FILE} SSH_KEY_FILE
|
|
|
|
git config --add --local core.sshCommand "ssh -i $(readlink -f SSH_KEY_FILE)"
|
|
|
|
git checkout ${OSIA_GIT_BRANCH}
|
|
|
|
'''
|
|
|
|
}
|
2022-08-22 16:17:19 +02:00
|
|
|
}
|
|
|
|
}
|
2022-11-14 14:58:44 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
stage("Setup AWS credentials") {
|
|
|
|
steps {
|
|
|
|
container("debezium-ci-tools") {
|
|
|
|
withCredentials([string(credentialsId: "awscredentials", variable: "AWS_SHARED_CREDENTIALS_FILE")]) {
|
|
|
|
sh(script: "mkdir -p /home/jenkins/.aws")
|
|
|
|
sh(script: "echo -e \"${AWS_SHARED_CREDENTIALS_FILE}\" > /home/jenkins/.aws/credentials")
|
2022-08-22 16:17:19 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
stage('Deploy_cluster') {
|
|
|
|
when() {
|
|
|
|
expression { !params.REMOVE_CLUSTER }
|
|
|
|
}
|
|
|
|
steps {
|
2022-11-14 14:58:44 +01:00
|
|
|
container("debezium-ci-tools") {
|
|
|
|
withCredentials([
|
|
|
|
string(credentialsId: "${env.ANSIBLE_VAULT_PASSWORD}", variable: 'ANSIBLE_PASSWORD')
|
|
|
|
]) {
|
|
|
|
sh '''
|
|
|
|
set -ex
|
|
|
|
cd "${WORKSPACE}/OSIA-dbz/secrets"
|
|
|
|
echo "${ANSIBLE_PASSWORD}" > ../password.txt
|
|
|
|
ansible-vault decrypt --vault-password-file ../password.txt *
|
|
|
|
cd ..
|
|
|
|
mv ./secrets/* ./
|
2022-11-24 12:35:10 +01:00
|
|
|
if [[ $CLOUD == "openstack" ]] ; then export CLOUD_ENV=" --cloud-env psi" ; else export CLOUD_ENV="" ; fi
|
|
|
|
if [[ $CLOUD == "openstack" ]] ; then export DNS_PROVIDER="--dns-provider route53" ; else export DNS_PROVIDER="" ; fi
|
|
|
|
export AWS_SHARED_CREDENTIALS_FILE=/home/jenkins/.aws/credentials && osia install --cluster-name ${CLUSTER_NAME} --cloud ${CLOUD} --installer-version ${INSTALLER_VERSION} ${DNS_PROVIDER} ${CLOUD_ENV}
|
2022-11-14 14:58:44 +01:00
|
|
|
export KUBECONFIG="${WORKSPACE}/OSIA-dbz/${CLUSTER_NAME}/auth/kubeconfig"
|
|
|
|
oc create secret generic htpass-secret --from-file=htpasswd=ocp-users.htpasswd -n openshift-config
|
|
|
|
oc apply -f htpasswd.cr.yaml -n openshift-config
|
|
|
|
oc adm policy add-cluster-role-to-user cluster-admin debezium
|
|
|
|
'''
|
|
|
|
}
|
2022-08-22 16:17:19 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
stage('Remove_cluster') {
|
|
|
|
when() {
|
|
|
|
expression { params.REMOVE_CLUSTER }
|
|
|
|
}
|
|
|
|
steps {
|
2022-11-14 14:58:44 +01:00
|
|
|
container("debezium-ci-tools") {
|
|
|
|
withCredentials([
|
|
|
|
string(credentialsId: "${env.ANSIBLE_VAULT_PASSWORD}", variable: 'ANSIBLE_PASSWORD')
|
|
|
|
]) {
|
|
|
|
sh '''
|
|
|
|
set -ex
|
|
|
|
cd "${WORKSPACE}/OSIA-dbz/secrets"
|
|
|
|
echo "${ANSIBLE_PASSWORD}" > ../password.txt
|
|
|
|
ansible-vault decrypt --vault-password-file ../password.txt *
|
|
|
|
cd ..
|
|
|
|
mv ./secrets/* ./
|
|
|
|
export AWS_SHARED_CREDENTIALS_FILE=/home/jenkins/.aws/credentials && osia clean --cluster-name ${CLUSTER_NAME} --installer-version ${INSTALLER_VERSION}
|
|
|
|
'''
|
|
|
|
}
|
2022-08-22 16:17:19 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
post {
|
|
|
|
always {
|
2023-01-04 13:54:58 +01:00
|
|
|
mail to: 'debezium-qe@redhat.com', subject: "OCP cluster deployment/removal #${env.BUILD_NUMBER} finished with ${currentBuild.currentResult}", body: """
|
2022-11-14 14:58:44 +01:00
|
|
|
${currentBuild.projectName} run ${env.BUILD_URL} finished with result: ${currentBuild.currentResult}
|
|
|
|
"""
|
2022-08-22 16:17:19 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|