Share via


Zelfstudie: Een Jenkins-omgeving configureren om CI/CD in te schakelen voor een Java-toepassing voor Service Fabric

Deze zelfstudie is deel vijf van een serie. De zelfstudie laat zien hoe u Jenkins moet gebruiken voor het implementeren van upgrades voor uw toepassing. In deze zelfstudie wordt de Service Fabric Jenkins-invoegtoepassing gebruikt in combinatie met een GitHub-opslagplaats die als host fungeert voor de stemtoepassing, voor het implementeren van de toepassing naar een cluster.

In deel vijf van de serie leert u het volgende:

  • Service Fabric Jenkins-container implementeren op uw machine
  • Jenkins-omgeving voor implementatie naar Service Fabric instellen
  • Uw toepassing upgraden

In deze zelfstudiereeks leert u het volgende:

Vereisten

Haal de Service Fabric Jenkins container-installatiekopie op en implementeer deze

U kunt Jenkins instellen binnen of buiten een Service Fabric-cluster. De volgende instructies laten zien hoe dit buiten een cluster in te stellen met een opgegeven Docker-installatiekopie. Een vooraf geconfigureerde Jenkins build-omgeving kan echter ook worden gebruikt. De volgende afbeelding van de container is geïnstalleerd met de Service Fabric-invoegtoepassing en is onmiddellijk gereed voor gebruik met Service Fabric.

Notitie

In het volgende voorbeeld wordt een openbare containerinstallatiekopie opgehaald uit Docker Hub. U wordt aangeraden eerst te verifiëren met uw Docker Hub-account (docker login) in plaats van een anonieme pull-aanvraag te maken. Als u de betrouwbaarheid wilt verbeteren bij het gebruik van openbare inhoud, importeert en beheert u de installatiekopieën in een privé-Azure-containerregister. Meer informatie over het werken met openbare afbeeldingen.

  1. Haal de Service Fabric Jenkins container-installatiekopie op: docker pull rapatchi/jenkins:v10. Deze installatiekopie wordt geleverd met de Service Fabric Jenkins-invoegtoepassing die vooraf is geïnstalleerd.

  2. Voer de container-installatiekopie uit met de locatie waar uw Azure-certificaten zijn opgeslagen op uw gekoppelde lokale machine.

    docker run -itd -p 8080:8080 -v /service-fabric-java-quickstart/AzureCluster rapatchi/jenkins:v10
    
  3. Haal de id op van het exemplaar van de installatiekopie van de container. U kunt een lijst van alle Docker-containers bekijken met de opdracht docker ps –a

  4. Het wachtwoord van uw instantie van Jenkins ophalen met de volgende opdracht:

    docker exec [first-four-digits-of-container-ID] cat /var/jenkins_home/secrets/initialAdminPassword
    

    Als de container-id 2d24a73b5964 is, gebruikt u 2d24.

    • Dit wachtwoord is vereist om u via de portal (http://<HOST-IP>:8080) aan te melden bij het Jenkins-dashboard
    • Nadat u zich voor de eerste keer hebt aangemeld, kunt u uw eigen gebruikersaccount maken of het beheerdersaccount gebruiken.
  5. Stel GitHub in voor Jenkins door de stappen uit te voeren die genoemd zijn in Een nieuwe SSH-sleutel genereren en toevoegen aan de SSH-agent. Omdat de opdrachten worden uitgevoerd vanuit de Docker-container, volgt u de instructies voor de Linux-omgeving.

    • Gebruik de instructies van GitHub om de SSH-sleutel te genereren. Voeg vervolgens de SSH-sleutel aan het GitHub-account toe dat als host voor de opslagplaats fungeert.

    • Voer de opdrachten die in de vorige koppeling zijn genoemd, uit in de Jenkins Docker-shell (en niet op uw host).

    • Gebruik de volgende opdrachten om u vanaf uw host aan te melden bij de Jenkins-shell:

      docker exec -t -i [first-four-digits-of-container-ID] /bin/bash
      

      Zorg ervoor dat het cluster waarin of de computer waarop de installatiekopie van de Jenkins-container wordt gehost, een openbaar IP-adres heeft. Met een openbaar IP-adres kan de instantie van Jenkins meldingen ontvangen uit GitHub.

Een Jenkins-taak maken en configureren

  1. Als u geen opslagplaats hebt die u kunt gebruiken voor het hosten van het stemproject op GitHub, maakt u er eerst een. De opslagplaats wordt dev_test genoemd voor de rest van deze zelfstudie.

  2. Maak een nieuw item op uw Jenkins-dashboard op http://<HOST-IP>:8080,.

  3. Voer een itemnaam in (bijvoorbeeld MyJob). Selecteer free-style project en klik op OK.

  4. Ga naar de pagina van de taak en klik op Configure.

    a. Selecteer in het algemene gedeelte het selectievakje voor GitHub project en geef de URL van het GitHub-project. Dit is de URL waarop de Service Fabric Java-toepassing wordt gehost die u wilt integreren met de CI-/CD-stroom van Jenkins (Continue integratie, Continue implementatie), bijvoorbeeld https://github.com/testaccount/dev_test.

    b. Selecteer onder de sectie Broncodebeheer de optie Git. Geef de opslagplaats-URL op waarop de Service Fabric Java-toepassing wordt gehost die u wilt integreren met de CI-/CD-stroom van Jenkins, (bijvoorbeeld https://github.com/testaccount/dev_test.git). U kunt hier ook opgeven welke vertakking u wilt maken, bijvoorbeeld /master.

  5. Configureer uw GitHub (waar de opslagplaats wordt gehost), zodat deze kan communiceren met Jenkins. Voer de volgende stappen uit:

    a. Ga naar de pagina van de GitHub-opslagplaats. Ga naar Instellingen>Integraties en services.

    b. Selecteer Add Service, typ Jenkins en selecteer de Jenkins-GitHub-invoegtoepassing.

    c. Geef de Jenkins-webhook-URL op (standaard is dit http://<PublicIPorFQDN>:8081/github-webhook/). Klik op add/update service.

    d. Er wordt een testgebeurtenis verzonden naar uw Jenkins-exemplaar. Er komt een groen vinkje bij de webhook te staan in GitHub en uw project wordt gemaakt.

    Service Fabric Jenkins-configuratie

  6. Selecteer in de sectie Build Triggers de gewenste buildoptie. Voor dit voorbeeld wilt u een build activeren telkens wanneer er een push naar de opslagplaats plaatsvindt. Selecteer daarom de optie GitHub hook trigger for GITScm polling.

  7. Ga naar de sectie Build en selecteer in de vervolgkeuzelijst Add build step de optie Invoke Gradle Script. Geef in de volgende widget het pad op naar het hoofdscript van uw toepassing. Het haalt build.gradle op uit het opgegeven pad en werkt dienovereenkomstig.

    Service Fabric Jenkins Build-actie

  8. Selecteer in de vervolgkeuzelijst Post-Build Actions de optie Post-Build Actions. Hier moet u clustergegevens opgeven, zoals waar de via Jenkins gecompileerde Service Fabric-toepassing wordt geïmplementeerd. Het pad naar het certificaat is waar het volume is gekoppeld (/tmp/myCerts).

    U kunt ook aanvullende toepassingsgegevens opgeven. Deze worden gebruikt om de toepassing te implementeren. Bekijk de volgende schermafbeelding voor een voorbeeld van de details van de toepassing:

    Dialoogvenster acties na compileren met aanvullende opties voor Service Fabric-projectimplementatie

    Notitie

    Het cluster dat u hier gebruikt, moet het cluster zijn waarin de Jenkins-containertoepassing wordt gehost als u Service Fabric gebruikt om de installatiekopie van de Jenkins-containerinstallatiekopie te implementeren.

  9. Klik op Opslaan.

De bestaande toepassing bijwerken

  1. Werk de titel bij van de HTML-code in het bestand VotingApplication/VotingWebPkg/Code/wwwroot/index.html met Service Fabric Voting Sample 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>
    
  2. Update de versie ApplicationTypeVersion en ServiceManifestVersion naar 2.0.0 in het bestand 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>
    
  3. Update het Versie-veld in het ServiceManifest en het Versie-veld in de CodePackage-code in het bestand Voting/VotingApplication/VotingWebPkg/ServiceManifest.xml naar 2.0.0.

    <CodePackage Name="Code" Version="2.0.0">
    <EntryPoint>
        <ExeHost>
        <Program>entryPoint.sh</Program>
        </ExeHost>
    </EntryPoint>
    </CodePackage>
    
  4. Voor het initialiseren van een Jenkins-taak die een upgrade van de toepassing uitvoert, moet u uw nieuwe wijzigingen naar uw GitHub-opslagplaats forceren.

  5. Klik in Service Fabric Explorer op de vervolgkeuzelijst Toepassingen. Klik op het tabblad Upgrades in uitvoering om de status van de upgrade te zien.

    Upgrade wordt uitgevoerd

  6. Als u toegang krijgt tot http://< Host-IP>:8080 , is de stemtoepassing met volledige functionaliteit nu actief.

    Lokale stem-app

Volgende stappen

In deze zelfstudie heeft u het volgende geleerd:

  • Service Fabric Jenkins-container implementeren op uw machine
  • Jenkins-omgeving voor implementatie naar Service Fabric instellen
  • Uw toepassing upgraden