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

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)

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
  • 查看 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

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

二、配置 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

三、安装 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"

四、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 输入框下面,不要有警告或者错误信息,否则就是路径不正确。
  • 主要配置参数如上获取,实际操作

在这里插入图片描述

在这里插入图片描述

五、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

在这里插入图片描述

七、Jenkins 凭据配置

在这里插入图片描述

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

八、Jenkins 视图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

九、构建

1、jenkins构建权限问题

  • 修改jenkins配置

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

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

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
  • 最终效果

在这里插入图片描述

在这里插入图片描述

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 == 

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

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

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

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

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

5、VUE 项目手动打包部署

  • 配置

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

  • 最终效果

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

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

  • 暂无

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CentOS+Postfix+Dovecot+Postfixadmin+Roundcube邮件服务器的搭建步骤如下: 1. 安装 CentOS 操作系统,并更新至最新版。 2. 安装 Postfix 邮件服务器,并进行基本配置。 3. 安装 Dovecot IMAP/POP3 服务器,并进行基本配置。 4. 安装 Postfixadmin 邮箱管理系统,并进行基本配置。 5. 安装 Roundcube Webmail 邮件客户端,并进行基本配置。 具体步骤如下: 1. 安装 CentOS 操作系统,并更新至最新版。 在安装 CentOS 操作系统时,选择最小化安装,并根据实际情况进行分区和网络配置。安装完成后,使用以下命令更新系统: ``` yum update ``` 2. 安装 Postfix 邮件服务器,并进行基本配置。 使用以下命令安装 Postfix: ``` yum install postfix ``` 安装完成后,修改 /etc/postfix/main.cf 文件,使其支持 TLS 和 SASL 认证: ``` smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt smtpd_tls_key_file = /etc/pki/tls/private/server.key smtpd_tls_security_level = may smtp_tls_security_level = may smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination ``` 然后重启 Postfix 服务: ``` systemctl restart postfix ``` 3. 安装 Dovecot IMAP/POP3 服务器,并进行基本配置。 使用以下命令安装 Dovecot: ``` yum install dovecot ``` 安装完成后,修改 /etc/dovecot/dovecot.conf 文件,使其支持 TLS 和 SASL 认证: ``` ssl_cert = </etc/pki/tls/certs/server.crt ssl_key = </etc/pki/tls/private/server.key auth_mechanisms = plain login ``` 然后重启 Dovecot 服务: ``` systemctl restart dovecot ``` 4. 安装 Postfixadmin 邮箱管理系统,并进行基本配置。 使用以下命令安装 Postfixadmin: ``` yum install postfixadmin ``` 安装完成后,修改 /etc/httpd/conf.d/postfixadmin.conf 文件,使其支持 SSL: ``` SSLEngine on SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key ``` 然后重启 Apache 服务: ``` systemctl restart httpd ``` 访问 https://your-domain.com/postfixadmin,使用管理员账号登录,创建邮箱账号和域名等相关配置。 5. 安装 Roundcube Webmail 邮件客户端,并进行基本配置。 使用以下命令安装 Roundcube: ``` yum install roundcubemail ``` 安装完成后,修改 /etc/httpd/conf.d/roundcubemail.conf 文件,使其支持 SSL: ``` SSLEngine on SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key ``` 然后重启 Apache 服务: ``` systemctl restart httpd ``` 访问 https://your-domain.com/roundcubemail,使用邮箱账号登录,即可使用 Roundcube 邮件客户端。 以上就是 CentOS+Postfix+Dovecot+Postfixadmin+Roundcube邮件服务器的搭建步骤,如有问题可以参考相关文档或者咨询技术人员。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A1311878170

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值