Självstudie: Använda Azure Container Instances som jenkins-byggagent
Viktigt!
Många Azure-tjänster har Jenkins-plugin-program. Vissa av dessa plugin-program kommer att vara utan stöd från och med den 29 februari 2024. Azure CLI är det för närvarande rekommenderade sättet att integrera Jenkins med Azure-tjänster. Mer information finns i artikeln Jenkins-plugin-program för Azure.
Azure Container Instances (ACI) tillhandahåller en miljö på begäran, burstbar och isolerad miljö för att köra containerbaserade arbetsbelastningar. På grund av dessa attribut är ACI en bra plattform för att köra Jenkins-byggjobb i stor skala. Den här artikeln visar hur du distribuerar en ACI och lägger till den som en permanent byggagent för en Jenkins-kontrollant.
Mer information om Azure Container Instances finns i Om Azure Container Instances.
Förutsättningar
- Azure-prenumeration: Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
- Jenkins-server: Om du inte har en Jenkins-server installerad skapar du en Jenkins-server i Azure.
Förbereda Jenkins-kontrollanten
Bläddra till Jenkins-portalen.
Välj Hantera Jenkins på menyn.
Under Systemkonfiguration väljer du Konfigurera system.
Kontrollera att Jenkins-URL:en är inställd på HTTP-adressen för Jenkins-installationen –
http://<your_host>.<your_domain>:8080/
.Välj Hantera Jenkins på menyn.
Under Säkerhet väljer du Konfigurera global säkerhet.
Under Agenter anger du Fast port och anger lämpligt portnummer för din miljö.
Välj Spara.
Skapa Jenkins-arbetsagent
Bläddra till Jenkins-portalen.
Välj Hantera Jenkins på menyn.
Under Systemkonfiguration väljer du Hantera noder och moln.
Välj Ny nod på menyn.
Ange ett värde för Nodnamn.
Välj Permanent agent.
Välj OK.
Ange ett värde för fjärrrotkatalogen. Till exempel:
/home/jenkins/work
Lägg till en etikett (etiketter används för att gruppera flera agenter i en logisk grupp. Ett exempel på en etikett är
linux
att gruppera dina Linux-agenter.) med värdetlinux
.Ange Launch-metoden till Starta agenten genom att ansluta till huvudservern.
Kontrollera att alla obligatoriska fält har angetts eller angetts.
Välj Spara.
På sidan agentstatus bör du se
JENKINS_SECRET
ochAGENT_NAME
. Följande skärmbild visar hur du identifierar värdena. Båda värdena behövs när du skapar Azure Container Instance.
Skapa Azure Container Instance med CLI
Använd az group create för att skapa en Azure-resursgrupp.
az group create --name my-resourcegroup --location westus
Använd az container create för att skapa en Azure Container Instance. Ersätt platshållarna med de värden som erhölls när du skapade arbetsagenten.
az container create \ --name my-dock \ --resource-group my-resourcegroup \ --ip-address Public --image jenkins/inbound-agent:latest \ --os-type linux \ --ports 80 \ --command-line "jenkins-agent -url http://jenkinsserver:port <JENKINS_SECRET> <AGENT_NAME>"
Ersätt
http://jenkinsserver:port
,<JENKINS_SECRET>
och<AGENT_NAME>
med jenkins-kontrollanten och agentinformationen. När containern har startat ansluts den automatiskt till Jenkins-styrenhetsservern.Gå tillbaka till Jenkins-instrumentpanelen och kontrollera agentstatusen.
Kommentar
Jenkins-agenter ansluter till styrenheten via port
5000
, se till att porten tillåts inkommande till Jenkins-styrenheten.
Skapa ett byggjobb
Nu skapas ett Jenkins-byggjobb för att demonstrera Jenkins-versioner på en Azure-containerinstans.
Välj Nytt objekt, ge byggprojektet ett namn, till exempel aci-demo, välj Freestyle-projekt och välj OK.
Under Allmänt kontrollerar du att Begränsa var projektet kan köras är valt. Ange linux för etikettuttrycket. Den här konfigurationen säkerställer att det här byggjobbet körs i ACI-molnet.
Under Skapa väljer du Lägg till byggsteg och väljer Kör gränssnitt. Ange
echo "aci-demo"
som kommando.Välj Spara.
Kör byggjobbet
Om du vill testa byggjobbet och observera Azure Container Instances startar du en version manuellt.
Välj Skapa nu för att starta ett byggjobb. När jobbet startar visas en jobbstatus.
Klicka på build #1 i build-historiken.
Välj Konsolutdata för att visa byggens utdata.