Skip to content

Latest commit

 

History

History
93 lines (83 loc) · 5.13 KB

README.md

File metadata and controls

93 lines (83 loc) · 5.13 KB

Jenkins Pipeline для мульти-платформенної параметризованої збірки

Підготовка середовища розробки

  1. Створимо Kubernetes кластер на локальному комп'ютері
  • Встановіть Kind: Kind - це інструмент, який дозволяє створювати та керувати локальними кластерами Kubernetes за допомогою «вузлів» контейнера Docker. Був розроблений для тестування самого Kubernetes, але може використовуватися для локальної розробки або CI.
$ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
$ chmod +x ./kind
$ sudo mv ./kind /usr/local/bin/kind
$ kind version
kind v0.11.1 go1.16.4 linux/amd64
  • Створимо кластер
$ kind create cluster --name jenkins
Creating cluster "jenkins" ...
 ✓ Ensuring node image (kindest/node:v1.21.1) 🖼 
 ✓ Preparing nodes 📦  
 ✓ Writing configuration 📜 
 ✓ Starting control-plane 🕹️ 
 ✓ Installing CNI 🔌 
 ✓ Installing StorageClass 💾 
Set kubectl context to "kind-jenkins"
You can now use your cluster with:

$ kubectl cluster-info --context kind-jenkins
Kubernetes control plane is running at https://127.0.0.1:42303
CoreDNS is running at https://127.0.0.1:42303/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

$ kubectl config set-context --current --namespace=default
Context "kind-jenkins" modified
  1. Встановіть Jenkins на кластер Kubernetes за допомогою Helm
$ helm repo add jenkinsci https://charts.jenkins.io/
$ helm repo update
$ helm install jenkins jenkinsci/jenkins
  1. Після запуску Jenkins отримайте доступ до інтерфейсу користувача Jenkins
$ kubectl exec --namespace default -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
ddKNLSgScCElXRyfMFbexv

$ kubectl --namespace default port-forward svc/jenkins 8080:8080&
  1. Забезпечимо доступ Jenkins до HitHub
  • Згенеруємо на локальному комп'ютері
$ ssh-keygen
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
# Публічний
$ cat ~/.ssh/id_rsa.pub
# Приватний 
$ cat ~/.ssh/id_rsa
  • Додамо публічну частину ключа до Deploy keys для репозиторію з застосунком
  • Поставте прапорець "Allow write access" (Дозволити запис) якщо вам потрібен доступ для запису.
  • Увійдіть до Jenkins і відкрийте налаштування вашого проекту.
  • У секції "Source Code Management" (Управління вихідним кодом) виберіть "Git".
  • У полі "Repository URL" (URL репозиторію) введіть URL вашого репозиторію GitHub.
  • В розділі "Credentials" (Облікові дані) виберіть "Add" (Додати) для додавання нових облікових даних.
  • Виберіть тип облікових даних "SSH Username with private key" (SSH-користувач з приватним ключем).
  • У полі "Private Key" (Приватний ключ) вставте ваш приватний ключ SSH. Ви можете взяти його з файлу ~/.ssh/id_rsa на вашому локальному комп'ютері.
  • Введіть назву для цих облікових даних і натисніть "Add" (Додати) для збереження.
  • Виберіть створені вами облікові дані в розділі "Credentials" (Облікові дані).
  • Вкажемо шлях до скрипту, який ми підготували у полі Script Path /pipeline/jenkins.groovy
  • Збережіть налаштування проекту.
  1. Налаштуємо доступ до локального комп'ютера за допомогою sshd щоб Jenkins міг використовувати його в якості агенту.
  • встановимо sshd сервер.
$ sudo apt-get install openssh-server
$ sudo nano /etc/ssh/sshd_config
$ sudo service ssh restart
$ ssh localhost -p 2222

$ cat ~/.ssh/id_rsa.pub

$ cat >>~/.ssh/authorized_keys  

$ ssh localhost -p 2222
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)
  • Якщо це не передбачено початковою конфігурацією Jenkins встановимо плагін SSH Build Agents
  • Додамо параметри доступу до Jenkins:
    - Launch method > SSH Build Agents
    - Credentials > vit-um - Host Key Verification Strategy > Non verifying... - Port > 2222