zoukankan      html  css  js  c++  java
  • Gitlab自动触发流水线

    Gitlab自动触发流水线

    我们希望版本管理工具和持续集成工具联动起来,如提交代码时,自动触发集成工具的进行代码监测,检测成功后集成工具再通知版本管理工具进行下一步操作。

    Jenkins会为当前代码库生成一个订阅地址,绑定到Gitlab。而Jenkins想调用Gitlab想调用Gitlab的API则需要其凭证信息。

    所以我们配置自动触发流水线最关键两步是把凭证添加到Jenkins上,再将订阅地址绑定到Gitlab上

    使用Gitlab Hook Plugin插件

    安装插件,【系统管理】->【插件管理】安装“Gitlab hook plugin”、“git plugin”。

    注意,此插件依赖ruby-runtime环境,如果使用最新版本Jenkins镜像,JDK版本过高会导致环境安装失败。可参考问题1偷换容器的JDK解决。

    初始化项目

    本地用vue-cli创建一个工程,添加Jenkinsfile。

    pipeline {
        agent any
        stages {
            stage("stage 1: Test auto exe pipline") {
                steps {
                    echo 'Test auto exe pipline'
                    sh 'echo ${BRANCH_NAME}'
                }
            }
        }
        post {
            always {
                echo 'This will always run'
                sh "env"
            }
            success {
                echo 'successful'
            }
            failure {
                echo 'failed'
            }
        }
    }
    
    

    gitlab创建空白项目(不要初始化任何文件,否则要同步代码),本地工程根目录执行以下命令提交到代码库。

    git remote add origin http://xxxxx.git
    git branch -M main
    git add .
    git commit -m 'init project.'
    git push -u origin main
    

    配置Gitlab凭据

    获取Gitlab凭证

    登陆了Gitlab,点击右上角用户图标,选择【偏好设置】,左侧会出现用户设置导航;点击【访问令牌】,按表单内容填写令牌内容。

    注意:令牌无法找回,记得保存。

    配置凭据

    打开Jenkins。

    【系统管理】->【Manage Credentials】->【Stores scoped to Jenkins】创建全局凭证,左侧导航有【添加凭据】字样,点击,类型选择“GitLab API token”。

    生成凭据后还要去全局配置里让凭据生效

    点击Testconnection 测试是否成功,按钮右端会出现“success”字样。

    创建流水线

    打开Blue Ocean,创建流水线

    填写相关信息

    流水线创建完毕。注意此处使用最简单的账号密码方式。

    配置订阅地址

    接下来是获取Jenkins订阅地址,再配置到Gitlab上。

    回到Jenkins的Dashboard界面,进入流水线内部。点击单条流水线。

    查看配置

    拷贝地址

    回到Gitlab,进入对应项目,点击左侧导航的怕【设置】->【webhook】

    配置网址即可。

    触发gitlab push事件。

    附录

    问题1:Failed to load: Gitlab Hook Plugin (1.4.2) --Plugin is missing: ruby-runtime (0.12)

    安装gitlab hook plugin报错。

    最开始我用的是jenkins/blueocean镜像,安装ruby-runtime时报一个window错,网上说安装路径带了中午或特殊字符,但我系统用的是Ubuntu,显然不是这个问题。

    后来删了容器,用jenkins/jenkins:lts和上次相同的参数创建容器,再次安装,报ruby-runtime: unsupported Java version: 11。我的Java11版本太高,要下载一个低版本JDK,替换掉容器里的JDK,装好ruby-runtime环境后再将原来JDK替换回去。

    博客原文:docker jenkins 容器ruby-runtime插件安装失败解决办法

    docker exec -it jenkins bash
    java -version # openjdk version "11.0.12" 2021-07-20
    whereis java # java: /opt/java/openjdk/bin/java
    

    下载jdk-8,替换

    #在主机上下载,openjdk8,再将其拷贝进容器内
    wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/8u262-b10/openlogic-openjdk-8u262-b10-linux-x64.tar.gz
    
    docker cp openlogic-openjdk-8u262-b10-linux-x64.tar.gz jenkins:/usr/local
    docker exec -it jenkins bash
    tar -xvf openlogic-openjdk-8u262-b10-linux-x64.tar.gz
    mv openlogic-openjdk-8u262-b10-linux-64/ jdk8
    whereis java
    mv /opt/java/openjdk/bin/java /opt/java/openjdk/bin/java.bak
    ln -s /usr/local/jdk8/bin/java /opt/java/openjdk/bin/java
    

    替换完成之后再把java11换回去

    rm -f /opt/java/openjdk/bin/java
    mv /opt/java/openjdk/bin/java.bak /opt/java/openjdk/bin/java
    
    敌人总是会在你最不想它出现的地方出现!
  • 相关阅读:
    shell编程基础
    centos7怎么查看、打开和关闭防火墙
    Linux下查看根目录各文件内存占用情况
    两台Linux系统之间传输文件的几种方法
    rabbitmq3.8版本默认用户guest访问报错User can only log in via localhost解决方案
    docker 部署java web应用_使用Docker部署JavaWeb项目
    ubuntu安装curl命令
    docker重新进入容器时“/etc/profile”中环境变量失效问题的解决
    在docker容器中安装软件,并重新生成镜像
    CentOS7安装RabbitMQ
  • 原文地址:https://www.cnblogs.com/longhx/p/15742352.html
Copyright © 2011-2022 走看看