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 ...
随机推荐
- LInkHashMap源码分析
说LinkHashMap之前,我们先来谈谈什么是LRU算法? 按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常注明的计算机操作系统基础理论得来的:最近使 ...
- 杂项记录 arm64 的一些特性
函数返回值:arm64 规定了整数型返回值放在 x0 寄存器里 sp(栈空间)字节对齐:该临时变量占用 4字节空间:又因为 arm64 下对于使用 sp 作为地址基址寻址的时候,必须要 16byte- ...
- vue操作select获取option值
如何实时的获取你选中的值 只用@change件事 @change="changeProduct($event)" 动态传递参数 vue操作select获取option的ID值 如果 ...
- C++学习七 C++实现add(1)(2)(3)
一.代码实现: class Yoba { public: Yoba(int n) : _n(n) {} Yoba operator() (int n) { return Yoba(_n + n); } ...
- 有关csp自我反思
首先说说体会把 这次前几个都是模拟,最后一道题以为自己可能会结果是半吊子根本不会,导致浪费了三个小时写第五题只有十分 如果不畏惧字符串而专心的写第三题的话,应该结果会不一样把.希望下次能好好考 第一题 ...
- 剑指Offer-5.用两个栈实现队列(C++/Java)
题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 分析: 栈的特点是先进后出,队列的特点则是先进先出. 题目要求我们用两个栈来实现一个队列,栈和队列都有入栈 ...
- IDEA取消SVN关联 , 在重新分享项目
IDEA取消SVN关联,在重新分享项目 安装插件 1.打开Intellij中工具栏File的setting(ctrl+alt+s),选择plugins,在右边搜索框输入“SVN”,搜索.选择“ ...
- 【转】Python zip() 函数
转自:http://www.runoob.com/python/python-func-zip.html 描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回 ...
- JAVA基础系列:ThreadLocal
1. 思路 什么是ThreadLocal?ThreadLocal类顾名思义可以理解为线程本地变量.也就是说如果定义了一个ThreadLocal,每个线程往这个ThreadLocal中读写是线程隔离,互 ...
- 这几款我私藏的Markdown编辑器,今天分享给你
相信很多人都使用 Markdown 来编写文章,Markdown 语法简洁,使用起来很是方便,而且各大平台几乎都已支持 Markdown 语法 那么,如何选择一款趁手的 Markdown 编辑器,就是 ...