Skip to content

Commit

Permalink
updated
Browse files Browse the repository at this point in the history
  • Loading branch information
ismoilovdevml committed Jan 17, 2024
1 parent 303d203 commit 04d966b
Showing 1 changed file with 121 additions and 12 deletions.
133 changes: 121 additions & 12 deletions pages/guides/ci-cd/jenkins-docker-ci-cd.en-UZ.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -797,7 +797,7 @@ Bu qismda esa `Secret`ga Serverimiz IP manzilini yozishimiz kerak.

Endi Serverimizga kerakli `environment`larni qo'shib chiqishimiz kerak.

```groovy {8-9}
```groovy {4-6,8-9}
environment {
DISCORD_WEBHOOK = credentials('discord-webhook')
GIT_URL = 'https://github.com/ismoilovdevml/devops-journey.git'
Expand Down Expand Up @@ -846,7 +846,7 @@ Shu qismda bizda bitta muammo bor yani oldindan shu nomli container ishlab turga
nano deployer.sh
```

```bash filename="deployer.sh" {44}
```bash filename="deployer.sh" {36,44}
!/bin/bash
while [ $# -gt 0 ]; do
case "$1" in
Expand Down Expand Up @@ -907,8 +907,9 @@ Pipelinedagi `/home/username/deployer.sh` qismini deployer.sh scriptingiz joylas
**1->** GCR uchun `deployer.sh` bash script.
```bash
!/bin/bash
```bash {33,41}
#!/bin/bash
while [ $# -gt 0 ]; do
case "$1" in
--image=*)
Expand All @@ -929,9 +930,6 @@ while [ $# -gt 0 ]; do
--container-name=*)
CONTAINER_NAME="${1#*=}"
;;
--registry-user=*)
REGISTRY_USER="${1#*=}"
;;
*)
printf "***************************\n"
printf "* Error: Invalid argument.*\n"
Expand All @@ -940,13 +938,12 @@ while [ $# -gt 0 ]; do
esac
shift
done
echo y | docker container prune
cat ${GCR_CREDENTIALS} | docker login -u _json_key --password-stdin https://gcr.io
echo 'y' | docker container prune
cat $REGISTRY_TOKEN | docker login -u _json_key --password-stdin https://gcr.io
docker pull $IMAGE
echo "Clean temp Container"
if $(docker ps | awk -v CONTAINER_NAME="$CONTAINER_NAME" 'NR > 1 && $NF == CONTAINER_NAME{ret=1; exit} END{exit !ret}' ); then
docker stop "$CONTAINER_NAME"
docker rm -f "$CONTAINER_NAME"
Expand All @@ -955,3 +952,115 @@ docker run -d -p $SYSTEM_PORT:$CONTAINER_PORT --restart=always --name $CONTAINER
```
**2->** **GCR** uchun `Deploy Server` bosqichi.
```groovy {4-7,9-10}
environment {
DISCORD_WEBHOOK = credentials('discord-webhook')
GIT_URL = 'https://github.com/ismoilovdevml/devops-journey.git'
GCR_CREDENTIALS = credentials('gcr-key')
GCP_PROJECT_ID = credentials('gcp-project-id')
CONTAINER_NAME = 'devops-journey'
REGISTRY_URL = 'gcr.io'
GIT_TOKEN = credentials('git-token')
SERVER_USERNAME = credentials('server-username')
SERVER_IP = credentials('server-ip')
BRANCH_NAME = 'main'
}
```
```groovy
stage('Deploy Server') {
steps {
script {
sshagent(credentials: ['server-ssh']) {
sh """
ssh -o StrictHostKeyChecking=no ${SERVER_USERNAME}@${SERVER_IP} \
'/home/username/deployer.sh \
--image=${REGISTRY_URL}/${CONTAINER_NAME}:${BUILD_NUMBER} \
--container-port=8080 \
--system-port=8080 \
--registry-host=${REGISTRY_URL} \
--container-name=${CONTAINER_NAME} \
--registry-token=${GCR_CREDENTIALS}
"""
}
}
}
}
```
## Xulosa
Dockerhub bilan ishlaydigan to'liq CI/CD Jenkins pipeline
```groovy
pipeline {
agent any
environment {
DISCORD_WEBHOOK = credentials('discord-webhook')
GIT_URL = 'https://github.com/ismoilovdevml/devops-journey.git'
DOCKERHUB_CREDENTIALS = credentials('dockerhub')
CONTAINER_NAME = 'devops-journey'
REGISTRY_URL = 'devsecopsuser732'
GIT_TOKEN = credentials('git-token')
SERVER_USERNAME = credentials('server-username')
SERVER_IP = credentials('server-ip')
BRANCH_NAME = 'main'
}
stages {
stage('Clean Workspace') {
steps {
cleanWs()
}
}
stage('Clone Repository') {
steps {
git branch: BRANCH_NAME, url: GIT_URL, credentialsId: 'git-token'
}
}
stage('Build Application') {
steps {
withCredentials([usernamePassword(credentialsId: 'dockerhub', usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]) {
script {
def dockerlogin = "docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD}"
sh dockerlogin
sh """
docker build . -t ${REGISTRY_URL}/${CONTAINER_NAME}:${BUILD_NUMBER} -f Dockerfile
docker tag ${REGISTRY_URL}/${CONTAINER_NAME}:${BUILD_NUMBER} ${REGISTRY_URL}/${CONTAINER_NAME}:latest
docker push ${REGISTRY_URL}/${CONTAINER_NAME}:latest
docker push ${REGISTRY_URL}/${CONTAINER_NAME}:${BUILD_NUMBER}
docker image rm -f ${REGISTRY_URL}/${CONTAINER_NAME}:latest
docker image rm -f ${REGISTRY_URL}/${CONTAINER_NAME}:${BUILD_NUMBER}
"""
}
}
}
}
stage('Deploy Server') {
steps {
withCredentials([usernamePassword(credentialsId: 'dockerhub', usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]) {
script {
sshagent (credentials: ['server-ssh']) {
sh "ssh -o StrictHostKeyChecking=no ${SERVER_USERNAME}@${SERVER_IP} '/home/username/deployer.sh --image=${REGISTRY_URL}/${CONTAINER_NAME}:${BUILD_NUMBER} --container-port=3000 --system-port=3000 --registry-host=${REGISTRY_URL} --container-name=${CONTAINER_NAME} --registry-token=${DOCKER_PASSWORD} --registry-user=${DOCKER_USERNAME}'"
}
}
}
}
}
}
post {
always {
discordSend(
description: "Jenkins Pipeline Build ${currentBuild.currentResult}",
link: env.GIT_URL,
result: currentBuild.currentResult,
title: JOB_NAME,
webhookURL: env.DISCORD_WEBHOOK
)
}
}
}
```
**GCR** uchun

0 comments on commit 04d966b

Please sign in to comment.