博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Jenkins进行持续部署(PHP代码)
阅读量:6158 次
发布时间:2019-06-21

本文共 3839 字,大约阅读时间需要 12 分钟。

在docker项目中单机构建jenkins使用gitlab的webhook对项目进行持续部署注意本次项目是php项目没有build和test部分,至于test部分我们下一节进行,本次只是进行一个提交部署的功能,本届不会讲到使用docker进行交付的方式

项目结构说明

screenshots.png

其中data/jenkins 是存放状态jenkins的目录

CI-server.yml是jenkisn启动结构

version: "3.0"services:  jenkins:    image: jenkins:latest    environment:       DOCKER_URL: ''    volumes:      - "/etc/localtime:/etc/localtime:ro"#备份数据      - "./data/jenkins:/var/jenkins_home"      - "./dockerfiles/jenkins/.ssh:/var/jenkins_home/.ssh"    ports:      - "8999:8080"#      - "50000:50000"

docker-compose 编排的项目结构

docker-production.yml和docker-compose.yml的差异只是关闭了安全端口,使用了一些线上的配置文件而已

version:  '3.2'services:  nginx:    image: nginx:1.13.3    ports:      - "80:80"    links:      - "php-fpm:php-fpm"    volumes:#网站目录      - ./app:/var/www/html      - ./dockerfiles/nginx/conf.d:/etc/nginx/conf.d:ro#日志文件      - ./logs/nginx:/var/log/nginx      - /etc/localtime:/etc/localtime:ro    restart: always    command: nginx -g 'daemon off;'##mysql db  mysql-db:    image: mysql:5.7    volumes:      - ./data/mysql:/var/lib/mysql:rw      - ./logs/mysql:/var/lib/mysql-logs:rw      - ./dockerfiles/mysql/conf.d:/etc/mysql/conf.d:ro      - /etc/localtime:/etc/localtime:ro    restart: always    environment:        MYSQL_ROOT_PASSWORD: zhaojun        MYSQL_DATABASE: package_v1        MYSQL_USER: zhaojun        MYSQL_PASSWORD: zhaojun  redis-db:    build: ./dockerfiles/redis    restart: always    volumes:      - ./data/redis:/data      - /etc/localtime:/etc/localtime:ro  php-fpm:    build: ./dockerfiles/php/    restart: always    environment:        TP_APP_DEBUG: 0        APP_DEBUG: 1        APP_DOCKER_DEV: 0        MYSQL_HOST: mysql-db        MYSQL_DATABASE: zushouyou_v1        MYSQL_USER: root        MYSQL_PASSWORD: zhaojun        MYSQL_PORT: 3306    volumes:#网站目录      - ./app:/var/www/html:rw#配置文件      - ./dockerfiles/php/php.ini:/usr/local/etc/php/php.ini:ro      - ./dockerfiles/php/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro      - /etc/localtime:/etc/localtime:ro#挂载站点日志      - ./logs/php-fpm:/var/log/php-fpm:rw    depends_on:      - mysql-db      - redis-db    links:      - mysql-db:mysql-db      - redis-db:redis-db    command: php-fpm##job  takser:    image: node:6.9    environment:        MYSQL_HOST: mysql-db        SERVER_HOST: server    volumes:      - ./app/node-task:/task      - /etc/localtime:/etc/localtime:ro    links:      - mysql-db:mysql-db      - redis-db:redis-db      - nginx:server    working_dir: /task    command: /bin/bash -c "npm install && node ./index.js"##composer构建工具  composer:    image: composer:1.4.2    volumes:    #网站目录      - ./app:/app:rw    working_dir: /app/webroot    command: composer install##前端工具  bower:    image: digitallyseamless/nodejs-bower-grunt    volumes:      - ./app:/app:rw    working_dir: /app/webroot    command: bower install

Step1,单机服务器部署jenkins和docker编排的项目

这里我们把服务器命令为:zushouyou

服务器预先需要进行

  • 1.优化
  • 2.安装 git docker
  • 3.clone 项目下来
git clone project..

screenshots.png

Step2,克隆完成项目以后启动jenkins

docker-compose -f CI-server.yml up -d

screenshots.png

如果发现jenkins容器挂了,查看日志,添加权限,重启容器就行了

screenshots.png

Step3,配置Jenkins

在CI-server.yml中我们映射了 8999->8080端口,所以我们只要访问这个端口就可以访问到jenkins了,如果服务拒绝,请检查服务器商安全组,iptables规则,firewalld等防火墙。

然后我们就能访问欢迎界面了。

screenshots.png

查看初始密码,这里我们的容器id是 f8

docker exec -it f8 bash -c 'cat /var/jenkins_home/secrets/initialAdminPassword'60e74c836b25402581cb0daae95b65a4

screenshots.png

首次进入,需要先安装插件,这里我们选择手工的去选择一些插件就行了,因为我们如果只是集成的话用不了多少插件

screenshots.png

插件选择我就不截图说明了,build tools 和pipline里面得插件可以先取消。

比需要的插件如下

screenshots.png

在安装完成之后配置用户名和账号,最后还需要安装一些第三方的插件

screenshots.png

系统管理>管理插件
1.ssh,这个插件便于到远程ssh主机上执行命令
screenshots.png

2.webhook,这里我们是gitlab其他同理

screenshots.png

在安装完成以后,最好还是重启一下,避免出现问题

screenshots.png

Step4,配置Job

系统设置先配置SSH Server和Git的SSH

先让宿主机能通过ssh进行pull

1.生成rsa

screenshots.png

2.添加到git网站公钥

screenshots.png

3.如果能直接pull,说明OK了

screenshots.png

4.配置jenkins的server

配置SSH主机

screenshots.png

5.完事后回到主页开始job吧

  • 1.

screenshots.png

  • 2.

screenshots.png

  • 3.

screenshots.png

  • 4.执行构建

screenshots.png

最后就只配置一下通知了,

gitlab的webhook配置一下

$RUL/generic-webhook-trigger/invoke?token=fuck

screenshots.png

这样就完成了一次自动化部署的过程。请记住,这篇文章只是让我们了解了一些简单的原理,其中包含build,test最后才是ci,如果我们前面的工作不去实现做,这样并没有什么意义,只是做了一个自动化的脚本。

转载地址:http://xssfa.baihongyu.com/

你可能感兴趣的文章
Python异步IO --- 轻松管理10k+并发连接
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
登记申请汇总
查看>>
Android Jni调用浅述
查看>>
CodeCombat森林关卡Python代码
查看>>
(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
Spring常用注解
查看>>
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>