zoukankan      html  css  js  c++  java
  • Jenkins+Ansible+Gitlab自动化部署三剑客(三)--Jenkins

    Jenkins介绍

    jenkins是一个开源持续集成工具

    开发工具: JAVA

    功能: 提供了软件开发的持续集成服务

    特点: 支持主流软件配置管理,配合实现软件配置管理,持续集成功能

    Jenkins的优势和应用场景

    主流的运维开发平台,兼容所有主流开发环境

    插件市场可与海量业内主流开发工具实现集成

    job为配置单位与日志管理,使运维与开发人员能协同工作

    权限管理划分不同job不同角色

    强大的负载均衡功能,保证我们项目的可靠性

    Jenkins安装配置管理

    安装Jenkins前的环境准备(CentOS7)

    1.添加yum仓库源

    # wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

    #rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

    2.保证系统JAVA版本为8.0或8.0以上

    # yum -y install java

    #java -version

    3.关闭系统防火墙

    # systemctl stop firewalld

    # systemctl disable firewalld

    4.关闭SELINUX(强制访问控制安全策略)并重启

    # vi /etc/sysconfig/selinux

    ...

    SELINUX=disabled

    ...

    # reboot

    Jenkins安装与初始化配置

    1.Yum源安装Jenkins最新版本

    # yum install jenkins

    2.创建Jenkins系统用户

    # useradd deploy

    3.更改Jenkins启动用户与端口

    # vi /etc/sysconfig/jenkins

    ...

    JENKINS_USER=deploy

    JENKINS_PORT=8080

    ...

    4.启动Jenkins

    # systemctl start jenkins

    遇到的问题:

    这里通过lsof -i:8080查看端口,但是端口并没有启动

    查看日志
    cat /var/log/jenkins/jenkins.log

     java.io.FileNotFoundException: /var/cache/jenkins/war/META-INF/MANIFEST.MF (权限不够)

    看到是因为deploy用户没有/var/cache目录的权限

    chown -R deploy:deploy /var/cache/jenkins/
    修改目录权限后,问题解决

     登录jenkins web管理界面

    根据路径查找对应密码

     选择社区版

     等待安装

     安装完成创建用户,这里等待安装的时间可能比较长

     

     

    Jenkins job的介绍(Freestyle job 和 Pipeline job)

    代表一个任务或者项目

    可配置与可执行

    执行后的记录称之为Build

    日志监控与记录

    所有文件集中保存

    Freestyle job

    1.需要在页面添加模块配置项与参数完成配置

    2.每个Job仅能实现一个开发功能

    3.无法将配置代码化,不利于job配置迁移与版本控制

    4.逻辑相对简单,无需额外的学习成本

    Pipeline job

    匹配持续集成与持续交付的概念

    1.所有模块,参数配置都可以体现为一个pipeline脚本

    2.可以定义多个stage构建一个管道工作集

    3.所有配置代码化,方便Job配置迁移与版本控制

    4.需要pipeline脚本语法基础

    Jenkins job环境准备

    1.配置Jenkins server本地Gitlab DNS

    vim /etc/hosts

    192.168.0.115 gitlab.example.com

    2.安装git clent,curl工具依赖

    yum -y install git curl

    3.关闭系统Git http.sslVerify安全认证

    4.添加Jenkins后台Git client user 与email

     5.添加凭据

    Jenkins freestyle job的构建与配置

     1.创建一个Freestyle project

    项目构建配置

     

     

    #!/bin/sh
    
    export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
    
    # Print env variable
    echo "[INFO] Print env variable"
    echo "Current deployment envrionment is $deploy_env" >> test.properties
    echo "THe build is $version" >> test.properties
    echo "[INFO] Done..."
    
    # Check test properties
    echo "[INFO] Check test properties"
    if [ -s test.properties ]
    then
      cat test.properties
      echo "[INFO] Done..."
    else
      echo "test.properties is empty"
    fi
    
    echo "[INFO] Build finished..."

    OK,保存

    接下来点击Build with Parameters构建任务

     

    Jenkins Pipeline job的编码规范

    pipeline基础架构

    1.所有代码包裹在pipeline{}层内

    2.stages{}层用来包含该pipeline所有stage子层

    3.stage{}层用来包含具体我们需要编写任务的steps{}子层

    4.steps{}层用来添加我们具体需要调用的模块语句

     agent区域

    1.agent定义pipeline在哪里运行

    可以使用any,none,或具体的jenkins node主机名等

    例如:我们要特指在node1上执行,可以写成

    agent{node {label 'node1'}}

    environment区域

    1."变量名称=变量值"定义我们的环境变量

    2.可以定义全局环境变量,应用所有stages任务

    3.可以定义stage环境变量,应用单独的stage任务

    script区域(可选)

    1.在steps内定义script{}

    2.groovy脚本语言

    3.用来进行脚本逻辑运算

    常用的steps区域

    echo:打印输出

    sh:调用Linux系统shell命令

    git url:调用git模块进行git相关操作

    Jenkins Pipeline job的构建配置

     新建项目

     2.添加描述保存

     3.添加pipeline script

      

     

    #!groovy
    
    pipeline {
        agent {node {label 'master'}}
    
        environment {
            PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
        }
    
        parameters {
            choice(
                choices: 'dev
    prod',
                description: 'choose deploy environment',
                name: 'deploy_env'
                )
            string (name: 'version', defaultValue: '1.0.0', description: 'build version')
        }
    
        stages {
            stage("Checkout test repo") {
                steps{
                    sh 'git config --global http.sslVerify false'
                    dir ("${env.WORKSPACE}") {
                        git branch: 'master', credentialsId:"1bc88d18-1b1d-46e1-a8cb-0893d2c42e51", url: 'https://root@gitlab.example.com/root/test-repo.git'
                    }
                }
            }
            stage("Print env variable") {
                steps {
                    dir ("${env.WORKSPACE}") {
                        sh """
                        echo "[INFO] Print env variable"
                        echo "Current deployment environment is $deploy_env" >> test.properties
                        echo "The build is $version" >> test.properties
                        echo "[INFO] Done..."
                        """
                    }
                }
            }
            stage("Check test properties") {
                steps{
                    dir ("${env.WORKSPACE}") {
                        sh """
                        echo "[INFO] Check test properties"
                        if [ -s test.properties ]
                        then 
                            cat test.properties
                            echo "[INFO] Done..."
                        else
                            echo "test.properties is empty"
                        fi
                        """
    
                        echo "[INFO] Build finished..."
                    }
                }
            }
        }
    }

    4.立即构建

     这里报错:groovy.lang.MissingPropertyException: No such property: deploy_env for class: groovy.lang.Binding

    需要点击Build with Parameters再运行

  • 相关阅读:
    Running APP 使用说明
    Android 控件八 WebView 控件
    Android 控件七 ImageView 控件
    Android 控件六 CheckBox 控件
    Android 控件五 RadioButton 控件
    Android 控件四 EditText 控件
    Android 控件三 TextView 控件实现 Button
    Android 控件二 Button
    Android 基础控件演示实例
    Android 控件一 TextView
  • 原文地址:https://www.cnblogs.com/bk770466199/p/12259029.html
Copyright © 2011-2022 走看看