Diffstat (limited to 'Jenkinsfile')
| -rw-r--r-- | Jenkinsfile | 174 |
1 files changed, 9 insertions, 165 deletions
diff --git a/Jenkinsfile b/Jenkinsfile index 8633145..5d45ac9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -42,8 +42,6 @@ kind: Pod metadata: namespace: jenkins spec: - nodeSelector: - kubernetes.io/arch: ${GOARCH} containers: - name: kaniko image: gcr.io/kaniko-project/executor:v1.24.0-debug @@ -75,7 +73,7 @@ spec: try { sh '''#!/busybox/sh mkdir -p /kaniko/.docker - printf '{"auths":{"registry.sayag.it":{"username":"jenkins","password":"%s"}}}' "$REGISTRY_SAYAGIT_JENKINS_PASSWORD" > /kaniko/.docker/config.json + echo "{\"auths\":{\"registry.sayag.it\":{\"username\":\"jenkins\",\"password\":\"$REGISTRY_SAYAGIT_JENKINS_PASSWORD\"}}}" > /kaniko/.docker/config.json /kaniko/executor --context `pwd` \ --custom-platform=linux/${GOARCH} \ --build-arg TARGETOS=linux \ @@ -110,7 +108,7 @@ spec: - name: manifest-tool image: mplatform/manifest-tool:alpine-v2.2.2 imagePullPolicy: Always - command: [ 'cat' ] + entrypoint: [ 'true' ] tty: true resources: requests: @@ -126,11 +124,13 @@ spec: steps { script { env.GIT_COMMIT_SHORT = env.GIT_COMMIT ? env.GIT_COMMIT.take(7) : "unknown" - } - withCredentials([string(credentialsId: 'registry-sayagit-jenkins-password', variable: 'REGISTRY_SAYAGIT_JENKINS_PASSWORD')]) { - sh '''mkdir -p /root/.docker - printf '{"auths":{"registry.sayag.it":{"username":"jenkins","password":"%s"}}}' "$REGISTRY_SAYAGIT_JENKINS_PASSWORD" > /root/.docker/config.json - + sh '''#!/busybox/sh + mkdir -p /kaniko/.docker + echo "{\"auths\":{\"registry.sayag.it\":{\"username\":\"jenkins\",\"password\":\"$REGISTRY_SAYAGIT_JENKINS_PASSWORD\"}}}" > /kaniko/.docker/config.json + pushToTags="$IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT-$GOARCH" + if [ "$TAG_NAME" != "" ]; then + pushToTags="$pushToTags $IMAGE_PUSH_DESTINATION:$TAG_NAME-$GOARCH" + fi manifest-tool push from-args \ --platforms linux/amd64,linux/arm64 \ --template $IMAGE_PUSH_DESTINATION:commit-$GIT_COMMIT_SHORT-ARCH \ @@ -153,161 +153,5 @@ spec: } } } - stage('Deploy (Stage)') { - when { branch 'stage' } - agent { - kubernetes { - defaultContainer 'ansible' - yaml """ -apiVersion: v1 -kind: Pod -metadata: - namespace: jenkins -spec: - containers: - - name: ansible - image: ghcr.io/ansible/community-ansible-dev-tools:v26.7.2 - command: [ 'cat' ] - tty: true - resources: - requests: - cpu: "500m" - memory: 1Gi -""" - } - } - steps { - checkout scm - container('ansible') { - script { - env.GIT_COMMIT_SHORT = env.GIT_COMMIT ? env.GIT_COMMIT.take(7) : "unknown" - - def secretVars = [ - 'sayauz-web-stage-auth-salt' : 'AUTH_SALT', - 'sayauz-web-stage-s3-access-key-id' : 'S3_ACCESS_KEY_ID', - 'sayauz-web-stage-s3-secret-access-key' : 'S3_SECRET_ACCESS_KEY', - 'sayauz-web-stage-mail-salt' : 'MAIL_SALT', - 'sayauz-web-stage-mail-host' : 'MAIL_HOST', - 'sayauz-web-stage-mail-address' : 'MAIL_ADDRESS', - 'sayauz-web-stage-mail-username' : 'MAIL_USERNAME', - 'sayauz-web-stage-mail-password' : 'MAIL_PASSWORD' - ] - def bindings = secretVars.collect { id, varName -> string(credentialsId: id, variable: varName) } - bindings << sshUserPrivateKey(credentialsId: 'sayauz-svc-github', keyFileVariable: 'SSH_KEY_FILE', usernameVariable: 'SSH_USER') - - withCredentials(bindings) { - sh ''' - ansible-galaxy collection install community.docker - - mkdir -p ~/.ssh - cp "$SSH_KEY_FILE" ~/.ssh/id_ed25519 - chmod 600 ~/.ssh/id_ed25519 - ssh-keyscan -H uz.saya.casa >> ~/.ssh/known_hosts - - ssh -o ConnectTimeout=10 -i ~/.ssh/id_ed25519 "$SSH_USER@uz.saya.casa" "echo 'SSH connection successful'" - - cd deploy - ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook \ - playbook.yml \ - -i inventory.yml \ - -l stage \ - --private-key ~/.ssh/id_ed25519 \ - -u "$SSH_USER" \ - -e saya_today_web_auth_salt="$AUTH_SALT" \ - -e saya_today_web_s3_access_key_id="$S3_ACCESS_KEY_ID" \ - -e saya_today_web_s3_secret_access_key="$S3_SECRET_ACCESS_KEY" \ - -e saya_today_web_environment=stage \ - -e saya_today_web_tag=commit-$GIT_COMMIT_SHORT \ - -e saya_today_web_mail_salt="$MAIL_SALT" \ - -e saya_today_web_mail_host="$MAIL_HOST" \ - -e saya_today_web_mail_address="$MAIL_ADDRESS" \ - -e saya_today_web_mail_username="$MAIL_USERNAME" \ - -e saya_today_web_mail_password="$MAIL_PASSWORD" - ''' - } - } - } - } - } - stage('Deploy (Prod)') { - when { buildingTag() } - agent { - kubernetes { - defaultContainer 'ansible' - yaml """ -apiVersion: v1 -kind: Pod -metadata: - namespace: jenkins -spec: - containers: - - name: ansible - image: ghcr.io/ansible/community-ansible-dev-tools:v26.7.2 - command: [ 'cat' ] - tty: true - resources: - requests: - cpu: "500m" - memory: 1Gi -""" - } - } - steps { - checkout scm - container('ansible') { - script { - def secretVars = [ - 'sayauz-web-prod-auth-salt' : 'AUTH_SALT', - 'sayauz-web-prod-s3-access-key-id' : 'S3_ACCESS_KEY_ID', - 'sayauz-web-prod-s3-secret-access-key' : 'S3_SECRET_ACCESS_KEY', - 'sayauz-web-prod-mail-salt' : 'MAIL_SALT', - 'sayauz-web-prod-mail-host' : 'MAIL_HOST', - 'sayauz-web-prod-mail-address' : 'MAIL_ADDRESS', - 'sayauz-web-prod-mail-username' : 'MAIL_USERNAME', - 'sayauz-web-prod-mail-password' : 'MAIL_PASSWORD', - 'sayauz-web-prod-verification-google' : 'GOOGLE_VERIFICATION', - 'sayauz-web-prod-verification-yandex' : 'YANDEX_VERIFICATION', - 'sayauz-web-prod-verification-bing' : 'BING_VERIFICATION' - ] - def bindings = secretVars.collect { id, varName -> string(credentialsId: id, variable: varName) } - bindings << sshUserPrivateKey(credentialsId: 'sayauz-svc-github', keyFileVariable: 'SSH_KEY_FILE', usernameVariable: 'SSH_USER') - - withCredentials(bindings) { - sh ''' - ansible-galaxy collection install community.docker - - mkdir -p ~/.ssh - cp "$SSH_KEY_FILE" ~/.ssh/id_ed25519 - chmod 600 ~/.ssh/id_ed25519 - ssh-keyscan -H uz.saya.casa >> ~/.ssh/known_hosts - - ssh -o ConnectTimeout=10 -i ~/.ssh/id_ed25519 "$SSH_USER@uz.saya.casa" "echo 'SSH connection successful'" - - cd deploy - ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook \ - playbook.yml \ - -i inventory.yml \ - -l prod \ - --private-key ~/.ssh/id_ed25519 \ - -u "$SSH_USER" \ - -e saya_today_web_auth_salt="$AUTH_SALT" \ - -e saya_today_web_s3_access_key_id="$S3_ACCESS_KEY_ID" \ - -e saya_today_web_s3_secret_access_key="$S3_SECRET_ACCESS_KEY" \ - -e saya_today_web_environment=prod \ - -e saya_today_web_tag=$TAG_NAME \ - -e saya_today_web_mail_salt="$MAIL_SALT" \ - -e saya_today_web_mail_host="$MAIL_HOST" \ - -e saya_today_web_mail_address="$MAIL_ADDRESS" \ - -e saya_today_web_mail_username="$MAIL_USERNAME" \ - -e saya_today_web_mail_password="$MAIL_PASSWORD" \ - -e saya_today_google_verification="$GOOGLE_VERIFICATION" \ - -e saya_today_yandex_verification="$YANDEX_VERIFICATION" \ - -e saya_today_bing_verification="$BING_VERIFICATION" - ''' - } - } - } - } - } } } |