Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Birçok Azure hizmeti Jenkins eklentilerine sahip olsa da, bu eklentilerin çoğu 29 Şubat 2024 itibarıyla destek sona erdi. Azure CLI, Jenkins'i Azure hizmetleriyle tümleştirmenin şu anda önerilen yoludur. Daha fazla bilgi için Azureiçin Jenkins eklentileri
Uygulama geliştirmenin derleme ve test aşamasını otomatikleştirmek için sürekli tümleştirme ve dağıtım (CI/CD) işlem hattı kullanabilirsiniz. Bu öğreticide, Azure VM'de aşağıdakilerin nasıl yapılacağını içeren bir CI/CD işlem hattı oluşturacaksınız:
- Jenkins VM oluşturma
- Jenkins'i yükleme ve yapılandırma
- GitHub ile Jenkins arasında webhook entegrasyonu oluşturma
- GitHub taahhütlerinden Jenkins derleme işleri oluşturma ve tetikleme
- Uygulamanız için Docker görüntüsü oluşturma
- GitHub commitlerinin yeni Docker görüntüsü oluşturup çalışan uygulamayı güncellediğini doğrulama
Bu öğretici, sürekli olarak en son sürüme güncellenen Azure Cloud Shell içindeki CLI'yi kullanır. Cloud Shell'i açmak için herhangi bir kod bloğunun üst kısmından Deneyin'i seçin.
CLI'yi yerel olarak yükleyip kullanmayı tercih ederseniz bu öğretici için Azure CLI 2.0.30 veya sonraki bir sürümünü çalıştırmanız gerekir. Sürümü bulmak için az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.
Jenkins örneği oluşturma
İlk önyüklemede Linux sanal makinesini özelleştirme hakkında önceki bir öğreticide, cloud-init ile VM özelleştirmesini otomatikleştirmeyi öğrendinsiniz. Bu öğreticide vm'ye Jenkins ve Docker yüklemek için cloud-init dosyası kullanılır. Jenkins, sürekli tümleştirmeyi (CI) ve sürekli teslimi (CD) etkinleştirmek için Azure ile sorunsuz bir şekilde tümleşen popüler bir açık kaynak otomasyon sunucusudur. Jenkins'i kullanma hakkında daha fazla öğretici için bkz. Azure hub'ında Jenkins.
Şu anki kabuğunuzda cloud-init-jenkins.txt adlı bir dosya oluşturun, ardından aşağıdaki yapılandırmayı yapıştırın. Örneğin, dosyayı yerel makinenizde değil Cloud Shell’de oluşturun. Dosyayı oluşturmak ve kullanılabilir düzenleyicilerin listesini görmek için girin sensible-editor cloud-init-jenkins.txt
. Başta birinci satır olmak üzere cloud-init dosyasının tamamının doğru bir şekilde kopyalandığından emin olun:
#cloud-config
package_upgrade: true
write_files:
- path: /etc/systemd/system/docker.service.d/docker.conf
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
- path: /etc/docker/daemon.json
content: |
{
"hosts": ["fd://","tcp://127.0.0.1:2375"]
}
runcmd:
- apt install openjdk-8-jre-headless -y
- wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
- sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
- apt-get update && apt-get install jenkins -y
- curl -sSL https://get.docker.com/ | sh
- usermod -aG docker azureuser
- usermod -aG docker jenkins
- service jenkins restart
VM oluşturabilmek için önce az group create ile bir kaynak grubu oluşturun. Aşağıdaki örnek, eastus konumunda myResourceGroupJenkins adlı bir kaynak grubu oluşturur:
az group create --name myResourceGroupJenkins --location eastus
Şimdi ile az vm createkomutunu kullanarak bir VM oluşturun.
--custom-data
parametresini kullanarak cloud-init yapılandırma dosyanızı iletin. Dosyayı mevcut çalışma dizininizin dışına kaydettiyseniz cloud-init-jenkins.txt tam yolunu belirtin.
az vm create --resource-group myResourceGroupJenkins \
--name myVM \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys \
--custom-data cloud-init-jenkins.txt
VM'nin oluşturulması ve yapılandırılması birkaç dakika sürer.
Web trafiğinin VM'nize ulaşmasına izin vermek için az vm open-port komutunu kullanarak Jenkins trafiği için 8080 numaralı bağlantı noktasını ve örnek bir uygulamayı çalıştırmak için kullanılan Node.js uygulaması için 1337 numaralı bağlantı noktasını açın:
az vm open-port --resource-group myResourceGroupJenkins --name myVM --port 8080 --priority 1001
az vm open-port --resource-group myResourceGroupJenkins --name myVM --port 1337 --priority 1002
Jenkins’i yapılandırma
Jenkins örneğine erişmek için VM'nizin genel IP adresini alın:
az vm show --resource-group myResourceGroupJenkins --name myVM -d --query [publicIps] --o tsv
Güvenlik amacıyla, Jenkins yüklemesini başlatmak için VM'nizdeki bir metin dosyasında depolanan ilk yönetici parolasını girmeniz gerekir. Vm'nize SSH için önceki adımda elde edilen genel IP adresini kullanın:
ssh azureuser@<publicIps>
Jenkins'in şu komutu kullanarak service
çalıştığını doğrulayın:
$ service jenkins status
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; generated)
Active: active (exited) since Tue 2019-02-12 16:16:11 UTC; 55s ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 4103)
CGroup: /system.slice/jenkins.service
Feb 12 16:16:10 myVM systemd[1]: Starting LSB: Start Jenkins at boot time...
...
Jenkins kurulumunuz için initialAdminPassword
öğesini inceleyin ve kopyalayın:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Eğer dosya henüz mevcut değilse, cloud-init'in Jenkins ve Docker kurulumunu tamamlaması için birkaç dakika daha bekleyin.
Şimdi bir web tarayıcısı açın ve adresine http://<publicIps>:8080
gidin. İlk Jenkins kurulumunu şu şekilde tamamlayın:
- Yüklenecek eklentileri seç'i seçin
- Üst kısımdaki metin kutusunda GitHub araması yapın. GitHub kutusunu işaretleyin ve yükle'yi seçin
- İlk yönetici kullanıcıyı oluşturun. Yönetici gibi bir kullanıcı adı girin ve kendi güvenli parolanızı girin. Son olarak, bir tam ad ve e-posta adresi yazın.
- Kaydet ve Bitir seçin
- Jenkins hazır olduğunda Jenkins'i kullanmaya başla'yı seçin
- Jenkins'i kullanmaya başladığınızda web tarayıcınız boş bir sayfa görüntülüyorsa Jenkins hizmetini yeniden başlatın. SSH oturumunuzda yazın
sudo service jenkins restart
, ardından web tarayıcınızı yenileyin.
- Jenkins'i kullanmaya başladığınızda web tarayıcınız boş bir sayfa görüntülüyorsa Jenkins hizmetini yeniden başlatın. SSH oturumunuzda yazın
- Gerekirse jenkins'te oluşturduğunuz kullanıcı adı ve parolayla oturum açın.
GitHub webhook oluştur
GitHub ile tümleştirmeyi yapılandırmak için Azure örnekleri deposundan Node.js Hello World örnek uygulamasını açın. Depoyu kendi GitHub hesabınıza forklamak için sağ üst köşedeki Fork düğmesini seçin.
Oluşturduğunuz forkun içinde bir webhook oluşturun.
- Ayarlar'ı ve ardından sol taraftaki Web kancaları'nı seçin.
- Web kancası ekle'yi seçin ve filtre kutusuna Jenkins yazın.
-
Yük URL'si için
http://<publicIps>:8080/github-webhook/
adresini girin. Sondaki / öğesini eklediğinizden emin olun - İçerik türü içinapplication/x-www-form-urlencoded öğesini seçin.
- Bu web kancasını tetiklemek istediğiniz olaylar için Yalnızca gönderme olayı'nı seçin.
- Etkin seçeneğini işaretli hale getirin.
- Web kancası ekle'ye tıklayın.
Jenkins'de iş oluştur
Jenkins'in GitHub'da kod işleme gibi bir olaya yanıt vermesini sağlamak için bir Jenkins işi oluşturun. Kendi GitHub çatalınız için URL'leri kullanın.
Jenkins web sitenizde giriş sayfasından Yeni iş oluştur'u seçin:
- İş adı olarak HelloWorld girin. Serbest stil projesi'ni ve ardından Tamam'ı seçin.
-
Genel bölümünün altında GitHub projesi'ni seçin ve çatallanmış depo URL'nizi girin, örneğin
https://github.com/cynthn/nodejs-docs-hello-world
-
Kaynak kodu yönetimi bölümünde Git'i seçin, çatallanmış deponuz .git URL'sini girin, örneğin
https://github.com/cynthn/nodejs-docs-hello-world.git
- Derleme Tetikleyicileri bölümünde GITscm yoklaması için GitHub kanca tetikleyicisi'ni seçin.
-
Derleme bölümünde Derleme adımı ekle'yi seçin.
Kabuğu çalıştır seçin, ve komut penceresine
echo "Test"
girin. - İşler penceresinin alt kısmındaki Kaydet'i seçin.
GitHub tümleştirmeyi test edin
Jenkins ile GitHub tümleştirmesini test etmek için çatalınıza bir değişiklik yapın.
GitHub web kullanıcı arabirimine dönün, çatallanmış deponuzu seçin ve ardından index.js dosyasını seçin. 6. satırda okunacak şekilde bu dosyayı düzenlemek için kalem simgesini seçin:
response.end("Hello World!");
Değişikliklerinizi işlemek için alttaki Değişiklikleri işle düğmesini seçin.
Jenkins'te, iş sayfanızın sol alt köşesindeki Derleme geçmişi bölümünde yeni bir derleme başlatılır. Derleme numarası bağlantısını seçin ve sol taraftaki Konsol çıkışı'nı seçin. Kodunuz GitHub'dan çekilirken ve derleme eylemi iletiyi Test
konsola çıkarırken Jenkins'in uyguladığı adımları görüntüleyebilirsiniz. GitHub'da her işleme yapıldığında web kancası Jenkins'e ulaşır ve bu şekilde yeni bir derleme tetikler.
Docker görüntüsü oluşturma tanımı
GitHub işlemelerinize göre çalışan Node.js uygulamasını görmek için, uygulamayı çalıştırmak için bir Docker görüntüsü oluşturalım. Görüntü, uygulamayı çalıştıran kapsayıcının nasıl yapılandırıldığını tanımlayan bir Dockerfile'dan oluşturulur.
VM'nize SSH bağlantısından, önceki adımda oluşturduğunuz işin adını taşıyan Jenkins çalışma alanı dizinine geçin. Bu örnekte buna HelloWorld adı verilmişti.
cd /var/lib/jenkins/workspace/HelloWorld
Aşağıdaki içeriği kullanarak sudo sensible-editor Dockerfile
bu çalışma alanı dizininde bir dosya oluşturun ve yapıştırın. Dockerfile dosyasının tamamının, özellikle de ilk satırın doğru kopyalandığından emin olun:
FROM node:alpine
EXPOSE 1337
WORKDIR /var/www
COPY package.json /var/www/
RUN npm install
COPY index.js /var/www/
Bu Dockerfile, Alpine Linux kullanarak temel Node.js görüntüsünü kullanır, Hello World uygulamasının çalıştığı 1337 numaralı bağlantı noktasını kullanıma sunar, ardından uygulama dosyalarını kopyalar ve başlatır.
Jenkins yapı kuralları oluşturma
Önceki bir adımda, konsola bir ileti veren temel bir Jenkins derleme kuralı oluşturdunuz. Dockerfile'ımızı kullanmak ve uygulamayı çalıştırmak için derleme adımını oluşturalım.
Jenkins örneğinize döndüğünüzde, önceki adımda oluşturduğunuz işi seçin. Sol taraftan Yapılandır'ı seçin ve Yapı bölümüne gitmek için aşağı kaydırın.
Mevcut
echo "Test"
derleme adımınızı kaldırın. Mevcut yapı adımı kutusunun sağ üst köşesindeki kırmızı çarpıyı seçin.Derleme adımı ekle'yi ve ardından Kabuğu yürüt'i seçin
Komut kutusuna aşağıdaki Docker komutlarını girin ve Kaydet'i seçin:
docker build --tag helloworld:$BUILD_NUMBER . docker stop helloworld && docker rm helloworld docker run --name helloworld -p 1337:1337 helloworld:$BUILD_NUMBER node /var/www/index.js &
Docker derleme adımları bir görüntü oluşturur ve görüntülerin geçmişini koruyabilmeniz için bu görüntüyü Jenkins derleme numarasıyla etiketler. Uygulamayı çalıştıran mevcut kapsayıcılar durdurulur ve kaldırılır. Ardından görüntü kullanılarak yeni bir kapsayıcı başlatılır ve GitHub'daki en son işlemeleri temel alarak Node.js uygulamanızı çalıştırır.
İşlem hattınızı test edin
Bütün işlem hattını çalışırken görmek için GitHub deponuzda çatalladığınız index.js dosyasını yeniden düzenleyin ve Değişiklikleri işle seçeneğini seçin. Jenkins'te GitHub için web kancasını temel alan yeni bir iş başlatılır. Docker görüntüsünü oluşturmak ve uygulamanızı yeni bir kapsayıcıda başlatmak birkaç saniye sürer.
Gerekirse VM'nizin genel IP adresini yeniden alın:
az vm show --resource-group myResourceGroupJenkins --name myVM -d --query [publicIps] --o tsv
Bir web tarayıcısı açın ve girin http://<publicIps>:1337
. Node.js uygulamanız görüntülenmiş olup, GitHub dalınızdaki en son commit'leri aşağıdaki gibi yansıtmaktadır:
Şimdi GitHub'daki index.js dosyasında başka bir düzenleme yapın ve değişikliği işleyin. Jenkins'te işin tamamlanması için birkaç saniye bekleyin, ardından uygulamanızın güncelleştirilmiş sürümünün yeni bir kapsayıcıda çalıştığını görmek için web tarayıcınızı aşağıdaki gibi yenileyin:
Sonraki Adımlar
Bu öğreticide GitHub'ı her kod işlemesinde bir Jenkins derleme işi çalıştıracak ve ardından uygulamanızı test etmek için bir Docker kapsayıcısı dağıtacak şekilde yapılandırmıştınız. Nasıl yapılacağını öğrendinsiniz:
- Jenkins VM oluşturma
- Jenkins'i yükleme ve yapılandırma
- GitHub ile Jenkins arasında webhook entegrasyonu oluşturma
- GitHub taahhütlerinden Jenkins derleme işleri oluşturma ve tetikleme
- Uygulamanız için Docker görüntüsü oluşturma
- GitHub commitlerinin yeni Docker görüntüsü oluşturup çalışan uygulamayı güncellediğini doğrulama
Jenkins'i Azure DevOps Services ile tümleştirme hakkında daha fazla bilgi edinmek için sonraki öğreticiye geçin.