בדף הזה מוסבר איך להגדיר את Jenkins לאחסון חבילות Maven שנוצרו במאגר של Artifact Registry.
לפני שמתחילים
אם מאגר היעד לא קיים, צריך ליצור מאגר חדש.
הגדרת גישה למאגר
יוצרים חשבון שירות ייעודי ל-Jenkins לשימוש עם Artifact Registry.
מריצים את הפקודה הבאה כדי ליצור חשבון שירות בשם
jenkins-sa:gcloud iam service-accounts create jenkins-saכך נוצר חשבון שירות בשם jenkins-sa@PROJECT.iam.gserviceaccount.com, כאשר PROJECT הוא מזהה הפרויקט.
בפרויקט שמכיל את המאגר, מעניקים את התפקיד Artifact Registry Writer לחשבון השירות של Jenkins שיצרתם. אפשר להעניק את התפקיד לכל המאגרים בפרויקט או להעניק אותו למאגרים הספציפיים שחשבון השירות צריך לגשת אליהם.
למידע נוסף על הרשאות ועל מתן גישה לפי תפקיד, אפשר לעיין במאמר בנושא הגדרת בקרת גישה.
הגדרת אשכול GKE
כשמגדירים אשכול חדש או מאגר צמתים חדש ב-Google Kubernetes Engine, צריך להשתמש בחשבון השירות שיצרתם לשימוש ב-Jenkins.
המסוף
כדי ליצור אשכול באמצעות מסוף Google Cloud :
נכנסים לתפריט Artifact Registry במסוף Google Cloud .
לוחצים על יצירת אשכול.
מגדירים את האשכול לפי הצורך. עדיין לא לוחצים על יצירה.
לוחצים על אפשרויות נוספות במאגר הצמתים שמוגדר כברירת מחדל.
בקטע Security בוחרים את חשבון השירות של Jenkins שיצרתם.
לוחצים על שמירה כדי לצאת מהתצוגה המקדימה.
לוחצים על יצירה.
gcloud
משתמשים באחת מהפקודות הבאות כדי ליצור את האשכול עם חשבון השירות של Jenkins. בפקודות, PROJECT הוא מזהה הפרויקט.
כדי ליצור אשכול עם חשבון השירות, מריצים את הפקודה.
gcloud container clusters create example-cluster --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com
כדי ליצור מאגר צמתים באשכול קיים:
gcloud container node-pools create example-pool --service-account=jenkins-sa@PROJECT.iam.gserviceaccount.com
פרטים על הפקודה מופיעים במאמר בנושא gcloud container clusters create.
הגדרת Jenkins ב-GKE
פועלים לפי המדריך להגדרת Jenkins ב-GKE. משתמשים באשכול שיצרתם בקטע הקודם.
ב-Jenkins, מעדכנים את התוסף GKE לגרסה האחרונה. לוחצים על Manage Jenkins > Manage Plugins > Updates.
הגדרת פרויקט Maven
יוצרים Fork של פרויקט Maven לדוגמה במאגר GitHub של מסמכי Jenkins.
משכפלים את המאגר המפוצל.
git clone git@github.com:USER_NAME/simple-java-maven-app.git
מגדירים צינור חדש בממשק של Jenkins.
- לוחצים על פריט חדש.
- בוחרים באפשרות Pipeline (צינור).
- מגדירים שם לצינור ומקליקים על אישור.
בכרטיסייה General, מגדירים את האפשרויות הבאות בקטע Pipeline:
- בוחרים באפשרות Pipeline script from SCM (סקריפט של צינור נתונים מ-SCM).
- ברשימה הנפתחת SCM, בוחרים באפשרות Git ומזינים את כתובת ה-URL ואת פרטי הכניסה כדי להתחבר למאגר ב-GitHub.
לוחצים על Save.
הגדרת החיבור למאגר
מגדירים את Jenkins עם המאגר ופרטי הכניסה כדי להתחבר למאגר.
מוסיפים את המאגר לקובץ
pom.xmlשל Maven. משתמשים בפקודה הבאה כדי להדפיס קטע קוד להוספה.gcloud artifacts print-settings mvn [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION]כאשר:
- PROJECT הוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל.
- REPOSITORY הוא המזהה של המאגר. אם הגדרתם מאגר ברירת מחדל של Artifact Registry, המערכת תשתמש בו אם לא תציינו את הדגל הזה בפקודה.
- LOCATION הוא המיקום האזורי או המיקום במספר אזורים של המאגר.
יוצרים קובץ YAML כתבנית של פוד לסוכני Jenkins.
mkdir jenkins cat > jenkins/maven-pod.yaml << EOF apiVersion: v1 kind: Pod spec: containers: - name: maven image: maven:3.3.9-jdk-8-alpine command: ['cat'] tty: true EOFמשנים את הקובץ
Jenkinsfile.pipeline { agent none stages { stage('Deploy') { steps { agent { kubernetes { label 'mavenpod' yamlFile 'jenkins/maven-pod.yaml' } } container('maven') { sh "mvn -B clean deploy" } } } } }
התחלת build
מעלים את השינויים שביצעתם לפרויקט ב-GitHub.
git add . && git commit -m "Configure my Jenkins pipeline" && git pushבממשק של Jenkins, מתחילים ליצור build חדש לאפליקציה בפרויקט לדוגמה של Maven.
בסיום ה-build, הארטיפקטים מתווספים למאגר חבילות Java ב-Artifact Registry שיצרתם.
מריצים את הפקודה הבאה כדי להציג את רשימת החבילות במאגר:
gcloud artifacts packages list --repository=mvn-jenkins --location=LOCATION
הפלט אמור להיראות כך:
Listing items under project {YOUR_PROJECT}, repository mvn-jenkins.
PACKAGE CREATE_TIME UPDATE_TIME
com.mycompany.app:my-app 2019-06-25T17:09:44 2019-06-25T17:09:44