很久以前就想自己建个drone来实现CI/CD
原因是在公司里面通常都已经建好了,不然就是有MIS/SRE会去负责
当万年老N是没机会在公司负责这个项目的
而且用Drone还要学Docker,碰到就觉得好累
最近好不容易挤出时间来完成这个项目,没想到是蛮简单的
这样又可以在履历上面多一个技能可以跟面试官嘴炮了
是一套用Go撰写的CI/CD工具,利用Docker部署Server或Runner
其他也有很多CI/CD工具,例如像是Jenkins
macOS+homebrew
ngrok
ngrok:
一个reverse proxy服务,可以透过注册并在你本机启动并选择要对外的port後就可以得到一组对外的domain address
brew install ngrok
3.drone+github
4.docker
在你的termainl上启动ngrok
ngrok http 80
1.网页右上头像>Settings>Develop Settings>OAuth Apps
2.New OAuth Apps
3.内容填如图
Homepage URL:你开ngrok後给你的Forwarding
注意!!!!!!!!
Authorization callback URL:Forwarding後面要加上 /login
4.新增完成,github页面别关,记住你的Client ID & Client secrets,接下来要写docker-compose.yaml会用到
Client ID:填入DRONE_GITHUB_CLIENT_ID
Client secrets:填入DRONE_GITHUB_CLIENT_SECRET
注意你的drone-server和drone-runner下的environment会不一样,port可以改
drone-server:
image: drone/drone:1
container_name: drone-server
ports:
- 80:80
volumes:
- /var/lib/drone:/var/lib/drone/
restart: always
environment:
- DRONE_SERVER_HOST=4d9b-106-105-96-97.ngrok.io
- DRONE_SERVER_PROTO=https
- DRONE_RPC_SECRET=0387ee7de7e33a542182462a07a475ee
- DRONE_GITHUB_CLIENT_ID=10b0f7ccd02334293794
- DRONE_GITHUB_CLIENT_SECRET=522839c9aaee53dd52095bedf7e16e2bb3786e99
drone-runner:
image: drone/drone-runner-docker:1
container_name: drone-runner
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_HOST=drone-server
- DRONE_RPC_PROTO=http
- DRONE_RPC_SECRET=0387ee7de7e33a542182462a07a475ee
- DRONE_RUNNER_CAPACITY=2
在termianl上输入
openssl rand -hex 16
---
kind: pipeline
name: testing
steps:
- name: backend
image: golang:1.15
commands:
- go build
- go test
在这个阶段你没有的image会自动pulling
9ac8-106-105-96-97.ngrok.io
重启ngrok後,webhook没有自动触发
原因是你在第一次完成整个流程後,你的project webhook会自动被设定好
第二次要使用的时候要进到你的project里面重新设定ip address
不过这是实验才会有这个问题,通常实际上主机的ip address是固定的
1.到github.com/yourID/yourProject
2.选择setting>webhook>edit
3.payload URL 贴上你重启後的ngrok address
4. update webhook
感恩网路大神,里面的设定档都是参考来的,还有些设定要去仔细研读
标题说是五分钟有点耸动拉XD
会了之後是五分钟就可以启动没错
不过在这之前大概花了一天认真看过中间的步骤跟实作
有一些config是范例,比较机敏的东西填上去是怕看到的人不知道怎麽填写设定
不过那些hex或是router都是用完就丢的,还有不重要的repo
实际上真的在做的时候要小心这些东西不要泄漏出去,不然就...
什麽是市场区隔? 最早看到市场区隔这个词的时候 一直不知道算是名词还是动词 後来多看几次文章後慢慢了...
AirPlay 自 iOS 5 开始在 iPhone 和 iPad 推出後,一直以简单有用着称。Ai...
必备条件 以及安装 PHP、Composer和 Heroku CLI。 Heroku 使用者帐户 像...
其实只是拖延症点到满等的我,说是主角其实只是拖延症发作 有看过某些YT频道的应该有听过这段话 什麽样...
网站+网页绪论 浏览器介绍(推Firefox跟Edge) 上图取自台科大资安社课教材 浏览网页发生的...