Oktatóanyag: Üzembe helyezés Linux rendszerű virtuális gépen a Jenkins és az Azure DevOps Services használatával

Folyamatos integráció (CI) és a folyamatos üzembe helyezés (CD) egy folyamatból, amellyel építheti, kiadhatja és üzembe helyezheti a kódot. Az Azure DevOps Services teljes funkcionalitású CI-/CD-automatizálási eszközöket biztosít az Azure-ban történő üzembe helyezéshez. A Jenkins egy olyan népszerű, harmadik féltől származó CI/CD szolgáltatást nyújtó, kiszolgálóalapú eszköz, amely CI/CD-automatizálást is biztosít. Az Azure DevOps Services és a Jenkins együttes használatával testre szabhatja, hogyan kézbesíti felhőalapú alkalmazását vagy szolgáltatását.

Ebben az oktatóanyagban a Jenkinst fogja használni Node.js-alapú webalkalmazás építésére. Ezután az Azure DevOps használatával üzembe helyezi azt

egy Linux rendszerű virtuális gépeket tartalmazó üzembehelyezési csoportban. Az alábbiak végrehajtásának módját ismerheti meg:

  • Mintaalkalmazás letöltése.
  • A Jenkins bővítményeinek konfigurálása.
  • Jenkins Freestyle projekt konfigurálása a Node.js-hez.
  • A Jenkins konfigurálása az Azure DevOps Services-el való integrációhoz.
  • Jenkins szolgáltatási végpont létrehozása.
  • Üzembe helyezési csoport létrehozása az Azure virtuális gépekhez.
  • Hozzon létre egy Azure Pipelines kiadási folyamatot.
  • Manuális és CI által kiváltott üzembe helyezések végrehajtása.

Előfeltételek

Mintaalkalmazás letöltése

A telepítéshez szükséges egy Git-adattárban lévő alkalmazás. A jelen oktatóanyag esetében azt javasoljuk, hogy ezt a mintaalkalmazást használja, amely a Githubon érhető el. Ez az oktatóanyag tartalmaz egy szkriptet, amelyet a Node.js és egy alkalmazás telepítésére fog használni. Ha szeretne a saját adattárával dolgozni, konfigurálnia kell egy hasonló mintát.

Hozzon létre egy adattármásolatot az alkalmazáshoz, és jegyezze le a helyet (URL-címet) az oktatóanyag későbbi lépéseiben való felhasználáshoz. További információkat a Fork a repo (Adattármásolat készítése) témakörben talál.

Megjegyzés:

Az alkalmazás a Yeoman használatával lett létrehozva. Express-t bowert és gruntot használ. És rendelkezik néhány npm-csomaggal függőségként. A minta egy szkriptet is tartalmaz, amely beállítja az Nginx kiszolgálót, és üzembe helyezi az alkalmazást. A végrehajtása a virtuális gépeken történik. Pontosabban a szkript az alábbi műveleteket végzi:

  1. Telepíti a Node-ot, az Nginx kiszolgálót és a PM2-t.
  2. Konfigurálja az Nginx kiszolgálót és a PM2-t.
  3. Elindítja a Node alkalmazást.

A Jenkins beépülő moduljainak konfigurálása

Először két Jenkins beépülő modult kell konfigurálnia: NodeJS és VS Team Services Continuous Deployment.

  1. Nyissa meg a Jenkins-fiókját, és válassza a Manage Jenkins (Jenkins kezelése) lehetőséget.
  2. A Manage Jenkins (Jenkins kezelése) oldalon válassza a Manage Plugins (Beépülő modulok kezelése) lehetőséget.
  3. A lista szűrésével keresse meg a NodeJS beépülő modult, majd válassza az Install without restart (Telepítés újraindítás nélkül) lehetőséget. Adding the NodeJS plug-in to Jenkins
  4. A lista szűrésével keresse meg a VS Team Services Continuous Deployment beépülő modult, és válassza az Install without restart (Telepítés újraindítás nélkül) lehetőséget.
  5. Lépjen vissza a Jenkins irányítópultjára, és válassza a Manage Jenkins (Jenkins kezelése) lehetőséget.
  6. Válassza a Global Tool Configuration (Globális eszköz konfigurációja) lehetőséget. Keresse meg a NodeJS elemet, és válassza a NodeJS installations (NodeJS-telepítések) lehetőséget.
  7. Válassza az Install automatically (Automatikus telepítés) lehetőséget, majd adja meg a Name (Név) értékét.
  8. Válassza a Mentés parancsot.

Jenkins Freestyle projekt konfigurálása a Node.js-hez

  1. Válassza a New Item (Új elem) lehetőséget. Adja meg az elem nevét.
  2. Válassza a Freestyle project lehetőséget. Kattintson az OK gombra.
  3. A Source Code Management (Forráskód kezelése) lapon válassza a Git lehetőséget, és adja meg annak az adattárnak és elágazásnak az adatait, amely az alkalmazás forráskódját tartalmazza.
    Add a repo to your build
  4. Válassza a Build Triggers (Build-aktiválók) lapon a Poll SCM lehetőséget, és adja meg a H/03 * * * * ütemtervet a Git-adattár változásainak három percenként történő ciklikus lekérdezéshez.
  5. A Build Environment lapon válassza a Node &npm bin/ folder PATH lehetőséget, és válassza a NodeJS telepítési értékét. Hagyja meg az npmrc-fájl beállításaként a use system default (rendszer alapértelmezett beállításainak használata) értéket.
  6. A Build lapon válassza az Execute shell (Végrehajtási felület) lehetőséget, és adja meg az npm install parancsot, hogy minden függőség frissítése megtörténjen.

A Jenkins konfigurálása az Azure DevOps Services-el való integrációhoz.

Megjegyzés:

Ellenőrizze, hogy a következő lépésben használt személyes hozzáférési jogkivonat (PAT) tartalmazza-e a Kiadási (olvasási, írási, végrehajtási és kezelései) engedélyeket az Azure DevOps Services-ben.

  1. Hozzon létre egy PAT-et az Azure DevOps Services-szervezetben, ha még nem rendelkezik ilyennel. A Jenkinsnek szüksége van erre az információra az Azure DevOps Services-szervezet eléréséhez. Ne feledje tárolni a jogkivonatadatokat a szakaszban következő lépésekhez.

    A jogkivonat létrehozásához olvassa el a How do I create a personal access token for Azure DevOps Services? (Hogyan hozhatok létre személyes hozzáférési jogkivonatot az Azure DevOps Services-hez?) oldalt.

  2. A Post-build Actions (Felépítés utáni műveletek) lapon válasza az Add post-build action (Felépítés utáni művelet hozzáadása) lehetőséget. Válassza az Archive the artifacts (Összetevők archiválása) lehetőséget.

  3. A Files to archive (Archiválandó fájlok) beállításához adja meg a **/* értéket az összes fájl belefoglalásához.

  4. Egy másik művelet létrehozásához válassza az Add post-build action (Felépítés utáni művelet hozzáadása) lehetőséget.

  5. Válassza a Trigger release in TFS/Team Services (Kiadás aktiválása a TFS/Team Services-ben) lehetőséget. Adja meg az Azure DevOps Services-szervezet URI-ját, például a https://{saját-szervezet-neve}.visualstudio.com címet.

  6. Adja meg a projekt nevét.

  7. Adjon nevet a kiadási folyamatnak. (Ezt a kiadási folyamatot később fogja létrehozni az Azure DevOps Services-ben.)

  8. Hitelesítő adatok kiválasztása az Azure DevOps Serviceshez vagy az Azure DevOps Server-környezethez való csatlakozáshoz:

    • Hagyja a Username (Felhasználónév) mezőt üresen, ha az Azure DevOps Services-t használja.
    • Adjon meg egy felhasználónevet és jelszót, ha az Azure DevOps Server helyszíni verzióját használja.
      Configuring Jenkins post-build actions
  9. Mentse a Jenkins-projektet.

Jenkins szolgáltatási végpont létrehozása

A szolgáltatási végpont lehetővé teszi, hogy az Azure DevOps Services csatlakozzon a Jenkinshez.

  1. Nyissa meg a Services (Szolgáltatások) lapot az Azure DevOps Services-ben, nyissa meg a New Service Endpoint (Új szolgáltatási végpont) listát, és válassza a Jenkins lehetőséget. Add a Jenkins endpoint
  2. Adja meg a kapcsolat nevét.
  3. Adja meg a Jenkins-kiszolgáló URL-címét, majd válassza ki a Nem megbízható SSL-tanúsítványok elfogadása lehetőséget. Példa URL-címre: http://{YourJenkinsURL}.westcentralus.cloudapp.azure.com.
  4. Adja meg a Jenkins-fiók felhasználónevét és jelszavát.
  5. Válassza a Kapcsolat ellenőrzése lehetőséget az adatok helyességének ellenőrzéséhez.
  6. Kattintson az OK gombra a szolgáltatásvégpont létrehozásához.

Üzembe helyezési csoport létrehozása Azure virtuális gépekhez

Szüksége van egy üzembe helyezési csoportra az Azure DevOps Services-ügynök regisztrálásához, hogy a kiadási folyamatot üzembe lehessen helyezni a virtuális gépen. Az üzembe helyezési csoportok megkönnyítik a célgépek logikai csoportjainak megadását az üzembe helyezéshez és a kívánt ügynök egyes gépeken történő telepítéséhez.

Megjegyzés:

A következő eljárásban nem mulassza el az előfeltételek telepítését, és ne futtassa a szkriptet sudo engedélyekkel.

  1. Nyissa meg a Build &Release Hub Kiadás lapját, nyissa meg az Üzembe helyezési csoportokat, és válassza az + Új lehetőséget.
  2. Adjon meg egy nevet a központi telepítési csoporthoz, és egy opcionális leírást. Válassza a Létrehozás parancsot.
  3. Válassza ki az üzembe helyezési cél virtuális gépének operációs rendszerét. Válassza például az Ubuntu 16.04+ lehetőséget.
  4. Válassza ki a Use a personal access token in the script for authentication (Személyes hozzáférési jogkivonat használata a szkriptben a hitelesítéséhez) elemet.
  5. Válassza a System prerequisites (Rendszer előfeltételei) hivatkozást. Telepítse az előfeltételeket az operációs rendszeréhez.
  6. Válassza a Copy script to clipboard (Szkript másolása a vágólapra) elemet a szkript másolásához.
  7. Jelentkezzen be az üzembe helyezési cél virtuális gépére, és futtassa a szkriptet. Ne futtassa a szkriptet a sudo engedélyekkel.
  8. A telepítés után a rendszer kéri az üzembe helyezési csoport címkéit. Fogadja el az alapértelmezett beállításokat.
  9. Az Azure DevOps Services-ben ellenőrizze az újonnan regisztrált virtuális gépet a Targets (Célok) szakaszban a Deployment Groups (Üzembehelyezési csoportok) alatt.

Azure Pipelines kiadási folyamat létrehozása

A kiadási folyamat azt a folyamatot határozza meg, amelyet az Azure Pipelines az alkalmazás üzembe helyezésére használ. Ebben a példában egy felületszkriptet fog végrehajtani.

Kiadási folyamat létrehozása az Azure Pipelinesban:

  1. Nyissa meg a Build & Release Hub Kiadás lapját, és válassza a Kiadási folyamat létrehozása lehetőséget.
  2. Válassza ki az Empty (Üres) sablont, hogy egy Empty process (Üres folyamat) legyen a kezdési folyamat.
  3. Az Artifacts (Összetevők) szakaszban jelölje ki a + Add Artifact (+ Összetevő hozzáadása) lehetőséget, és válassza a Jenkins elemet, mint Source type (Erőforrástípus). Válassza ki a Jenkins szolgáltatási végpont kapcsolatát. Ezután jelölje ki a Jenkins-forrásfeladatot, és válassza az Add (Hozzáadás) lehetőséget.
  4. Válassza a három pontot az Environment 1 (1. környezet) mellett. Válassza az Add deployment group phase (Üzembe helyezési csoport fázisának hozzáadása) lehetőséget.
  5. Válassza ki az üzembe helyezési csoportot.
  6. Válassza a + lehetőséget egy feladat Üzembe helyezési csoport fázishoz adásához.
  7. Válassza a Shell Script (Felületszkript) feladatot, majd az Add (Hozzáadás) elemet. A Shell Script (Felületszkript) feladat biztosítja az egyes kiszolgálókon való futtatáshoz a szkript konfigurációját a Node.js telepítéséhez és az alkalmazás elindításához.
  8. A Script Path (Szkript elérési útja) mezőben adja meg a $(System.DefaultWorkingDirectory)/Fabrikam-Node/deployscript.sh útvonalat.
  9. Válassza az Advanced (Speciális) elemet, majd engedélyezze a Specify Working Directory (Munkakönyvtár megadása) lehetőséget.
  10. A Working Directory (Munkakönyvtár) mezőben adja meg a $(System.DefaultWorkingDirectory)/Fabrikam-Node útvonalat.
  11. A kiadási folyamat neveként adja meg a buildhez a Jenkinsben a Post-build Actions (Felépítés utáni műveletek) lapon meghatározott nevet. A Jenkinsnek erre a névre lesz szüksége új kiadás aktiválásához a forrásösszetevők frissítésekor.
  12. Válassza a Save (Mentés), majd az OK gombot a kiadási folyamat mentéséhez.

Manuális és CI által kiváltott üzembe helyezések végrehajtása

  1. Válassza a + Release (+ Kiadás) elemet, majd a Create Release (Kiadás létrehozása) lehetőséget.
  2. A kiemelt legördülő listában válassza ki a befejezett buildet, majd válassza a Queue (Várólista) lehetőséget.
  3. Kattintson az előugró üzenetben a kiadási hivatkozásra. Például erre: „Release Release-1 has been created.”
  4. Nyissa meg a Logs (Naplók) lapot a kiadási konzol kimenetének megtekintéséhez.
  5. A böngészőben nyissa meg az üzembe helyezési csoporthoz hozzáadott egyik kiszolgáló URL-címét. Adja meg például a http://{your-server-ip-address} címet.
  6. Lépjen a Git-adattárba, és módosítsa a h1 fejléc tartalmát az app/views/index.jade fájlban egy módosított szövegre.
  7. Véglegesítse a módosításokat.
  8. Néhány perc elteltével megjelenik a létrehozott új kiadás az Azure DevOps Releases (Kiadások) lapján. Nyissa meg a kiadást az üzembe helyezési folyamat megtekintéséhez. Gratulálunk!

A Jenkins beépülő modul hibaelhárítása

Ha hibát tapasztal a Jenkins beépülő modulokkal kapcsolatban, küldjön egy hibát a Jenkins JIRA-ban az adott összetevőhöz.

További lépések

Ebben az oktatóanyagban automatizálta az alkalmazás Azure-ban történő üzembe helyezését a Jenkinst használva a buildhez, az Azure DevOps Services-t pedig a kiadáshoz. Megtanulta végrehajtani az alábbi műveleteket:

  • Alkalmazás létrehozása a Jenkinsben.
  • A Jenkins konfigurálása az Azure DevOps Services-el való integrációhoz.
  • Üzembe helyezési csoport létrehozása az Azure virtuális gépekhez.
  • Hozzon létre egy Azure Pipeline-t, amely konfigurálja a virtuális gépeket, és üzembe helyezi az alkalmazást.

Ha tudni szeretné, hogyan használhatja az Azure Pipelinest a buildelési és a kiadási lépésekhez, tekintse meg ezt a témakört.

Ha tudni szeretné, hogyan hozhat létre YAML-alapú CI/CD-folyamatot a virtuális gépeken való üzembe helyezéshez, folytassa a következő oktatóanyagban.