Jenkins + pipeline + Git + PHP (九)
一、准备环境介绍
192.168.5.71 # gitlab 仓库IP
192.168.5.72 # 开发环境,用于提交代码等
192.168.5.150 # www.leon.com 运行wordpress的网站地址
192.168.5.239 # jenkins 服务器
二、Jenkins需要先安装pipeline插件
Jenkins -> 系统管理 -> 插件管理 -> 可选插件 -> 过滤pipeline -> 钩选后直接安装
三、创建两个git仓库,用于存放jenkinsfile脚本及php线上代码
在192.168.5.71上面使用git用户,也可以用root用户。
# 初始化一个仓库用于存储jenkins pipeline 的SCM脚本,jenkinsfile名称可修改成别的名字
# su - git
$ mkdir -p /home/git/repo/jenkinsfile/
$ cd repo/jenkinsfile/
$ git --bare init
Initialized empty Git repository in /home/git/repo/jenkinsfile/
-----------------------------------------------------------------------------
# 初始化之后的仓库地址是:git@192.168.5.71:/home/git/repo/jenkinsfile # 初始化第二个git仓库,用于上线wordpress代码
$ mkdir -p /home/git/repo/wordpress
$ cd /home/git/repo/wordpress/
$ git --bare init
Initialized empty Git repository in /home/git/repo/wordpress/
------------------------------------------------------------------------------
# 初始化之后的仓库地址是:git@192.168.5.71:/home/git/repo/wordpress
四、开发机(72)和LNMP环境的web机器(150)配置对git服务器(71)免密钥认证
开发机和web机在两台机器上面都要进行操作
LNMP环境安装可参见:https://www.cnblogs.com/cyleon/p/10110060.html
# 在两台(72、150)机器上面做如下操作
# ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
# ssh-copy-id -i /root/.ssh/id_dsa.pub git@192.168.5.71 # 完成后测试是否能免密码拉取代码
# git clone git@192.168.5.71:/home/git/repo/jenkinsfile
Cloning into 'jenkinsfile'...
remote: Counting objects: , done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta )
Receiving objects: % (/), done.
Resolving deltas: % (/), done.
五、在开发机(72)下载wordpress代码,并push到wordpress仓库中
# LNMP环境版本:nginx/1.8.、PHP 5.5.、MariaDB-5.5.、wordpress-4.7.
# tar xf wordpress-4.7.-zh_CN.tar.gz
# cd wordpress/
# cp wp-config-sample.php wp-config.php
# echo "OK" > status.html
# git init
# git remote add origin git@192.168.5.71:/home/git/repo/wordpress
# git add .
# git commit -m 'wordpress all files'
# git push origin master
六、编写jenkinsfile脚本文件
php代码发布不需要重启服务,如果是多台机器发布到一台机器之后再使用rsync进行同步。
# git clone git@192.168.5.71:/home/git/repo/jenkinsfile
# cd jenkinsfile/
# mkdir team-a/
# cd team-a/
# cat jenkinsfile-php
node ("wordpress-192.168.5.150") { # 指定jenkins的slave节点,也是WEB服务器
stage('git checkout') {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ccf5f140-9a28-49d6-abc8-40bc6c750323', url: 'git@192.168.5.71:/home/git/repo/wordpress']]])
}
stage('copy code') {
sh ''' rm -rf ${WORKSPACE}/.git
mv /data/html/www.leon.com /data/backup/www.leon.com-$(date +%F_%T)
cp -rf ${WORKSPACE} /data/html/www.leon.com '''
}
stage('check web test'){
sh "curl http://www.leon.com/status.html" # 需要在150本地配置/etc/hosts解析
}
}
七、nginx域名配置及hosts文件修改
# mkdir -p /data/html/www.leon.com
# mkdir /data/backup
# cat /etc/nginx/conf.d/www.leon.com.conf
server {
listen ;
server_name www.leon.com;
access_log /var/log/nginx/access.log main;
location / {
root /data/html/www.leon.com;
index index.html index.htm index.php;
try_files $uri $uri/ /index.php$is_args$args;
} location ~ \.php {
root /data/html/www.leon.com;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
}
# nginx -s reload
# echo '192.168.5.150 www.leon.com' >> /etc/hosts
八、配置jenkins pipeline
8.1 创建pipeline的任务并进行配置
8.2 进行构建
默认master分支,无需修改
可以点击查看部署日志
九、pipeline语法
可以自行生成checkout流水线等语法
Jenkins + pipeline + Git + PHP (九)的更多相关文章
- 持续集成高级篇之Jenkins Pipeline git拉取
系列目录 PipeLine中拉取远程git仓库 前面讲自由式任务的时候,我们可以看到通过自由式job里提供的图形界面配置git拉取非常方便的,实际上使用PipeLine也并不复杂.这一节我们展示一下如 ...
- Jenkins + Pipeline + Git + Maven (十)
一.准备环境介绍 192.168.5.71 # gitlab 仓库IP 192.168.5.72 # 开发环境,用于提交代码等 192.168.5.73 # tomcat 部署solo服务站点 192 ...
- 在容器中运行 Jenkins pipeline 任务
持续集成中的 pipeline 技术和 docker 都是当前正在发展的主流方向,当然把它们结合起来在 CI/CD 过程中发挥出更强大的威力也是大家共同的目标.本文将介绍如何在 Jenkins pip ...
- 基于Jenkins Pipeline的ASP.NET Core持续集成实践
最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...
- Jenkins pipeline job 根据参数动态获取触发事件的分支
此文需要有Jenkins pipeline job 的简单使用经验 场景 我们日常的测试函数, 一般是不能仅仅在本地跑的,还需要一个公共的跑测试的环境,作为合并新的PR的依据. 如果用Jenkins ...
- Jenkins pipeline:pipeline 使用之语法详解
一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...
- [持续交付实践] Jenkins Pipeline 高可用设计方法
前言 这篇写好一段时间了,一直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引用了一些别人的内容.使用Jenkins做持续集成/持续交付,当业务达到一定规模的时候,Jenkins本身就很容易成为 ...
- Jenkins Pipeline高级用法-ShareLibrary
1.Github配置 1.1 上传jenkinsfile到github https://github.com/zeyangli/ShareLibrary-jenkins.git 2.Jenkins配置 ...
- Jenkins pipeline shared library
Jenkinsfile https://jenkins.io/doc/book/pipeline/jenkinsfile/ Jenkins Pipeline is a suite of plugins ...
随机推荐
- ue4 FString 中文乱码问题
使用FString出现乱码,最简单的情况,FString Str = "你好"; 这时候就会出现乱码,解决方法是改成这样 FString Str = TEXT("你好&q ...
- 【bzoj4559】[JLoi2016]成绩比较(dp+拉格朗日插值)
bzoj 题意: 有\(n\)位同学,\(m\)门课. 一位同学在第\(i\)门课上面获得的分数上限为\(u_i\). 定义同学\(A\)碾压同学\(B\)为每一课\(A\)同学的成绩都不低于\(B\ ...
- zz自动驾驶多传感器感知的探索
案例教学,把“问题”讲清楚了,赞 Pony.ai 在多传感器感知上积累了很多的经验,尤其是今年年初在卡车上开始了新的尝试.我们有不同的传感器配置,以及不同的场景,对多传感器融合的一些新的挑战,有了更深 ...
- luoguP4069 [SDOI2016]游戏
题意 显然书剖套李超树. 考虑怎么算函数值: 设\((x,y)\)的\(lca\)为\(z\),我们插一条斜率为\(k\),截距为\(b\)的线段. \((x,z)\)上的点\(u\): \(f(u) ...
- Linux学习笔记-第17天 有点赶
第十章开始进度感觉有些快,该加把劲儿了
- mac使用技巧和快捷键
mac快捷键 shift+command+delete 清除缓存 shift+command+. 查看隐藏文件 ctrl+空格 切换输入法 shift+option+F11/F12 精细调节声音 fn ...
- pytest--生成HTML报告
前戏 我们做自动化,测试报告是必不可少的.方便自己查看,也可以供领导查看,一个测试报告就可以说明我们做了哪些事情,pytest-html插件给我们提供了一个很简陋的测试报告,为什么说简陋,因为是真简陋 ...
- python-4-格式化输出
前言 有些小伙伴在打印中乱码或者编码不对,在这里讲格式化输出前,先讲下编码.我们都知道目前主流使用就是utf-8编码. 一.编码简介 编码用来让计算机识别,当然我们都知道计算机只能识别01010101 ...
- 匿名函数和for_each用法
匿名函数,C++11的 for_each 用法 #include <iostream> #include <algorithm> #include "testClas ...
- Composer 的安装
最近在家休息了两个月,本来打算看看书,结果和朋友做了个小项目.项目也差不多接近尾声了,就准备找工作了,朋友推荐我去他们公司做事,不过是使用 PHP 进行开发了.我这一年来使用 Java 进行开发,今后 ...