Självstudie: Konfigurera en Jenkins-miljö och aktivera CI/CD för en Java-app i Service Fabric
Den här självstudien är del fem i en serie. Den visar hur du använder Jenkins för att distribuera uppgraderingar till din tillämpning. I den här självstudien används plugin-programmet för Service Fabric Jenkins i kombination med en GitHub-databas, som är värd för röstningsprogrammet, för att distribuera tillämpningen till ett kluster.
I del fem i serien lär du dig hur du:
- Distribuerar Service Fabric Jenkins-containern på din dator
- Konfigurerar Jenkins-miljön för distribution till Service Fabric
- Uppgraderar tillämpningen
I den här självstudieserien får du lära du dig att:
Förutsättningar
- Installera Git på den lokala datorn från sidan för hämtningsbara Git-filer. Mer information om Git finns i Git-dokumentationen.
- Ha tidigare erfarenhet av Jenkins.
- Skapa ett GitHub-konto och veta hur du använder GitHub.
- Installera Docker på datorn.
Hämta och distribuera Service Fabric Jenkins-containeravbildningen
Du kan konfigurera Jenkins i eller utanför ett Service Fabric-kluster. Följande instruktioner visar hur du konfigurerar det utanför ett kluster med en angiven Docker-avbildning. Det går också att använda en förkonfigurerad kompileringsmiljö för Jenkins. Följande containeravbildning är förinstallerad i plugin-programmet för Service Fabric och är redo för användning med Service Fabric omedelbart.
Kommentar
I följande exempel hämtas en offentlig containeravbildning från Docker Hub. Vi rekommenderar att du autentiserar med ditt Docker Hub-konto (docker login
) först i stället för att göra en anonym pull-begäran. För att förbättra tillförlitligheten när du använder offentligt innehåll importerar och hanterar du avbildningen i ett privat Azure-containerregister. Läs mer om hur du arbetar med offentliga avbildningar.
Hämta containeravbildningen för Service Fabric Jenkins:
docker pull rapatchi/jenkins:v10
. Plugin-programmet för Service Fabric Jenkins är förinstallerat i avbildningen.Kör containeravbildningen med den plats där Azure-certifikaten är lagrade på den lokala monterade datorn.
docker run -itd -p 8080:8080 -v /service-fabric-java-quickstart/AzureCluster rapatchi/jenkins:v10
Hämta ID:t för containeravbildningsinstansen. Du kan visa en lista med alla Docker-containrar med hjälp av kommandot
docker ps –a
Hämta lösenordet för din Jenkins-instans genom att köra följande kommando:
docker exec [first-four-digits-of-container-ID] cat /var/jenkins_home/secrets/initialAdminPassword
Om container-ID:t är 2d24a73b5964 ska du använda 2d24.
- Det här lösenordet krävs för att logga in på Jenkins-instrumentpanelen från portalen som är
http://<HOST-IP>:8080
- När du loggar in för första gången skapar du ett eget användarkonto, eller så använder du administratörskontot.
- Det här lösenordet krävs för att logga in på Jenkins-instrumentpanelen från portalen som är
Konfigurera GitHub för Jenkins genom att utföra åtgärderna som nämns i Generating a new SSH key and adding it to the SSH agent (Generera en ny SSH-nyckel och lägga till den i SSH-agenten). Eftersom kommandona körs från en Docker-container följer du instruktionerna för Linux-miljön.
Skapa SSH-nyckeln med hjälp av instruktionerna från GitHub. Lägg sedan till SSH-nyckeln till GitHub-kontot som är värd för databasen.
Kör de kommandon som nämns i länken ovan i Jenkins Docker-gränssnittet (och inte på värden).
Om du vill logga in till Jenkins-gränssnittet från värden ska du använda följande kommandon:
docker exec -t -i [first-four-digits-of-container-ID] /bin/bash
Kontrollera att klustret eller datorn där Jenkins-containeravbildningen finns har en offentlig IP-adress. Med en offentlig IP-adress kan Jenkins-instansen ta emot meddelanden från GitHub.
Skapa och konfigurera ett Jenkins-jobb
Om du inte har någon databas att använda som värd för röstningsprojektet på GitHub börjar du med att skapa en. Databasen kallas dev_test i återstoden av den här självstudien.
Skapa ett nytt objekt på Jenkins-instrumentpanelen vid
http://<HOST-IP>:8080
.Ange ett namn (till exempel MyJob). Välj free-style project (freestyle-projekt) och klicka på OK.
Gå till jobbsidan och klicka sedan på Konfigurera.
a. Markera kryssrutan och ange URL:en för GitHub-projektet under GitHub-projekt i det allmänna avsnittet. Den här URL:en är värd för det Service Fabric Java-program som du vill integrera med Jenkins CI/CD-flödet (t.ex.
https://github.com/testaccount/dev_test
).b. I avsnittet Source Code Management (Källkodshantering) väljer du Git. Ange URL för databasen som är värd för det Service Fabric Java-program som du vill integrera med Jenkins CI/CD-flödet (t.ex.
https://github.com/testaccount/dev_test.git
). Du kan också ange här vilken gren som ska byggas (t.ex. /master).Konfigurera din GitHub (som är värd för databasen) så att den kan kommunicera med Jenkins. Gör så här:
a. Gå till GitHub-lagringsplatssidan. Gå till Inställningar>Integrations and Services (Integreringar och tjänster).
b. Välj Lägg till tjänst, skriv Jenkins och välj Jenkins GitHub-plugin-programmet.
c. Ange din Jenkins-webhooksadress (som standard ska den vara
http://<PublicIPorFQDN>:8081/github-webhook/
). Klicka på Lägg till/Uppdatera tjänsten.d. En testhändelse skickas till Jenkins-instansen. Du bör se en grön bock vid webhooken i GitHub och dina projektversioner.
I avsnittet om build-utlösare väljer du önskat alternativ. I det här exemplet vill du utlösa en build när något skickas till databasen. Därför väljer du GitHub hook trigger for GITScm polling (GitHub-hookutlösare för GITScm-avsökning).
Under avsnittet Build (Bygg) i listrutan Add build step (Lägg till byggsteg) väljer du alternativet Invoke Gradle Script (Anropa Gradle-skript). I widgeten som visas öppnar du menyn för avancerade alternativ och anger sökvägen till rotbuildskript för ditt program. Då hämtas build.gradle från den angivna sökvägen och fungerar på motsvarande sätt.
I listrutan Post-Build Actions (Åtgärder efter skapandet) väljer du Deploy Service Fabric Project (Distribuera Service Fabric-projekt). Här måste du ange klusterinformation där Jenkins-kompilerade Service Fabric-programmet skulle distribueras. Sökvägen till certifikatet är platsen där volymen monterades (/ tmp/myCerts).
Du kan även ange ytterligare information som används för att distribuera programmet. Följande skärmbild visar ett exempel på hur informationen om programmet kan se ut:
Kommentar
Det här klustret kan vara detsamma som det kluster som är värd för Jenkins-containerprogrammet om du använder Service Fabric för att distribuera Jenkins-containeravbildningen.
Klicka på Spara.
Distribuera ditt befintliga program
Uppdatera HTML-titeln i filen VotingApplication/VotingWebPkg/Code/wwwroot/index.html till Service Fabric röstningsexempel V2.
<div ng-app="VotingApp" ng-controller="VotingAppController" ng-init="refresh()"> <div class="container-fluid"> <div class="row"> <div class="col-xs-8 col-xs-offset-2 text-center"> <h2>Service Fabric Voting Sample V2</h2> </div> </div> </div> </div>
Uppdatera versionen för ApplicationTypeVersion och ServiceManifestVersion till 2.0.0 i filen Voting/VotingApplication/ApplicationManifest.xml.
<?xml version="1.0" encoding="utf-8" standalone="no"?> <ApplicationManifest xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VotingApplicationType" ApplicationTypeVersion="2.0.0"> <Description>Voting Application</Description> <ServiceManifestImport> <ServiceManifestRef ServiceManifestName="VotingWebPkg" ServiceManifestVersion="2.0.0"/> </ServiceManifestImport> <ServiceManifestImport> <ServiceManifestRef ServiceManifestName="VotingDataServicePkg" ServiceManifestVersion="1.0.0"/> </ServiceManifestImport> <DefaultServices> <Service Name="VotingWeb"> <StatelessService InstanceCount="1" ServiceTypeName="VotingWebType"> <SingletonPartition/> </StatelessService> </Service> <Service Name="VotingDataService"> <StatefulService MinReplicaSetSize="3" ServiceTypeName="VotingDataServiceType" TargetReplicaSetSize="3"> <UniformInt64Partition HighKey="9223372036854775807" LowKey="-9223372036854775808" PartitionCount="1"/> </StatefulService> </Service> </DefaultServices> </ApplicationManifest>
Uppdatera fältet Version i ServiceManifest och fältet Version i taggen CodePackage i filen Voting/VotingApplication/VotingWebPkg/ServiceManifest.xml till 2.0.0.
<CodePackage Name="Code" Version="2.0.0"> <EntryPoint> <ExeHost> <Program>entryPoint.sh</Program> </ExeHost> </EntryPoint> </CodePackage>
Skicka dina nya ändringar till GitHub-databasen för att initiera ett Jenkins-jobb som utför en uppgradering av programmet.
I Service Fabric Explorer klickar du på listrutan Program. Om du vill visa status för uppgraderingen klickar du på fliken Pågående uppgraderingar.
Om du kommer åt http://< Host-IP>:8080 är röstningsprogrammet med fullständig funktionalitet nu igång.
Nästa steg
I den här självstudiekursen lärde du dig att:
- Distribuerar Service Fabric Jenkins-containern på din dator
- Konfigurerar Jenkins-miljön för distribution till Service Fabric
- Uppgraderar tillämpningen
- Se andra Java-exempel