GitHub + circleCI 自动构建/自动部署, 这里略过了单元测试,以部署 laravel 应用为例子

比起 gitlab + ansible + genkins 操作起来节省了很多硬件资源,感谢 微软 免费了 GitHub 私有仓库

1、GitHub 相关

  a、创建 github 仓库(现在可以免费创建私有仓库了,个人项目能满足了)

  b、配置 SSH 公钥,可以走 SSH 渠道免密 拉取代码

2、circleCI 相关

  a、github 登陆 https://circleci.com ,创建一个任务,直接关联 github 的某个仓库

  b、配置此任务构建时 从 GitHub checkout 代码时 的 SSH 凭证,从github 配置的ssh key中选一个即可

  c、配置此任务部署时需要部署的 一对SSH的密钥(随便在哪里生成都行)中的 SSH rsa 私钥,******* 注意 : 将远程服务器需要在 ~/.ssh/authorized_keys 把在circleCI上部署的死要对应的公钥(id_rsa.pub)另起一行追加进去

3、整合代码

  代码中加入.circleci文件夹,并添加配置信息,就简单的实现自动构建和自动部署了

部署后的站点

创建一个仓库并配置部署key

circlrCI 任务后台配置 代码检出需要用到的 github ssh key,直接选一个即可

circleCI 配置能用SSH 私钥登陆远程服务器的 key

circlrCI 配置任务信息

circlrCI 配置任务执行过程中可以执行的脚本

circlrCI 后台能看见任务列表

具体的 构建/部署任务 详情

对于个人站点来说,节省了不少手动操作时间

最后,附上 .circleci 的配置和相关脚本

config.yml

version: 2
jobs:
build:
docker:
- image: circleci/php:7.1-browsers
working_directory: /tmp/workspace
steps:
- run: echo "====================构建开始=============================="
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "composer.json" }}
# 如果没有匹配的缓存则使用最新的缓存
- v1-dependencies-
- run: composer install -n --prefer-dist
# 运行单元测试
# - run: phpunit
- persist_to_workspace:
root: .
paths:
- ./*
- run: echo "====================构建完毕=============================="
deploy:
machine:
timezone:
Asia/Shanghai # 设置上海时区
enabled: true
working_directory: /tmp/workspace
steps:
- run: echo "====================部署开始=============================="
- attach_workspace:
at: /tmp/workspace
- run: pwd && ls -al
- run:
name: Deploy Over SSH
command: ./.circleci/deploy-master.sh
- run: echo "====================部署完毕==============================" workflows:
version: 2
build-and-deploy:
jobs:
- build
- deploy:
requires:
- build
filters:
branches:
only: master

deploy-master.sh

#!/usr/bin/env bash

user=root
host=xxx.xxx.xxx.xxx
src=`pwd`"/"
des=/data/www/api.www.zjj7.com/
now=`date +"%Y-%m-%d %H:%M:%S"` rsync -vzrc --delete --exclude ".git" --exclude ".env" --exclude ".circleci" $src $user@$host:$des ssh $user@$host "sudo chown -R www:www $des" ssh $user@$host "chmod -R 775 $des/bootstrap/cache && chmod -R 775 $des/storage && cd $des && pwd && ls -al" echo "$now update $host $des code"

GitHub + circleCI 自动构建/自动部署 应用的更多相关文章

  1. 用Ant实现Java项目的自动构建和部署

    原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml         本文请勿转载! Ant是一个Apache基金会下的跨平台的构 ...

  2. 用Ant实现Java项目的自动构建和部署(转)

    Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.            ...

  3. 用Ant实现Java项目的自动构建和部署(转)

    Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.            ...

  4. 利用jenkins实现自动构建、部署,提升团队开发效率

    一大早就被群里的同学刷银川下雪的消息,看着我都发冷,突觉一阵凉风裹身,是不是该考虑秋裤了. 偏离主题,正文走起...... 使用jenkins目标:利用其结合maven完成自动构建,并部署到tomca ...

  5. 用Ant实现Java项目的自动构建和部署(转载以作收藏)

    原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml        本文请勿转载! Ant是一个Apache基金会下的跨平台的构件 ...

  6. CentOS6.8下Jenkins+maven+tomcat+git+shell自动构建、部署web应用环境的搭建

    参考资料:http://www.cnblogs.com/cheng95/p/6542036.html http://www.cnblogs.com/software-test/p/7068278.ht ...

  7. Window系统下用Ant实现Java项目的自动构建和部署

    https://blog.csdn.net/xinxin19881112/article/details/7297021 Step 1: 从官网下载Ant包,官网地址http://ant.apache ...

  8. jenkins#自动构建并部署springboot的jar包

    1.GitLab 8.0.0(版本比较低,配置比较简单) 配置 点击项目 --> settings --> web Hooks 2.jenkins配置

  9. Linux下Jenkins与GitHub自动构建Node项目(Vue)

    根据上篇文章<Linux下Jenkins与GitHub自动构建NetCore与部署>,我们知道了Jenkins的强大功能,自动构建,部署了一个NetCore的Web,让开发人员专注于开发, ...

随机推荐

  1. js中JSON.stringify用于自定义的类

    参考:http://stackoverflow.com/questions/7356694/how-to-json-stringify-a-user-defined-class-in-javascri ...

  2. 在python中是没有NULL的,取而代之的是None,它的含义是为空

    在python中是没有NULL的,取而代之的是None,它的含义是为空

  3. string logo online customization

    url: http://www.asciiarts.net/ example :  hello

  4. pyqt(一)安装及配置。

    一:简介 PyQt实现了一个Python模块集.它有超过300类,将近6000个函数和方法.它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac. PyQt采用双 ...

  5. ansible 循环register

    在有循环的task中使用register,register保存的是一个列表,整个属性为results results 是一个单个循环返回的结果的列表 - debug: msg="{{ ite ...

  6. juery 安全加固 集合

    来源 jquery升级坑 2  3  4  5  版本  相关源码分享 新建document    jquery ajax使用说明 最近在iteye的新闻中看到jQuery已经更新到了1.6.1. 和 ...

  7. 解决Android4.3版本下,手机短彩接收中文文件名附件,中文名字的附件无法保存(第二步:解决从从数据库中读取附件文件名,并在长按后保存附件时,中文乱码导致的无法保存附件)

    从第一步我们发现,在第一步修改之后,在短彩绘画界面中中文附件名的附件已无法显示,经过打印堆栈我们发现还是中文乱码在作祟.下面我们接着进行分析,这次我们从UI层往逻辑处理层进行分析.首先我们找到保存附件 ...

  8. springboot date接收参数

    使用springboot框架对日期类型进行操作,遇到无法保持的情况,一开始报400的错误(解决方法),解决之后日期类型无法保存到数据库,为了解决这个问题,设置了个全局date转换器. 配置方法 1.新 ...

  9. 工业通信的开源项目 HslCommunication 介绍

    前言: 本项目的孵化说来也是机缘巧合的事,本人于13年杭州某大学毕业后去了一家大型的国企工作,慢慢的走上了工业软件,上位机软件开发的道路.于14年正式开发基于windows的软件,当时可选的技术栈就是 ...

  10. Java各种排序算法

      Java各种排序算法详解 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有 ...