我的Jenkins笔记

  1. 持续集成

    自动化编译,测试,部署。即代码提交后,后续部署一键完成。

    开发人员提交代码到代码仓库(github,gitlab)后,通知持续集成服务器,持续集成服务器去自动拉取更新的代码,编译,打包,部署,再传给测试服务或者生产服务。实现自动化的过程。

  2. Jenkins的安装,docker方式(在添加JDK,MAVEN时可能会出问题)

    1. 下载镜像,

      docker pull jenkins/jenkins
      
    2. 自定义jenkins配置的目录,

      mkdir -p /var/jenkins_mount
      chmod 777 /var/jenkins_mount
      
    3. 启动容器

      docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins
      
    4. 查看是否启动成功,看端口号是否存在,不存在则失败

      docker ps -l
      
    5. 镜像加速

      cd /var/jenkins_mount/
      vi  hudson.model.UpdateCenter.xml
      

      内容 修改为

      https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
      
    6. 访问,IP:10240 即可

    7. 密码的获取

      cat /var/jenkins_mount/secrets/initialAdminPassword
      
  3. jenkins安装,yum方式

    1. 安装JDK yum -y install java-1.8.0-openjdk-devel

    2. yum的repos中默认是没有Jenkins的,需要先将Jenkins存储库添加到yum repos。

      sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
      sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
      
    3. yum安装Jenkins

      yum install jenkins
      
    4. 启动

      sudo service jenkins start
      
  4. 装配MAVEN

    1. 下载压缩包

    2. 发送在/usr/local下

    3. 进入目录

      cd /usr/local
      
    4. 解压

      tar -zxvf apache-maven-3.5.4-bin.tar.gz
      
    5. 配置环境变量/etc/profile

      最后追加两行

      export MAVEN_HOME=/usr/local/apache-maven-3.5.4
      export PATH=$MAVEN_HOME/bin:$PATH 
      
    6. 刷新

      source /etc/profile
      
    7. check

      mvn -v 
      
  5. git安装

    yum -y install git
    

    路径在/usr/libexec/git-core下

  6. 将jar包打入image并启动的shell

project=DervousJar.jar
pathName=MyMission2
echo "拷贝文件"
rm -rf /usr/local/src/app/$project
sudo cp  /var/lib/jenkins/workspace/$pathName/target/$project /usr/local/src/app/$pathName/$project
echo "切换路径"
cd /usr/local/src/app/$pathName/
 
pid=`ps -ef | grep $dir$project | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
   echo "杀死存在进程"
fi
BUILD_ID=dontKillMe 
#echo "执行"
#nohup java -jar $project
echo "执行build"
nohup docker build -t myproject2 .
echo "执行login"
nohup docker login 10.3.80.90 -u admin -p cyg@123
echo "执行tag"
nohup docker tag myproject2 10.3.80.90/prs3000/dervousimagethird
echo "执行push"
nohup docker push 10.3.80.90/prs3000/dervousimagethird
{	
	nohup docker stop myproject2 &&\
	echo "执行stop" &&\
	nohup docker rm myproject2 &&\
	echo "执行rm"
}||{
	echo "不用执行stop和rm捏O(∩_∩)O"
}
echo "run一手"
nohup docker run --name myproject2 -d -p 8088:8080 myproject2
echo "成功!"

shell脚本实现try catch,shell脚本实际上最根本的东西就是true和false,每条指令都会返回执行成功或失败,如果失败的结果返回给最高层,shell脚本会执行失败,但如果用{包住}||true,那么返给最高级的永远是true,当然也可以把true替换为永远不可能报错的输出语句echo,来返回true。
但有一点,在{}中,当上一条一句执行失败后如果又下一条会继续执行下一条,如上面代码,nohup如果报错会继续执行echo,然后返回true,后面的{}中的内容将不会被执行。
  1. 钩子,想要在代码提交后自动构建而不是手动点击,需要配置钩子

    jenkins端

    在这里插入图片描述

    http://119.23.44.107:8080/job/MyMission/build?token=Dervous
    http://jenkins的IP和端口/job/自己创的任务名/build?token=自己填的令牌
    

    git端 settings->webhook->add

    在这里插入图片描述

    ​ 将URL填进去即可。

    ​ 实际上就是GIT在收到代码的push后调用jenkins的接口,jenkins就回去执行构建,把手动点击构建变成了GIT帮用户点击。

  2. 实际上,高版本的jenkins的配置文件不再是/etc/sysconfig/jenkins了,虽然他还存在,不过并无暖用

    而是/usr/lib/systemd/system/jenkins.service

    修改配置后需要

    systemctl daemon-reload
    

    以刷新配置

    再重启

    service jenkins restart
    

    查看是否修改成了root用户和端口9095

    ps -ef | grep jenkins
    

    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  1. GIT 钩子不生效问题,跨站请求伪造保护任然打开

    关闭即可,但是高版本的jenkins无法在可视化页面关闭。

    配置文件中

    Environment="JAVA_OPTS=-Djava.awt.headless=true"
    改为
    Environment="JAVA_OPTS=-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"
    

    reload然后重启即可

    在这里插入图片描述

    如此便关闭了。

    然而还是不行。

    在这里插入图片描述

    此时是没有验证。在jenkins中安装插件Build Authorization Token Root。

    然后将GITEE的webhook 的URL改为

    http://119.23.44.107:9095/buildByToken/build?job=MyMission&token=Dervous
    http://Jenkins的IP和端口/buildByToken/build?job=[jenkens的任务名字]&token=[任务自己设置的TOKEN]
    

    在这里插入图片描述

    1. GITLAB的安装(基于docker)

      1. 查看哪些可用

        docker search gitlab
        
      2. PULL下来一个中文社区版

        docker pull twang2218/gitlab-ce-zh
        
      3. 启动

        docker run -d -p 8443:443 -p 8095:80 -p 8022:22 --restart always --name gitlab -v /usr/local/gitla
        b/etc:/etc/gitlab -v /usr/local/gitlab/log:/var/log/gitlab -v /usr/local/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh
        

        倘若第二次或以上重复安装gitlab,在run的时候,3个容器卷的地址必须要改,不然无权限访问,会导致容器反复重启。随便新建三个文件夹即可。

      4. 进入容器的系统

        docker exec -it gitlab bash
        
      5. 修改配置

        cd /etc/gitlab
        vim gitlab.rb
        

        随意空的一排加上

        external_url 'http://10.3.30.240'					
        gitlab_rails['gitlab_ssh_host'] = '10.3.30.240'
        gitlab_rails['gitlab_shell_ssh_port'] = 8022
        
        # 是否启用
        gitlab_rails['smtp_enable'] = true
        # SMTP服务的地址
        gitlab_rails['smtp_address'] = "smtp.qq.com"
        # 端口
        gitlab_rails['smtp_port'] = 465
        # 你的QQ邮箱(发送账号)
        gitlab_rails['smtp_user_name'] = "1014155959@qq.com"
        # 授权码
        gitlab_rails['smtp_password'] = "********"
        # 域名
        gitlab_rails['smtp_domain'] = "smtp.qq.com"
        # 登录验证
        gitlab_rails['smtp_authentication'] = "login"
        
        # 使用了465端口,就需要配置下面三项
        gitlab_rails['smtp_enable_starttls_auto'] = true
        gitlab_rails['smtp_tls'] = true
        gitlab_rails['smtp_openssl_verify_mode'] = 'none'
        
        # 你的QQ邮箱(发送账号)
        gitlab_rails['gitlab_email_from'] = '1014155959@qq.com'
        
      6. 重新加载配置文件

        gitlab-ctl reconfigure
        
      7. 修改端口

        cd /opt/gitlab/embedded/service/gitlab-rails/config
        vim gitlab.yml
        

        port修改为上述run的时候的8095

      8. 重启

        gitlab-ctl restart
        
      9. 退出

        exit
        
      10. 浏览器访问 IP+8095即可

      11. 高版本的GITLAB roo用户的密码在容器中的系统的

        cat /etc/gitlab/initial_root_password
        

        位置下

        中文社区版的直接设置密码。

      12. Webhook

        中文社区版的钩子在

        在这里插入图片描述

        须登录root用户,否则没有扳手按钮。

        如果勾选多个,可能会同时触发多次请求,导致多次部署。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值