美文网首页
CentOS7实践Jenkins

CentOS7实践Jenkins

作者: 老陕西 | 来源:发表于2019-12-03 22:04 被阅读0次

    持续集成(CI/CD)现在基本算是IT行业的基础能力,一般大企业,外企都有专业的IT团队负责建设DevOps流程,程序猿只需要Follow公司规范的流程提高效率就行,但是也不乏好多公司没有规范的流程,所以自己搭建DevOps流程便成为程序员的基本功。

    安装Jenkins rpm 包

    1. 如果网速可以直接通过命令安装
    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
    sudo yum install -y jenkins
    
    1. 如果网速不允许,可以提前下载Jenkins(最新版本为2.190.3)
      https://pkg.jenkins.io/redhat-stable/
      yum install ./jenkins-2.190.3-1.1.noarch.rpm -y

    安装JDK

    yum install java-1.8.0-openjdk.x86_64 -y

    配置Jenkins Java内存占用

    [root@centos8 cent]# grep JENKINS_JAVA_OPTION /etc/sysconfig/jenkins
    JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m"
    
    

    也可以通过容器直接启动Jenkins镜像

    https://www.jenkins.io/zh/doc/book/installing/

    docker run -u root --privileged --name jenkins -m 8g --restart=always -d -p 8080:8080 -p 50000:50000 -v /opt/jenkins_data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
    

    启动Jenkins

    systemctl enable jenkins
    systemctl start jenkins
    

    初始配置

    默认直接访问jenkins服务器8080端口就可以打开jenkins主页
    http://192.168.2.20:8080/

    第一次需要输入secret,可以在jenkins的log中找到。

    tailf /var/log/jenkins/jenkins.log
    2019-12-02 13:49:58.654+0000 [id=28]    INFO    jenkins.install.SetupWizard#init:
    
    *************************************************************
    *************************************************************
    *************************************************************
    
    Jenkins initial setup is required. An admin user has been created and a password generated.
    Please use the following password to proceed to installation:
    
    7963890ad43440f3b1d3ded44a25e40b
    
    This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
    
    *************************************************************
    *************************************************************
    *************************************************************
    

    然后会进入插件安装界面,建议不要在这个地方选择安装插件,因为会非常慢,可以在进入系统后再安装需要的插件。

    配置

    1. Jenkins安装好后会自动添加一个jenkins的默认用户和用户组,当然也可以将Jenkins的默认用户改为root,但是不推荐
    $ vim /etc/sysconfig/jenkins
    #修改配置
    $JENKINS_USER="root"
    
    1. 如果是默认jenkins用户,操作bash的时候是时候是一jenkins用户,所以如果准备将包拷贝到机器的其它目录需要设置jenkins权限

    2. Jenkins的默认工作根目录是/var/lib/jenkins 工作目录是/var/lib/jenkins/workspace/, 一般来说编译需要比较大的磁盘空间,建议将workspace目录迁移做软连接

    mv /var/lib/jenkins/workspace /data/jenkins/
    ln -s /data/jenkins/workspace /var/lib/jenkins/workspace
    chown -R jenkins:jenkins /data/jenkins
    chown jenkins:jenkins /var/lib/jenkins/workspace
    
    1. 默认不能su切换到jenkins用户下,因为该用户没有bash登录脚本,如果需要可以将下面的/bin/false 改为 /bin/bash
    [cent@centos ~]$ grep jenkins /etc/passwd
    jenkins:x:995:992:Jenkins Automation Server:/var/lib/jenkins:/bin/false
    
    1. jenkins系统服务是以systemd启动的,所以jenkins默认没有session login,如果碰到有些命令必须带bash环境执行则会执行失败,workaround的办法是将jenkins添加sudo权限(/etc/sudoers),然后通过su -l 启用session login:
    $ sudo visudo
    $ sudo grep jenkins /etc/sudoers
       jenkins ALL=(ALL)    NOPASSWD: ALL
    
    $sudo su -l jenkins -c "cd $(pwd); make rpm"
    
    默认jenkins主页 一个典型的构建项目 构建触发器,每5分钟判断代码是否有提交,自动触发构建 构建完自动通过ssh传到测试机器进行安装
    ssh的工作根目录是/tmp,直接使用相对路径就行,这里不要使用绝对路径 构建过程

    通过Nginx代理(28443端口)实现SSL

    server {
        listen                         28443 ssl;
        server_name                    localhost;
        ignore_invalid_headers     off;
    
        ssl_certificate                /etc/nginx/conf.d/server.crt;
        ssl_certificate_key            /etc/nginx/conf.d/server.key;
        ssl_protocols                  TLSv1.2;
        ssl_prefer_server_ciphers      on;
        ssl_session_timeout            5m;
        ssl_ciphers                    HIGH:!aNULL:!eNULL:!kECDH:!aDH:!RC4:!3DES:!CAMELLIA:!MD5:!PSK:!SRP:!KRB5:@STRENGTH;
    
        # charset koi8-r;
        # access_log  /var/log/nginx/host.access.log        main;
        # error_log  /var/log/nginx/error.log               error;
    
        # Consul 8500 proxy
        location / {
            proxy_pass http://localhost:8080;
        }
    
    
        # error_page  404             /404.html;
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
    
    appc reg -n jenkins -e APP_DOCKER_OPTS="--net=host -v /opt/appmanager/ssl/server.pem:/etc/nginx/conf.d/server.crt:ro -v /opt/appmanager/ssl/server-key.pem:/etc/nginx/conf.d/server.key:ro -v /opt/jenkins.nginx.conf:/etc/nginx/conf.d/default.conf:ro"  -c "nginx -g 'daemon off;'" -d nginx:mainline-alpine -f
    

    在Jenkins全局安全设置中取消勾选“Prevent Cross Site Request Forgery exploits”

    相关文章

      网友评论

          本文标题:CentOS7实践Jenkins

          本文链接:https://www.haomeiwen.com/subject/aavhgctx.html