# 自动化流程 **Repository Path**: chenlincoder/automated-process ## Basic Information - **Project Name**: 自动化流程 - **Description**: 一个自动化测试、构建、部署的文档 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2021-12-20 - **Last Updated**: 2025-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 构建流程 > 已经提供了基本的`docker-compose.yaml`文件,直接`docker-compose up -d`. > 前期建议`不要直接后台跑`,前台运行这个docker-compose文件观察是否存在错误。 #### 可能存在的问题: - 映射文件的时候,`windows`系统可能存在未知问题。如果报错,请删除映射配置的权限信息重新尝试。 - gitea、jenkins映射文件可能报错`permission denied`。 ```shell 造成原因: 由于容器内部启动服务的时候,使用的不是root用户。而在映射目录的时候,默认会拷贝宿主机的文件的uid相关信息。 未知知识点: linux系统下面,默认第一个创建的用户,uid=1000。 解决办法: 在宿主机中,把宿主机映射的目录修改所属用户。chown -R 1000 对应目录 ``` #### gitea构建 [参考官方文档](https://docs.gitea.io/en-us/install-with-docker/) > gitea构建没什么难点,按照官方文档即可。 > #### jenkins构建 > 这里有一个坑,拉取`镜像`的时候选择的版本一定要`jenkins/jenkins:lts`.否则可能出现在初始化系统的报错`缺少对应的插件`。 #### 自动化构建 - 我已经准备一个简单的用户登陆的`单元测试压缩包`,里面提供了`phpunit.xml`用于手动进行代码测试、还有一个`build.xml`文件用于jenkins中自动化构建配置。 - 这里以`PHP项目`为例,由于jenkins也是通过对应的插件来进行构建,因此需要`jenkins`容器中需要包含php对应的执行环境。 - 由于`jenkins构建php`需要使用到jenkins的`phing`这个插件。 ![jenkins插件](./src/jenkins_install_phing.png) #### jenkins所需依赖环境安装 ```shell jenkins容器需要安装的环境: php 可以通过 apt-get update && apt-get install php7.4 pear php插件管理器 类似于composer wget https://pear.php.net/go-pear.phar php go-pear.phar 然后一路回车即可。 phing wget https://www.phing.info/get/phing-2.17.0.phar chmod +x phing-2.17.0.phar mv phing-2.17.0.phar /usr/local/bin/phing 记住一定要移动到$PATH存在的可执行目录,否则jenkins会找不到该可执行文件。 TAR_Archive 由于build.xml使用到了压缩文件的指令,需要用到这个依赖。 pear install Archive_Tar 安装对应的插件 composer 这个不要使用apt来直接安装, 去github搜索composer 下载可执行的composer.phar文件即可。 wget https://github.com/composer/composer/releases/download/2.1.10/composer.phar chmod +x composer.phar mv composer.phar /usr/local/bin/composer 记得自己去更换镜像源。 # 有可能在执行 phing -f path/build.xml进行手动构建的时候报错 xml依赖找不到 apt-get install php7.4-xml 即可 ``` #### 生成代码覆盖率文本信息 ![测试demo](./src/code_coverage.png) > 需要安装jenkins插件。我已经在build.xml中phpunit测试的时候生成了代码覆盖率xml文件,请自行查看。 ![安装php clover plugin](./src/install_code_coverge.png) > 然后在创建的任务中设置`增加构建后操作步骤`: ![设置代码覆盖率步骤](./src/publish_clover_php_coverage.png) ![代码覆盖率配置](./src/publish_php_clover_setting_info.png) > 如果你没有修改构建的路径,则可以按照我的参数进行配置。 > 经过配置,手动点击构建,然后就可以任务详情里面看见代码覆盖率信息。 #### 设置gitea webhook钩子来自动构建 ![gitea插件](./src/install_gitea_plugin.png) ![git插件](./src/install_git_plugin.png) > 系统管理/系统配置 ![gitea插件配置](./src/system_gitea_setting.png) ![job gitea配置](./src/job_gitea_setting.png) > gitea 对应的私有仓库设置webhook 正常情况你点进去web钩子,就能看到存在一个钩子了 你修改下信息即可。job改为你的jenkins项目名称。 ![gitea webhook setting](./src/gitea_webhook.png) > 这样就可以实现 你git push,会自动通知jenkins构建对应的任务。 #### 自动部署 需要配置你的部署服务器的ssh信息 ![jenkins ssh插件](./src/install_publish_over_ssh_plugin.png) > 下面的步骤 需要你在本地生成ssh公钥、私钥信息。 `$ ssh-keygen -m PEM -t rsa 记住按照我这个指令来生成 否则生成的配置 jenkins无法识别 具体原因自行百度` 然后把本地的公钥配置到你部署服务器对应用户的authorized_keys中 记得修改sshd_config配置文件的参数 允许通过公钥来登陆。 > jenkins 系统管理/系统设置 ![ssh publish setting](./src/system_ssh_publish_setting.png) ![ssh setting](./src/ssh_setting.png) > job 配置 ![job ssh setting](./src/job_ssh_setting.png) > 一旦配置好 则每次构建完成 会自动上传到对应的服务器。 #### 部署完成 邮箱通知 ![安装插件](./src/install_email_plugin.png) > 这里配置两个地方 `系统管理员邮件地址`跟发送邮件的邮件地址必须一致,否则会发送失败。 > 系统管理/系统配置 ![system_email_setting](./src/system_email_setting.png) ![system_extend_email_setting](./src/system_extend_email_setting.png) ![....](./src/extend_email_setting_1.png) > 设置默认触发的事件 ![default trigger](./src/email_trigger.png) > job详情配置 增加一个构建后操作 ![job_email_setting](./src/job_email_setting_1.png) ![job_email_setting](./src/job_email_setting_2.png) ![job_email_setting](./src/job_email_setting_4.png)