jenkins教程
jenkins教程
- 背景
- Jenkins服务器搭建及基本配置
- 简介
- Jenkins自动化部署实现原理
- Jenkins部署环境
- Jenkins安装
- 相关配置
- 基本配置
- Jenkins自动化部署(php+gitee)项目
- Jenkins服务器上创建项目和配置
- 配置自定义构建目录
- 插件安装失败问题
- SSH: Transferred 0 file(s)
- Build step 'Send build artifacts over SSH' changed build result to UNSTABLE
背景
在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;或者前后端分离后,经常会修改接口,然后重新部署;这些情况都会涉及到频繁的打包部署。
那么,有一种工具能够实现,将代码提交到git后就自动打包部署勒,答案是肯定的:Jenkins
当然除了Jenkins以外,也还有其他的工具可以实现自动化部署,如Hudson等
只是Jenkins相对来说,使用得更广泛。
Jenkins服务器搭建及基本配置
简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins自动化部署实现原理
Jenkins部署环境
基本环境:
1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。
2.git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。
环境请自行搭建完成
Jenkins安装
从官网下载jenkins的war包,地址https://jenkins.io/
指定java安装目录的bin下执行 java -jar jenkins.war --httpPort=8080
不然启动插件会安装失败
/usr/local/jdk-11.0.1/bin/java -jar /usr/local/jenkins.war --httpPort=8080
打开浏览器进入链接 http://ip:8080
相关配置
进入插件安装选择
这里建议选择,推荐安装的插件,保证基本常用的功能可以使用
选择后,进入插件安装页面
设置初始用户和密码
进入系统,安装完成
汉化需要在插件中安装 chinese 然后重启jenkins
基本配置
https://www.cnblogs.com/heian99/p/16295729.html
Jenkins自动化部署(php+gitee)项目
Jenkins服务器上创建项目和配置
大体步骤:General(基础配置)–》源码管理–》构建触发器–》构建环境–》构建–》构建后操作
git秘钥问题
因为jenkins是通过jenkins用户运行的所以需要创建jenkins用户的秘钥才可以
1.先切换到jenkins用户下(此时在jenkins安装目录下)
sudo su -s /bin/bash jenkins
2.生成新的ssh秘钥
ssh-keygen -t rsa
3.复制生成的公钥到gitlab
cat .ssh/id_rsa.pub
配置自定义构建目录
插件安装失败问题
解决
将源修改为
http://mirror.esuni.jp/jenkins/updates/update-center.json
亲测有效
SSH: Transferred 0 file(s)
重点是第三步和第一部拼接起来的路径是文件的全路径!!!
https://blog.csdn.net/weixin_44439488/article/details/120488588
这里举例说明,如果实现名称为sskzmz的任务的项目文件发送到远程服务器/www/sites/sskzmz/目录下。
注: 构建文件所在的目录是 /var/jenkins_home/workspace/sskzmz
则配置如下:
Source files **/*
表示sskzmz这个job的工作目录下所有的文件和目录。
Remove prefix
该操作是针对上面的source files目录,会移除匹配的目录。通常留空。
Remote directory
该操作是基于设定的服务器目录进行。这里我的服务器配置是的/www. 因此这里应该写sites/sskzmz即可。
Exec command
远程服务器执行的命令。例如可以输出 service nginx restart 或者/www/xx. sh 均可。
重点一: source files
要基于任务的目录进行。不支持绝对路径。如果配置不对,则找不到文件。上例中/var/jenkins_home/workspace/sskzmz
是任务目录。最终jenkins会选择 /var/jenkins_home/workspace/sskzmz/**/* 查询所要传送的文件。重点二: Remote directory 要基于你远程服务器的目录配置。你远程服务器配置的基准是/www 。则最终的文件目录是 /www+
Remote directory的配置参数。不支持绝对路径。
只要理解上面这2点,就不会再出现SSH: Transferred 0 file(s)
链接:https://www.jianshu.com/p/ef6a4022b7b5
Build step ‘Send build artifacts over SSH’ changed build result to UNSTABLE
背景:因为使用的root账户所以上来目录在root下,故想把代码移到别的目录,不管是mv还是cp都会出现上图错误
思考:是不是新建一个用户 将目录预置到要部署的文件夹下(待测)