当前位置:   article > 正文

CentOS+Jenkins+Gitea+宝塔环境搭建 实现自动化部署_jenkins+宝塔+php

jenkins+宝塔+php

CentOS+Jenkins + Gitea+宝塔 实现CI/CD

一、安装最新版 Jenkins

1、安装 JAVA JDK

yum -y install java 

[root@ecs-487c-0002 ~]# java -version
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-b08)
OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、安装 Jenkins

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum upgrade
sudo yum install epel-release java-11-openjdk-devel
sudo yum install jenkins
sudo systemctl daemon-reload
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 查看 jenkins 安装了哪些文件
[root@ecs-487c-0002 ~]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3、启动,重启,关闭 Jenkins

systemctl start jenkins
systemctl restart jenkins
systemctl stop jenkins


# 查看是否启动
netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name           
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      997/nginx: master p 
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      2702/sidekiq 5.2.9  
tcp        0      0 127.0.0.1:9236          0.0.0.0:*               LISTEN      2564/gitaly         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2345/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2124/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      2113/mysqld         
tcp6       0      0 :::8080                 :::*                    LISTEN      4269/java	# 就是他           
tcp6       0      0 ::1:9168                :::*                    LISTEN      2452/ruby           
tcp6       0      0 :::22                   :::*                    LISTEN      2345/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      2124/master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

二、配置 Jenkins

# 通过 http://ip:8080 访问

# 第一次访问的时候会有一个重置密码界面,我们按照他的要求进行即可。
cat /var/lib/jenkins/secrets/initialAdminPassword
[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
f1c4be908d4b49c894d884a00e4fa34d
[root@localhost ~]# 
# 查看的结果直接复制输入进去。

# 创建一个用户。 admin 123456

# 自主选择插件安装。如果默认为英文
# 登录用户之后--> 系统管理-->插件管理--> 搜索 --> Localization: Chinese (Simplified)
# 安装完成之后执行重启命令
systemctl restart jenkins
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

三、安装 maven

yum -y install  maven

[root@ecs-487c-0002 ~]# mvn --version
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 1.8.0_302, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-240.10.1.el8_3.x86_64", arch: "amd64", family: "unix"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

四、Jenkins 系统配置

# 添加jdk
# 登录到Jenkins管理后台,点击 Manage Jenkins --> Global Tool Configuration
# 点击 新增jdk
# Install automatically 前面的勾选,去掉
# 输入别名和JAVA_HOME
# 别名: openjdk
# JAVA_HOME : /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64/jre
# 通过 mvn --version 查看得到 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el8_4.x86_64/jre  去掉 jre 填写到上面 JAVA_HOME 上


# 添加maven
# 点击新增Maven
# Install automatically 前面的勾选,去掉
# 输入name和MAVEN_HOME
# name: maven
# MAVEN_HOME: /usr/share/maven

# 注意:使用 mvn -version 命令,就可以看到Maven home变量
# MAVEN_HOME 输入框下面,不要有警告或者错误信息,否则就是路径不正确。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 主要配置参数如上获取,实际操作

在这里插入图片描述

在这里插入图片描述

五、Jenkins 安装插件

  • Localization: Chinese (Simplified):Jenkins Core 及其插件的简体中文语言包

  • Git:用于集成项目版本控制软件,根据需要选择

  • Git Parameter Plug-In:查看插件站点上的Git 参数获取更多信息。

  • SSH server:远程服务器

  • Publish Over SSH:远程服务器部署构建

  • NodeJS Plugin:nodejs插件

  • Gitea Plugin:gitea插件

  • 以下插件暂时没用到

  • Phing/Ant:使用Phing或Apache Ant 对PHP项目做自动化构建

  • CheckStyle:使用PHP CodeSniffer进行代码风格检查的工具。用于检查PHP代码是否有违反一组预先设置好的编码标准的一个PEAR包,内置了ZEND,PEAR的编码风格规则

  • Clover PHP:使用phpunit进行单元测试的工具,可以被xdebug扩展用来生成代码覆盖率报告,并且可以与phing集成来自动测试,还可以和Selenium整合来完成大型自动化集成测试

  • DRY:使用PHPCPD(php copy paste detector)来发现项目中的重复代码

  • HTML Publisher:用来发布phpunit代码覆盖率报告

  • JDepend:使用PHP Depend分析php中静态代码,用来检查项目中的代码规模和复杂程度

  • Plot:使用phploc来统计php项目规模大小的工具,可以统计php的项目代码行数

  • PMD:使用phpmd(php mess dector),对基于pdepend的结果进行分析,一旦项目超过了pdepend中各具体指标的规定,将发出警告信息.

  • Violations:按照代码缺陷严重性集中显示pwd静态代码分析的结果

  • xUnit:使用JUnit的格式来输出phpunit的日志文件

六、Jenkins 全局安全配置

在这里插入图片描述

可以不需要开启授权访问,因为这样匿名用户可以看到任务的脚本 信息,里面有敏感信息,容易造成泄漏。建议将权限关闭,只允许登录的账号进行查看。这样远程触发的时候,需要在指定角色里面生成对应的 API TOKEN 进行远程进行触发。在 GIT 仓库添加 webhook 设置触发地址为 http://ip:port/buildByToken/build?job=jobName&token=token

ip:port 可以是域名,也可以是 ip:port
jobName 定义任务的名称,建议是英文
token	即对应用户的api token
  • 1
  • 2
  • 3

在这里插入图片描述

七、Jenkins 凭据配置

在这里插入图片描述

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

八、Jenkins 视图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

九、构建

1、jenkins构建权限问题

  • 修改jenkins配置

检查jenkins配置配置文件,将执行用户改成root,不然后面可能出现执行shell没有权限

vim /etc/sysconfig/jenkins # 编辑文件
JENKINS_USER="root" # 改成root
  • 1
  • 2
  • 修改jenkins的用户与组
cd /var/lib
chown -R root:root jenkin0s
# 重启jenkins服务
systemctl restart jenkins
  • 1
  • 2
  • 3
  • 4

2、Jenkins 本地部署

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 使用到的脚本代码
# 打包备份当前运行的版本
if [ -d ${WORKSPACE} ]; then
    # 判断是部署在哪台服务器
    if [ $SERVER = 'Develop' ]; then
        echo "部署在本机" 
    fi

    # 查看是否存在.env配置文件
    #if [ ! -f "${WORKSPACE}/.env" ]; then
        # cd ${WORKSPACE} && \
        # \cp -rf .env.example .env
        echo -e "${ENV_CONFIG}" > "${WORKSPACE}/.env"
    #fi

    # 进入目录,执行项目安装
    cd ${WORKSPACE} && \
    chown -R www:www * && \
    chmod -R 755 * && \
    composer install

    # 判断是否有数据迁移
    if [ -d "${WORKSPACE}/database" ]; then
        php think migrate:run
    fi
    # 特殊配置清单
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 最终效果

在这里插入图片描述

在这里插入图片描述

3、构建用到的 Jenkins 环境变量

JOB_DISPLAY_URL == http://1*.*.*.64:8080/job/crm/display/redirect
RUN_DISPLAY_URL == http://1*.*.*.64:8080/job/crm/65/display/redirect
RUN_ARTIFACTS_DISPLAY_URL == http://1*.*.*.64:8080/job/crm/65/display/redirect?page=artifacts
RUN_CHANGES_DISPLAY_URL == http://1*.*.*.64:8080/job/crm/65/display/redirect?page=changes
RUN_TESTS_DISPLAY_URL == http://1*.*.*.64:8080/job/crm/65/display/redirect?page=tests
CI == true
BUILD_NUMBER == 65
BUILD_ID == 65
BUILD_DISPLAY_NAME == #65
JOB_NAME == crm
JOB_BASE_NAME == crm
BUILD_TAG == jenkins-crm-65
EXECUTOR_NUMBER == 0
NODE_NAME == built-in
NODE_LABELS == built-in
WORKSPACE == /var/lib/jenkins/jobs/crm/workspace
WORKSPACE_TMP == /var/lib/jenkins/jobs/crm/workspace@tmp
JENKINS_HOME == /var/lib/jenkins
JENKINS_URL == http://1*.*.*.64:8080/
BUILD_URL == http://1*.*.*.64:8080/job/crm/65/
JOB_URL == http://1*.*.*.64:8080/job/crm/
GIT_COMMIT == 4e09e5b1fe9ae0b7ae0018997dd4370caf4a327b
GIT_PREVIOUS_COMMIT == 4e09e5b1fe9ae0b7ae0018997dd4370caf4a327b
GIT_PREVIOUS_SUCCESSFUL_COMMIT == 4e09e5b1fe9ae0b7ae0018997dd4370caf4a327b
GIT_BRANCH == origin/dev
GIT_LOCAL_BRANCH == 
GIT_CHECKOUT_DIR == 
GIT_URL == http://域名/orico_f2b211/orico_crm_api
GIT_COMMITTER_NAME == 
GIT_AUTHOR_NAME == 
GIT_COMMITTER_EMAIL == 
GIT_AUTHOR_EMAIL == 
SVN_REVISION == 
SVN_URL == 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

十、配置gitea 项目自动集成自动部署

所有公共配置参数需要写入到公共配置文件里面。env .env.stage

# 需要全部从代码里面脱离出来
数据库配置信息
密钥
单点配置信息
ERP配置信息
账号密码
redis配置信息
mycat配置信息
邮件配置信息
支付配置信息
……
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
如果开发在开发中增加了公共配置信息,则需要对应配置的正式服信息提交到Jenkins的部署脚本里面
  • 1

1、PHP 项目自动部署(自动部署不能和参数化部署同时使用一个任务,暂时没研究出

  • 添加触发远程构建 (例如,使用脚本)

在这里插入图片描述

  • 配置好 JenKins 后,转到代码仓库,进行触发

在这里插入图片描述

  • 如果需要在 URL 后面添加额外的参数话,需要给相应权限
  • 远程构建脚本
# 打包备份当前运行的版本
function main() {
    USER=yulinzhihou
    PASS=sinall0
    PROJECT_DIR=/www/wwwroot/orico_crm_api
    GIT_REPO=http://${USER}:${PASS}@git.f2b211.com/orico_f2b211/orico_crm_api.git
    if [ -d $PROJECT_DIR ]; then
        # 拉取代码
        # 先设置密钥
        cd ${PROJECT_DIR} && \
        git checkout -f && \
        git pull origin dev --rebase
        # 特殊配置清单

    else
        git clone ${GIT_REPO} $PROJECT_DIR
        if [ $? -eq 0 ]; then
            # 切换分支
            cd ${PROJECT_DIR} && \
            git checkout dev
        fi
    fi

    # 查看是否存在.env配置文件
    if [ ! -f "${PROJECT_DIR}/.env" ]; then
        cat > "${PROJECT_DIR}/.env" <<EOF
APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = orico_crm
USERNAME = root
PASSWORD = sinall0
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true
PREFIX = crm_

[LANG]
default_lang = zh-cn

[JWT_CONFIG]
ISS = OPS
EXP = 604800

[REDIS]
HOST=127.0.0.1
PORT=6379
PASS=orico@f2b211
SELECT=0

[PRIVILEGES]
ONE="教练"
TWO="团长"
THREE="业务员"
EOF
    fi

    # 进入目录,执行项目安装
    cd ${PROJECT_DIR} && \
    git checkout -f && \
    composer install -q && \
    chown -R www:www * && \
    chmod -R 755 *
    
    # 判断是否有数据迁移
    if [ -d "${PROJECT_DIR}/database" ]; then
        php think migrate:run
    fi
}

main
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76

2、PHP 项目手动本地打包

  • 编写构建脚本,见 Jenkins 本地部署

3、PHP 项目手动回滚到上一版本

  • 待更新

4、VUE 项目自动部署

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

  • 相关部署脚本

# 打包备份当前运行的版本
function main() {
    # 账号
    USER=yulinzhihou
    # 密码
    PASS=sinall0
    # 项目目录
    PROJECT_DIR=/www/wwwroot/dev.crm.f2b211.com
    # 拉取代码的链接
    GIT_REPO=http://${USER}:${PASS}@git.f2b211.com/orico_f2b211/orico_crm_front.git

    if [ -d $PROJECT_DIR ]; then
        cd ${PROJECT_DIR} && \
        git checkout -f && \
        git pull origin dev --rebase
        # 特殊配置清单
    else
        git clone ${GIT_REPO} $PROJECT_DIR
        if [ $? -eq 0 ]; then
            # 切换分支
            git checkout dev
        fi
    fi

    # 查看是否存在.env配置文件
    if [ ! -f "${PROJECT_DIR}/.env.staging" ]; then
        cd ${PROJECT_DIR} && \
            # 测试服配置
    cat > ${PROJECT_DIR}/.env.staging <<EOF
# just a flag
ENV = 'development'
# 接口版权
VUE_APP_API_VERSION = 'v1'
# 接口URL
VUE_APP_BASE_API = 'http://dev.crm.api.f2b211.com'
# sso请求URL
VUE_APP_SSO_BASEURL = 'http://dev.uc.f2b211.com/uc/'
VUE_APP_SSO_LOGINURL = "http://dev.uc.f2b211.com/uc/user/login.html"
# sso appid
VUE_APP_SSO_APPID = 'F9723218ACC3EB86F6505381759AA0D3'
VUE_CLI_BABEL_TRANSPILE_MODULES = true
EOF
    fi
    cd ${PROJECT_DIR} && \
    chown -R www:www * && \
    chmod -R 777 * && \
    npm install --registry=https://registry.npm.taobao.org && \
    # 进入目录,执行项目安装
    npm run build:stage

    if [  $? -eq 0 ]; then
        echo -e "构建成功-"`date '+%Y-%m-%d-%H-%M-%S'`
    fi
}

main
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

5、VUE 项目手动打包部署

  • 配置

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

  • 最终效果

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

6、VUE 项目手动回滚到上一版本

  • 暂无

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/812510
推荐阅读
相关标签
  

闽ICP备14008679号