diff --git a/pages/guides/ci-cd/_meta.en-US.json b/pages/guides/ci-cd/_meta.en-US.json index 014b86e..6d0a400 100644 --- a/pages/guides/ci-cd/_meta.en-US.json +++ b/pages/guides/ci-cd/_meta.en-US.json @@ -28,5 +28,11 @@ "icon": "▶️", "description": "Github Actionda Android CI/CD", "href": "/guides/ci-cd/android-github-actions" + }, + "jenkins-docker-ci-cd": { + "title": "Jenkins bilan Docker CI/CD", + "icon": "▶️", + "description": "Docker image build qilib deploy qilish", + "href": "/guides/ci-cd/jenkins-docker-ci-cd" } } \ No newline at end of file diff --git a/pages/guides/ci-cd/jenkins-docker-ci-cd.en-US.mdx b/pages/guides/ci-cd/jenkins-docker-ci-cd.en-US.mdx new file mode 100644 index 0000000..1ad751b --- /dev/null +++ b/pages/guides/ci-cd/jenkins-docker-ci-cd.en-US.mdx @@ -0,0 +1,2 @@ +## Koddan Servergacha: Jenkins bilan Docker CI/CD + diff --git a/pages/guides/ci-cd/jenkins-ornatish.en-US.mdx b/pages/guides/ci-cd/jenkins-ornatish.en-US.mdx index 82ae3d5..6a6b66b 100644 --- a/pages/guides/ci-cd/jenkins-ornatish.en-US.mdx +++ b/pages/guides/ci-cd/jenkins-ornatish.en-US.mdx @@ -13,75 +13,80 @@ Jenkins turli xil operatsion tizimlarga, jumladan Linux, macOS va Windows-ga o'r Jenkins instalerlari bir nechta Linux distributivlari uchun mavjud. -* Debian/Ubuntu -* Fedora -* Red Hat/Alma/Rocky +* **Debian/Ubuntu** +* **Fedora** +* **Red Hat/Alma/Rocky** -### Talablar +**Talablar** Minimal qurilma talablari: -* 256 MB operativ xotira(RAM) -* 1 GB disk maydoni (garchi Jenkins Docker konteyneri sifatida ishlayotgan bo'lsa, kamida 10 GB tavsiya etiladi) +* **256 MB** operativ xotira(RAM) +* **1 GB** disk maydoni (garchi Jenkins Docker konteyneri sifatida ishlayotgan bo'lsa, kamida **10 GB** tavsiya etiladi) -#### Kichik jamoa uchun tavsiya etilgan qurilma konfiguratsiyasi: +**Kichik jamoa uchun tavsiya etilgan qurilma konfiguratsiyasi:** -* 4 GB+ RAM -* 50 GB+ disk maydoni +* **4 GB+** RAM +* **50 GB+** disk maydoni -## Debian/Ubuntu +## Debian/Ubuntu'ga Jenkins o'rnatish Ubuntu kabi Debian va Debian-ga asoslangan distributivlarda siz Jenkins-ni `apt` orqali o'rnatishingiz mumkin. -## Java o'rnatish +**1-> Java o'rnatish** -Jenkins ishga tushirish uchun Java-ni talab qiladi, ammo ba'zi distributivlar standart bo'yicha buni o'z ichiga olmaydi va ba'zi Java versiyalari Jenkins bilan mos kelmaydi. +Jenkins ishga tushirish uchun **Java**-ni talab qiladi, ammo ba'zi distributivlar default holda buni o'z ichiga olmaydi va ba'zi Java versiyalari Jenkins bilan mos kelmaydi. -Siz foydalanishingiz mumkin bo'lgan bir nechta Java ilovalari mavjud. OpenJDK hozirda eng ommabop, biz undan ushbu qo'llanmada foydalanamiz. +Siz foydalanishingiz mumkin bo'lgan bir nechta Java ilovalari mavjud. **OpenJDK** hozirda eng ommabop, biz undan ushbu qo'llanmada foydalanamiz. -Debian apt repositoriyalarini yangilang, OpenJDK 17 ni o'rnating va buyruqlar bilan o'rnatishni tekshiring: +Debian apt repositoriyalarini yangilang, **OpenJDK 17** ni o'rnating va buyruqlar bilan o'rnatishni tekshiring: ```bash sudo apt update -sudo apt install openjdk-17-jre +sudo apt install fontconfig openjdk-17-jre -y java -version ``` -### Uzoq muddatli qo'llab-quvvatlash versiyasi(LTS Long Term Support release) +**2->** Uzoq muddatli qo'llab-quvvatlash versiyasi(**LTS** **L**ong **T**erm **S**upport release) -LTS (Uzoq muddatli qo'llab-quvvatlash) versiyasi har 12 haftada muntazam releaselar oqimidan o'sha vaqt uchun barqaror release sifatida tanlanadi. U debian-stable apt repositorydan o'rnatilishi mumkin. +**LTS** (Uzoq muddatli qo'llab-quvvatlash) versiyasi har 12 haftada muntazam releaselar oqimidan o'sha vaqt uchun barqaror release sifatida tanlanadi. U debian-stable apt repositorydan o'rnatilishi mumkin. ```bash -curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \ - /usr/share/keyrings/jenkins-keyring.asc > /dev/null +sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \ + https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \ https://pkg.jenkins.io/debian-stable binary/ | sudo tee \ /etc/apt/sources.list.d/jenkins.list > /dev/null sudo apt-get update -sudo apt-get install jenkins +sudo apt-get install jenkins -y ``` -### Haftalik Release +**3->** Haftalik Release(ixtiyoriy) Foydalanuvchilar va plaginlarni ishlab chiquvchilarga xatolarni tuzatish va xususiyatlarni yetkazib berish uchun har hafta yangi release chiqariladi. Uni debian apt repositorydan o'rnatishingiz mumkin. ```bash -curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \ - /usr/share/keyrings/jenkins-keyring.asc > /dev/null +sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \ + https://pkg.jenkins.io/debian/jenkins.io-2023.key echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \ https://pkg.jenkins.io/debian binary/ | sudo tee \ /etc/apt/sources.list.d/jenkins.list > /dev/null sudo apt-get update -sudo apt-get install jenkins +sudo apt-get install jenkins -y ``` -## Fedora +## Fedora'ga Jenkins o'rnatish +**1->** Java o'rnatish + +```bash +sudo dnf install java-17-openjdk -y +``` Jenkins-ni `dnf` orqali o'rnatishingiz mumkin. Avval Jenkins veb-saytidan Jenkins repositoryni paket menejeriga qo'shishingiz kerak. -### Uzoq muddatli qo'llab-quvvatlash versiyasi(LTS Long Term Support release) +**2->** Uzoq muddatli qo'llab-quvvatlash versiyasi(**LTS** **L**ong **T**erm **S**upport release) LTS (Uzoq muddatli qo'llab-quvvatlash) versiyasi har 12 haftada muntazam releaselar oqimidan o'sha vaqt uchun barqaror release sifatida tanlanadi. Uni `redhat-stable` yum repositorydan o'rnatish mumkin. @@ -90,14 +95,11 @@ sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key sudo dnf upgrade -# Jenkins package uchun kerakli dependensylarni qo'shing -sudo dnf install java-17-openjdk -sudo dnf install jenkins +sudo dnf install jenkins -y sudo systemctl daemon-reload - ``` -### Haftalik Release +**3->** Haftalik Release(ixtiyoriy) Foydalanuvchilar va plaginlarni ishlab chiquvchilarga xatolarni tuzatish va xususiyatlarni yetkazib berish uchun har hafta yangi release chiqariladi. Uni redhat yum repositoriyadan o'rnatish mumkin. @@ -106,9 +108,43 @@ sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key sudo dnf upgrade -# Jenkins package uchun kerakli dependensylarni qo'shing -sudo dnf install java-17-openjdk -sudo dnf install jenkins +sudo dnf install jenkins -y +``` + +## Red Hat/Alma/Rocky'ga Jenkins o'rnatish +Siz **Jenkins**-ni **yum** orqali **Red Hat Enterprise Linux, Alma Linux, Rocky Linux, Oracle Linux** va boshqa **Red Hat**-ga asoslangan distributivlarga o'rnatishingiz mumkin. + +Siz Jenkins **Long Term Support** releaseni yoki Jenkins haftalik versiyasini tanlashingiz kerak. + +**1->** Jenkins uchun Java o'rnatish + +```bash +sudo yum upgrade +sudo yum install fontconfig java-17-openjdk -y +java -version +``` +**2->** Uzoq muddatli qo'llab-quvvatlash versiyasi(**LTS** **L**ong **T**erm **S**upport release) +LTS (Uzoq muddatli qo'llab-quvvatlash) versiyasi har 12 haftada muntazam releaselar oqimidan o'sha vaqt uchun barqaror release sifatida tanlanadi. Uni `redhat-stable` yum repositorydan o'rnatish mumkin. + +```bash +sudo wget -O /etc/yum.repos.d/jenkins.repo \ + https://pkg.jenkins.io/redhat-stable/jenkins.repo +sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key +sudo yum upgrade +sudo yum install jenkins -y +sudo systemctl daemon-reload +``` + +**3->** Haftalik Release(ixtiyoriy) + +Foydalanuvchilar va plaginlarni ishlab chiquvchilarga xatolarni tuzatish va xususiyatlarni yetkazib berish uchun har hafta yangi release chiqariladi. Uni redhat yum repositoriyadan o'rnatish mumkin. + +```bash +sudo wget -O /etc/yum.repos.d/jenkins.repo \ + https://pkg.jenkins.io/redhat/jenkins.repo +sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key +sudo yum upgrade +sudo yum install jenkins -y ``` ## Jenkinsni ishga tushirish @@ -127,22 +163,22 @@ Yuqoridagi protseduralardan biri yordamida Jenkinsni yuklab olish, o'rnatish va Ushbu wizard setup sizni Jenkins qulfini ochish, uni plaginlar bilan sozlash va Jenkins-ga kirishni davom ettirishingiz mumkin bo'lgan birinchi administrator foydalanuvchisini yaratish uchun bir necha tezkor "bir martalik("one-off")" bosqichlardan o'tadi. -#### Jenkins qulfini ochish +**1->** Jenkins qulfini ochish Yangi Jenkins misoliga birinchi marta kirganingizda, uni avtomatik ravishda yaratilgan parol yordamida qulfdan chiqarish so'raladi. -1. http://localhost:8080 (yoki uni oʻrnatishda Jenkins uchun qaysi portni sozlagan boʻlsangiz) sahifasini koʻrib chiqing va `Unlock Jenkins` sahifasi paydo boʻlguncha kuting. +**2->** http://localhost:8080 (yoki uni oʻrnatishda Jenkins uchun qaysi portni sozlagan boʻlsangiz) sahifasini koʻrib chiqing va `Unlock Jenkins` sahifasi paydo boʻlguncha kuting. ![jenkins](/images/ci-cd/1.jpg) -parolni ko'rish uchun jenkisn parol qayerda turganini ko'rsatib parol fayliga yo'l ko'rstaib qo'yadi yani `/var/lib/jenkins/secrets/initialAdminPassword`. parolni olish quyidagi buyruqdan foydalanamiz. +**2->** parolni ko'rish uchun jenkins parol qayerda turganini ko'rsatib parol fayliga yo'l ko'rstaib qo'yadi yani `/var/lib/jenkins/secrets/initialAdminPassword`. parolni olish quyidagi buyruqdan foydalanamiz. ```bash sudo cat /var/lib/jenkins/secrets/initialAdminPassword ``` -BU buyruq `sudo cat /var/lib/jenkins/secrets/initialAdminPassword` parolni konsolda chop etadi. +Bu buyruq `sudo cat /var/lib/jenkins/secrets/initialAdminPassword` parolni konsolda chop etadi. Agar siz Jenkins-ni Docker-da rasmiy jenkins/jenkins imagedan foydalanib ishlayotgan bo'lsangiz, quyidagi buyruqdan foydalanib, parolni konteynerga kiritmasdan turib konsolda chop etishingiz mumkin. @@ -155,24 +191,37 @@ Keyingi ekranda tavsiya etilgan plaginlarni o'rnatish yoki maxsus plaginlarni ta ![jenkins](/images/ci-cd/2.png) -Biz `suggested plugins` opsiyasini bosamiz, bu darhol o'rnatish jarayonini boshlaydi. +**3->** Biz `suggested plugins` opsiyasini bosamiz, bu darhol o'rnatish jarayonini boshlaydi. ![jenkins](/images/ci-cd/3.png) -O'rnatish tugallangach, sizdan birinchi `Admin User` o'rnatish so'raladi. Bu bosqichni oʻtkazib yuborish va yuqoridagi boshlangʻich parol yordamida administrator sifatida davom etish mumkin, lekin foydalanuvchi yaratishga biroz vaqt ajratamiz. +**4->** O'rnatish tugallangach, sizdan birinchi `Admin User` o'rnatish so'raladi. Bu bosqichni oʻtkazib yuborish va yuqoridagi boshlangʻich parol yordamida administrator sifatida davom etish mumkin, lekin foydalanuvchi yaratishga biroz vaqt ajratamiz. ![jenkins](/images/ci-cd/4.png) -Siz Jenkins instance uchun afzal qilingan URL manzilini tasdiqlashingizni so'raydigan Instance Configuration sahifasini olasiz. Serveringiz uchun domen nomini yoki serveringizning IP manzilini tasdiqlang: +**5->** Siz Jenkins instance uchun afzal qilingan URL manzilini tasdiqlashingizni so'raydigan Instance Configuration sahifasini olasiz. Serveringiz uchun domen nomini yoki serveringizning IP manzilini tasdiqlang: ![jenkins](/images/ci-cd/5.png) -Tegishli ma'lumotlarni tasdiqlaganingizdan so'ng, `Save and Finish` tugmasini bosing. Siz `"Jenkins is Ready!"` degan tasdiqlash sahifasini olasiz: +**6->** Tegishli ma'lumotlarni tasdiqlaganingizdan so'ng, `Save and Finish` tugmasini bosing. Siz `"Jenkins is Ready!"` degan tasdiqlash sahifasini olasiz: ![jenkins](/images/ci-cd/6.png) -Asosiy Jenkins boshqaruv paneliga tashrif buyurish uchun `Start using Jenkins` tugmasini bosing: +**7->** Asosiy Jenkins boshqaruv paneliga tashrif buyurish uchun `Start using Jenkins` tugmasini bosing: ![jenkins](/images/ci-cd/8.png) -Shu nuqtada siz Jenkins-ni muvaffaqiyatli o'rnatdingiz. \ No newline at end of file +**Shu nuqtada siz Jenkins-ni muvaffaqiyatli o'rnatdingiz.** + +## Qo'shimcha + + + +**Foydalanilgan manbalar:** [www.jenkins.io](https://www.jenkins.io/doc/book/installing/linux/) + +**Sana:** 2023.11.19(2023-yil 19-noyabr) + +**Oxirgi yangilanish:** 2024.01.09(2024-yil 9-yanvar) + +**Muallif: Otabek Ismoilov** + \ No newline at end of file