你好!大家好,我是一名前端开发人员。我是一个优秀的年轻人,致力于用最简单直接的方式与大家分享技术,期待共同进步。哈哈接上一篇介绍lernadeployment的文章。我来总结一下自动化集成的内容。最好一起阅读,以了解我这篇文章的目的。希望对您有所帮助!上一篇文章地址:Monorepo15分钟体验lerna。好,让我们回到主题。我会在以下几个部分讲解自动化集成的实践:为什么要使用自动化集成(出处):网上有很多资料,我就不赘述了,有兴趣的可以去看看搜索大佬的BLOG详解不是本文的重点。我是如何在项目中减少劳动力并提高自动化程度的:关注它!!!像我这样的小白可以跟着我一步步尝试——shell脚本实现一键打包一键提交——Gitlabrunner实现自动化部署测试环境我在里面遇到了哪些问题:因为我遇到了很多问题!都在这里总结了。希望看到本文遇到的其他问题或已经解决。可以留言分享哦!哇!为什么要使用自动化集成?你一定听说过CI(持续集成)/CD(持续部署)。用一张流程图简单说明一下我接下来要用到的gitlabCI的工作流程:在我看来,自动化集成就是利用服务器来提高开发效率,提高业务稳定性,那么作为起点,我总结一下原因影响我当前项目的开发效率:当前项目有很多子项目(所以是lerna管理的),但是耦合度大(public组件很多),如果修改public组件,需要进入每个目录,并执行一系列的npmrunbuild->git操作测试环境部署一次一个。目前业务状态是给项目打tag,然后使用Jenkins平台推送到Testserver。以上两个痛点是我最苦恼的地方。看似单子很少,但是如果提前的项目很多,我的操作都是按倍数重复的!!!(呕吐……)好吧!我要解决这个问题。如何在项目中减少人工并提高自动化程度?优化一:子项目多,一次修改,到处打包,优化一键打包优化二:git操作繁琐,优化命令行快速提交解决方案:使用shell脚本1.新建两个shell脚本在项目的根目录中:我将它们命名为:pack.shcommit.sh2。在package.json下,我定义了两行执行命令。“脚本”:{“提交”:“sh./commit.sh”,“pack”:“sh./pack.sh”}3。打包脚本代码echo"\033[32mPleaseselectnumberofpackagedirectory[1:xiangmu1,2:xiangmu1,3:xiangmu3,4:xiangmu4]"readnumberif[[$number='1'||$number='2'||$number='3'||$number='4']];然后选择“================构建开始=====================”case$numberin1)cd。/packages/xiangmu1#workdir=$(cd$(dirname$0);pwd)#echo$workdirsudonpmrunbuild;;2)cd./packages/xiangmu2#workdir=$(cd$(dirname$0);pwd)#echo$workdirsudonpmrunbuild;;3)cd./packages/xiangmu3#workdir=$(cd$(dirname$0);pwd)#echo$workdirsudonpmrunbuild;;4)cd./packages/xiangmu4#workdir=$(cd$(dirname$0);pwd)#echo$workdirsudonpmrunbuild;;*)echo"Usage:shpack.shdefault"exit;esacelseecho"输入错误。"fi4。提交脚本代码echo"\033[32m请确认是否提交y/n"readsubmitif[$submit=='y'];thenecho"\033[32m请输入提交描述【不支持空格】"阅读详情gitadd.gitcommit-m$detail#gitcommit-m"asd"gitpushelseecho"终止提交"fi5.执行npmrunpack//打包项目npmruncommit//提交代码优化3:使用GitlabRunner官方文档测试环境部署自动化:https://docs.gitlab.com/runne...gitlabrunner介绍:gitlab-runner是项目自动化的驱动,可以执行.gitlab-ci.yml文件(可以写在你项目的根目录下),提交代码后,会执行写好的脚本,脚本会执行进一步操作,从而实现自动化简单说说我的理解:在项目中创建.gitlab-ci.yml文件。当你提交代码的时候,它会自动根据这个文件的命令为你做一些事情!比如:帮你打包文件,帮你把文件部署到哪里去,帮你对项目做一个自动化测试(我还没做过这个功能)等等等等。gitlab-ci.yml官方文档:https://docs.gitlab.com/ce/ci...GitlabRunner的版本需要和Gitlab对应(很重要)。我开发的项目是8.X,对应的runner应该是11.X,所以最后选择了runner1.11.2。我在CentOS安装中同时运行Gitlab和Runner1.下载sudowgethttps://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v1.11.2/binaries/gitlab-ci-multi-runner-linux-3862.添加运行sudochmod+xgitlab-ci-multi-runner-linux-3863的权限。创建用户sudouseradd--comment'GitLabRunner'--create-homegitlab-runner--shell/bin/bash4.安装sudogitlab-ci-multi-runner-linux-386install--user=gitlab-runner--working-directory=*****(pwd你自己的路径)/gitlab-runnersudogitlab-ci-multi-runner-linux-386startConfigureGitlabRunner官方文档:https://docs.gitlab.com/runner/1。进入git项目,找到项目runner2的url和token。运行命令./gitlab-ci-multi-runner-linux-386注册后,按照提示操作即可。2.输入网址。3.输入令牌。选择Runnerexecutor,这里选择shell已经注册成功,输入./gitlab-ci-multi-runner-linux-386列表,可以看到上面的注册条目,在git中也可以看到注册成功的显示!还没结束!提交代码后需要在项目根目录下创建一个.gitlab-ci.yml作为gitlab-runner运行的基础(我主要是这样做的,代码在服务器上更新,build文件是复制到在线地址目录)ok,大功告成。嘻嘻我在部署的过程中遇到了哪些问题呢?在部署gitlab-runner的时候,遇到了一些坎坷。gitlab和gitlab-runner的版本不兼容,导致注册失败。错误消息是:错误:正在注册跑步者...失败的跑步者=<令牌>状态=405方法不允许恐慌:无法注册此跑步者。可能是你遇到了网络问题以上问题的解决方法是:找到正确版本的gitlab和gitlab-runner!网上有博主说有官方文档。。。但是我没找到。。。可以去看看权限问题。提交后,自动化失败,提示权限问题;解决方法:修改GitLabRunner的权限,使其与root一致。vim/etc/passwd可以通过以上命令编辑用户对应的权限。我这里默认打开为gitlab-runner:x:601:601:GitLabRunner:/home/gitlab-runner:/bin/bash,修改权限组跟root一致gitlab-runner:x:0:0:GitLab亚军:/home/gitlab-亚军:/bin/bash。(root的权限组名是0)以上是我在项目中自动化实践的参考文章:(感谢你在我没有找到对应版本的时候救了我哈哈)https://blog.csdn.net/yzf9132。..albert_knag
