Git / Github
Git 常用命令
- git clone url
- git branch : 查看当前分支 -a查看所有本地,-r查看所有远程
- git branch -vv : 查看本地与remote关联关系
- git branch -d/-D branch名字: 删除branch,必须没有被checkout
- git pull : 拉取所有分支
- git checkout -b 本地分支名x origin/远程分支名x : 通过remote分支新建本地分支并切换到分支
- git diff : 查看所有被修改的文件
- git checkout HEAD -- 文件路径文件名 :reset一个文件
- git reset --hard origin/master : reset project with remote origin/master
- git reset --soft HEAD^ : 回滚一次commit,保留本地代码
- git commit -a -m 'commit message' : 提交所有改动到本地仓库
- git log master ^origin/master: git 查看没有push的commit
- git push : https://blog.csdn.net/sky1203850702/article/details/41344131
- git push --set-upstream origin test : 将test分支push到远程,并且关联
- git branch --set-upstream-to origin/branch-name : 重新设置关联
- git merge origin/name : 将远程分支merge到本地当前分支
- git rebase origin/develop : 需要先提交
Drone
Gatting Start
- Drone是基于Docker和git的pipeline服务
- 用于Build/Test/Deploy等场景
- 工作流的Job是通过启动不同等docker容器来完成
- Drone的插件也是预定义的容器
安装
- version 0.8
- 在github -> develop settings -> new OAuth app
- callback : http://192.168.2.153:8000/authorize
- 得到client id和secret
- docker pull drone/drone:0.8
- 编辑docker-compose.yml
- https://0-8-0.docs.drone.io/installation/
- DRONE_SECRET用于agent连接service的密码
- DRONE_OPEN=true/DRONE_ORGS=airwallex
- 设置开启organization成员自动注册drone
- 设置好client id和secret就能成功用git hub账号登陆,但是如果同时设置这项true,并设置来orgs,那就需要organization approve才能登陆
- DRONE_ADMIN=jude-sheng-awx : 设置drone的管理员,只有管理员才能把项目设置成Trusted,然后才能正常使用drone
- volumes:
- drone-server-data:/var/lib/drone/ : 设置卷标,你不知道数据库数据被放在哪里
- ./tmp/drone/data:/var/lib/drone/ : 这种方式更清晰
- 在github -> develop settings -> new OAuth app
.drone.yml
-
Doc : https://docs.drone.io/
-
workspace
- base: 设置pipelins启动的容器的volume, 让所有容器可以通过这个volume共享数据
- path: 设置drone的工作目录,相对与base的相对路径,代码会被拉到这里
-
pipeline
- image : job需要启动的镜像
- commands
- pipeline的commands 会使用--endpoint来覆盖ENDPOINT命令。可以实现传递profiles
- 无法自定义docker run 命令
-
- sleep 10 : 让job等待10秒钟后再执行,比如等待service就绪
- pull true : 默认不会每次重新拉新的image,需要true
- group :job是同步执行的,但是同一个group的job是并行执行的
- detach: true pipeline级别启动服务
- 无法公开端口,否则在多个agent并行多时候产生端口冲突
-
plugins
- 插件不能执行commands
- 插件市场 :http://plugins.drone.io/
- git插件是默认的,不需要配置
-
when :执行job/plugins的条件
- branch: master
- status: [success, failure] : 在pipeline执行成功或者失败后执行
- event : 执行job的事件类型
- tag/push/pull_request
- deploy命令对应deployment事件
- environment : 执行job的环境
- 可以给不同环境配置不同job
- tag
- docker image 的tag, 支持通配符
- instance :指定drone的instance
-
services
- pipeline所需要的依赖,比如集成测试job的依赖,集成测试job设置成定时任务比较好
- services在pipeline之前执行
- service和step内部都使用docker network实现容器通讯,可以直接通过alias访问,alias就是service或者step的名字:比如my-postgress:5432
- service不能执行commands
- environment:
- 设置服务的环境变量,可以用来设置端口,账号密码等
-
matrix
- 为所有矩阵的组合启动独立的job
- include
- 为特定矩阵组合启动各子的job
- job通过${Matrix_Name}来使用矩阵变量
plugins
- plugins/docker
- 用于打包镜像
- tags指定多个
- 用于将镜像从dev deploy到prod
- 使用when deployment event和environment条件
- 命令: drone deploy repo 某次构建的序号 environment
- 用于打包镜像
与Jenkins对比
- Drone
- 部署运维简单
- 使用简单,学习成本低
- Docker + Github
- 语言无关
- Jenkins
- Java base 插件
- 生态庞大
- 功能全面
Jenkins
来源:oschina
链接:https://my.oschina.net/u/4257185/blog/3544914