Jenkins 2.328配置连接Harbor 2.4认证与推送镜像

需积分: 5 1 下载量 25 浏览量 更新于2024-08-03 收藏 1.32MB DOCX 举报
"本文主要介绍了如何配置Jenkins 2.328以连接并认证Harbor 2.4仓库,特别是在Jenkinsfile中设置连接Harbor的步骤。首先,搭建了具有用户认证功能的Harbor 2.4.2私有仓库,并创建了一个项目。然后,介绍了安装Jenkins 2.328并设置管理员账户。接着,重点讲解了如何在Jenkins中创建Pipeline任务,以便将构建的Docker镜像推送到Harbor仓库。具体步骤包括在Jenkins中添加凭据、使用Jenkinsfile语法处理认证以及配置Docker守护进程以允许连接不安全的注册表。" 在Jenkins中配置连接Harbor的认证涉及以下几个关键点: 1. 添加凭据:首先,登录Jenkins系统管理界面,选择“凭据”选项,创建一个新的凭据条目。这里,ID设为'dockerHub',并输入Harbor仓库的用户名和密码。这将自动生成一个用于后续步骤的凭据ID。 2. Jenkinsfile中的认证配置:在Jenkinsfile中,使用`withCredentials`步骤来处理认证。这个步骤会获取之前创建的凭据,并将其赋值给自定义变量,例如,将用户名保存在`username`变量中,密码保存在`password`变量中。示例代码如下: ```groovy withCredentials([usernamePassword(credentialsId: 'dockerHub', passwordVariable: 'password', usernameVariable: 'username')]) { // 在这里执行与Harbor交互的命令 } ``` 3. 配置Docker守护进程:为了使Jenkins能够连接到Harbor,需要在Docker守护进程的配置文件(通常是`/etc/docker/daemon.json`)中添加Harbor仓库的地址到`insecure-registries`列表。例如: ```json { "graph": "/data/docker", "insecure-registries": ["https://192.168.39.133", "https://reg.shi.com"] } ``` 修改后,需要重新加载守护进程配置并重启Docker服务。 4. Jenkins Pipeline脚本:在Jenkinsfile中,使用Docker插件和上述认证信息,编写推送镜像到Harbor的脚本。这通常包括构建Docker镜像,登录Harbor,然后推送到指定仓库。例如: ```groovy stage('Build and Push Image') { sh 'docker build -t my-image .' sh "docker login -u $username -p $password https://192.168.39.133" sh 'docker push my-image' } ``` 通过以上步骤,Jenkins就能够成功地连接到Harbor仓库,进行Docker镜像的构建和推送操作。这个过程对于持续集成/持续部署(CI/CD)流程至关重要,因为它确保了自动化构建和部署的安全性和可靠性。

Running in Durability level: MAX_SURVIVABILITY [2023-06-02 14:07:25] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: [2023-06-02 14:07:25] WorkflowScript: 26: No steps specified for branch @ line 26, column 13. [2023-06-02 14:07:25] steps { [2023-06-02 14:07:25] ^ [2023-06-02 14:07:25] [2023-06-02 14:07:25] 1 error [2023-06-02 14:07:25] [2023-06-02 14:07:25] at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310) [2023-06-02 14:07:25] at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085) [2023-06-02 14:07:25] at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603) [2023-06-02 14:07:25] at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581) [2023-06-02 14:07:25] at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558) [2023-06-02 14:07:25] at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298) [2023-06-02 14:07:25] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) [2023-06-02 14:07:25] at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688) [2023-06-02 14:07:25] at groovy.lang.GroovyShell.parse(GroovyShell.java:700) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:571) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:523) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:327) [2023-06-02 14:07:25] at hudson.model.ResourceController.execute(ResourceController.java:100) [2023-06-02 14:07:25] at hudson.model.Executor.run(Executor.java:433) [2023-06-02 14:07:25] Finished: FAILURE

2023-06-03 上传

<builders> <org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder plugin="conditional-buildstep@1.4.2"> <condition class="org.jenkins_ci.plugins.run_condition.contributed.ShellCondition" plugin="run-condition@1.5"> <command>if git show --summary HEAD | grep -q -E "\(cherry picked from commit \b[0-9a-f]{5,40}\b\)"; then exit 1 fi</command> </condition> <buildStep class="hudson.tasks.Shell"> <command>./scripts/checkpatch.pl --min-conf-desc-length=1 --ignore GERRIT_CHANGE_ID -g HEAD </command> <configuredLocalRules/> </buildStep> <runner class="org.jenkins_ci.plugins.run_condition.BuildStepRunner$Run" plugin="run-condition@1.5"/> </org.jenkinsci.plugins.conditionalbuildstep.singlestep.SingleConditionalBuilder> <hudson.tasks.Shell> <command>NCPU=$(expr $(nproc --all ) / 2) make O=build-${BUILD_ID} -s defconfig make O=build-${BUILD_ID} -j$NCPU -s Image make O=build-${BUILD_ID} -j$NCPU -s modules make O=build-${BUILD_ID} INSTALL_MOD_PATH=../install-${BUILD_ID} -s modules_install mkdir -p install-${BUILD_ID}/boot/ KERNELVER=$(cat build-${BUILD_ID}/include/config/kernel.release 2> /dev/null) cat build-${BUILD_ID}/arch/arm64/boot/Image > install-${BUILD_ID}/boot/Image-$KERNELVER cp build-${BUILD_ID}/System.map install-${BUILD_ID}/boot/System.map-$KERNELVER cp build-${BUILD_ID}/.config install-${BUILD_ID}/boot/config-$KERNELVER tar -cJf install-${BUILD_ID}/linux-$KERNELVER.tar.xz -C install-${BUILD_ID}/ boot lib</command> <configuredLocalRules/> </hudson.tasks.Shell> <hudson.tasks.Shell> <command>cd $HOME/src/linux git fetch -p -t git pull </command> <configuredLocalRules/> </hudson.tasks.Shell> </builders> 这是一段Jenkins job的定义,请把它转成对应的JJB的yaml格式配置文件

2023-07-15 上传