当前位置: 首页 > 后端技术 > Node.js

Docker+Jenkins+Nodejs+Git+Webhook自动部署

时间:2023-04-03 23:50:06 Node.js

1.准备环境一台联网的Linux服务器Dockerrpm安装包,依赖包libcgroupjdk1.7OR1.8环境下载JenkinsWAR包下载NodeJs源码包下载依赖下载地址:https://pkgs.org/download/https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/2。安装Dockerrpm-ivhlibcgroup-0.40.rc1-23.el6.x86_64.rpmrpm-ivhdocker-engine-1.7.1-1.el6.x86_64.rpm3.从ubuntu添加jdk-8u171-linux-x64编写Dockerfile。tar.gz/usr/local/RUNmv/usr/local/jdk1.8.0_171/usr/local/javaADDapache-tomcat-8.5.30.tar.gz/usr/local/RUNmv/usr/local/apache-tomcat-8.5.30/usr/local/tomcatCOPYjenkins.war/usr/local/tomcat/webapps/ADDnode-v8.11.1.tar.gz/root/RUNapt-getupdateRUNapt-getinstall-ypythongitsshgccg++makeRUN/root/node-v8.11.1/configure&&make-C/root/node-v8.11.1/&&makeinstall-C/root/node-v8.11.1/&&rm-rf/root/node-v8.11.1/ENVJAVA_HOME/usr/local/javaENVJRE_HOME$JAVA_HOME/jreENV类路径。:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar环境路径$JAVA_HOME/bin:$PATHEXPOSE8080300022ENTRYPOINT["java","-jar","/usr/local/tomcat/webapps/jenkins.war"](Dockerfile和语法这里就不做解释了,大家可以自己查资料)本来应该用tomcat启动的,但是容器启动后tomcat没有启动。我试了很多方法都没用。最后只好改成java-jar,把Dockerfile和所有的软件包放在一起,然后执行命令dockerbuild-tjenkins./-tjenkins是镜像的TAG,'./'是Dockerfile和软件包的路径,最后看到Successfully说明成功(Docker基础镜像有jenkins镜像,直接执行dockerpulljenkins即可,为什么要用WAR包安装,因为jenkins镜像的登录用户是jenkins,很多东西都是登录容器后未经许可不能做的)4.运行镜像。这时候在运行dockerimages的时候,应该会有一个叫jenkins的镜像。执行命令dockerrun-d-p8080:8080-p50000:50000-p3000:3000-p50001:22-v/var/jenkins_home:/root/.jenkins/--namejenkins_nodejenkins(3000端口是nodejs程序端口自己设置)run运行docker镜像,-d作为后台守护进程运行,-p开启容器端口(服务器端口:容器端口),-v挂载分区(服务器分区:容器分区)--name指定容器名称,最后的jenkins是如果镜像包名出现这样的问题,重启docker服务,尝试启动容器。如果无法解决问题,请打开防火墙端口,然后重启docker服务。以Centos7为例firewall-cmd--zone=public--add-port=50001/tcp--permanentfirewall-cmd--reloadsystemctlrestartdockerdockerstartjenkins_node防火墙对docker影响很大。开启防火墙后,会遇到很多奇怪的错误,而这些错误报错基本没有解决办法,能查到的也只有和你遇到的问题无关,但是这些问题基本都和连接有关,比如无法连接或者找不到主机,以及无法解析URL。如果在开启防火墙的情况下遇到此类问题,请先检查防火墙,然后重启docker服务和容器5.jenkins配置jenkins安装打开浏览器输入:“服务器地址:8080”访问,会出现如下页面将服务器“/var/jenkins_home/secrets/initialAdminPassword”文件内容复制到输入框,点击继续点击左侧推荐安装,等待安装完成,设置Adminuserjenkins插件安装配置,点击系统管理-->插件管理,选择“可选插件”右上角搜索SSH-->选择PublishOverSSH-->点击DirectInstall等待安装完成安装完成后成功,点击系统管理-->插件管理,拉到最下面找到“PublishoverSSH”,设置服务器的SSH信息为服务器执行dockerexec-itjenkins_nodebash,登录容器,重新设置用户密码passwd,安装编辑器apt-getinstall-yvim安装后vim/etc/ssh/sshd_config编辑ssh配置文件,找到PermitRootLoginprohibit-password,修改为PermitRootLoginyes保存文件,重启sshservicesshrestartSetsshbootself-startupdate-rc.dsshdefaults生成sshkeyssh-keygen-trsa不要输入任何东西直接回车直到完成切换到sshkey目录cd~/.ssh/会有两个文件'id_rsa'(secretkey)和'id_rsa.pub'(publickey)overSSH'settings找到SSHServers点击“Add-->Advanced”Name:sshservername随意设置Hostname:ServeripaddressUsername:Containerusername选择Usepasswordauthenticationn,或者使用不同的keyPassphrase/Password:容器用户密码Key:粘贴刚才复制的id_rsa(秘钥)内容Port:设置为镜像运行命令,将22端口映射到50001端口点击测试配置,成功会出现下图,请检查authorized_keys文件名或内容是否正确,复制的私钥内容是否正确,docker容器ssh是否运行。如果出现下图,在宿主机上打开50001端口保存。6.Jenkins项目配置主页,点击左上角“新建”General:填写项目名称即可sourcecodemanagement:填写Git信息RepositoryURL:填写项目git地址Credentials:如果有用户name和password,点击add添加用户信息,输入用户名和密码,如果图片中的CAfile有错误,会去容器中执行gitconfig--globalhttp.sslverifyfalse来开启关闭https证书检测,然后返回页面,将RepositoryURL中的地址剪切粘贴,搭建环境。选择'SendfilesorexecutecommandsoverSSHbeforethebuildstarts'Remotedirectory:执行此命令的文件夹位置,一般为"./",表示在项目目录下Execcommand:执行构建命令,如"npmstart》保存,返回首页,构建刚刚创建的项目7.自动部署jenkins-->首页-->UserSettings-->点击“showAPIToken”,复制APIToken内容,返回首页-->(自己的项目)-->配置-->构建触发器-->选择“TriggerRemoteBuild”-->将“APIToken”内容粘贴到“AuthenticationToken”即可登录git平台,找到你的项目,选择management,在webhookURL中选择node,请替换成你在jenkins上创建的项目名,token就是复制过来的API这时候你gitpushToken内容,你会发现jenkins由于jenkins的安全策略,不会自动构建,还需要进行如下设置。在jenkins主页,选择SystemManagement-->ConfigureGlobalSecurity(系统设置下面那个)设置如下