GiteaDroneCi

GiteaDroneCi

以下安装和操作均为Docker方式

1.安装gitea

1.安装gitea

docker run -d --privileged=true --name=gitea -p 10022:22 -p 10080:3000 gitea/gitea

访问localhost:10080弹出交互安装页面

修改项
基础URL 宿主机ip:10080
SSH服务域名 宿主机ip

其余选项可以默认,可以自行修改。

2.创建一个测试项目,并通过http方式push到仓库。

我这里随便创建了一个springboot的web项目。

3.生成GiteaOauth

gitea右上角->设置->应用->创建应用

客户端id:5667b0f2-2df0-497d-8c31-37e43f178a26
客户端秘钥:heaoKnIbKmGB3QGpE7NR5QLczaYtwlXA5PYweH3kcPp1

重定向到drone的url上

#我这里drone配置的是80端口
http://192.168.31.79/login

生成rpc秘钥

openssl rand -hex 16 

3.安装drone

 docker run \
    -v /var/run/docker.sock:/var/run/docker.sock \
    --env=DRONE_GITEA_SERVER=http://192.168.31.79:10080/ \
    --env=DRONE_GITEA_CLIENT_ID=5667b0f2-2df0-497d-8c31-37e43f178a26 \
    --env=DRONE_GITEA_CLIENT_SECRET=heaoKnIbKmGB3QGpE7NR5QLczaYtwlXA5PYweH3kcPp1 \
    --env=DRONE_RPC_SECRET=dd6fed184d56520b5c72ff652f941eb2 \
    --env=DRONE_USER_CREATE=username:root,admin:true \
    --env=DRONE_SERVER_HOST=192.168.31.79 \
    --env=DRONE_SERVER_PROTO=http \
    --publish=80:80 \
    --publish=443:443 \
    --restart=always \
    --detach=true \
    --name=drone \
    drone/drone

端口号之类的可以自己改为没被占用的即可,sock必须要挂载,因为drone需要依赖宿主的docker,可以缓存镜像等等。

key value
DRONE_GITEA_SERVER GiteaServerUrl
DRONE_GITEA_CLIENT_ID 应用的客户端id
DRONE_GITEA_CLIENT_SECRET 应用的客户端秘钥
DRONE_RPC_SECRET 应用的Rpc秘钥
DRONE_USER_CREATE 管理员用户名对应Gitea的用户名

参考: https://docs.drone.io/server/provider/gitea/

3.安装runner

 docker run -d \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e DRONE_RPC_PROTO=http \
    -e DRONE_RPC_HOST=192.168.31.79 \
    -e DRONE_RPC_SECRET=dd6fed184d56520b5c72ff652f941eb2 \
    -e DRONE_RUNNER_CAPACITY=2 \
    -e DRONE_RUNNER_NAME=drone-runner \
    -p 3000:3000 \
    --restart always \
    --name runner \
    drone/drone-runner-docker

key value
DRONE_RPC_HOST drone的ip
DRONE_GITEA_CLIENT_ID 应用的客户端id
DRONE_RPC_SECRET 应用的Rpc秘钥

参考:https://docs.drone.io/runner/docker/installation/linux/

4.安装私有镜像仓库

docker run -d -e ENV_DOCKER_REGISTRY_HOST=192.168.31.79 -e ENV_DOCKER_REGISTRY_PORT=5000 -p 9000:80 konradkleine/docker-registry-frontend:v2
 #docker.json添加仓库
  "insecure-registries": [
    "192.168.31.79:5000"
  ]

我这里没有去持久化,自己使用时可以修改,注意端口号。

5.配置Dockerfile

在项目的根目录下创建一个Dockerfile文件

FROM openjdk:8
RUN ls
ADD /target/*.jar app.jar
ENTRYPOINT [ "sh", "-c", "java -jar /app.jar" ]

6.配置.Drone.yml

在项目的根目录下创建一个.Drone.yml文件(有个.别忘了)

kind: pipeline
name: run #流水线名称
type: docker #类型
steps:
  - name: build #步骤名称
    image: maven:3.6.2-jdk-8 #该步骤使用的镜像
    commands:
      - mvn clean package -Dmaven.test.skip #镜像中执行的命令
    volumes:
    - name: cache
      path: /root/.m2  #挂载到宿主机的maven上避免每次都重新下载jar包
    when:
      branch: master #分支
      event: [ push ]  #触发事件
  - name: docker
    image: plugins/docker # 构建docker镜像的镜像
    settings:
      repo: 192.168.31.79:5000/mytest/test #本地镜像仓库,我这里搭建的默认不需要密码
      tags: latest #版本
    volumes:
      - name: docker
        path: /var/run/docker.sock #挂载sock (这里好像可以不挂载之前报错加上的,可以不加试试)
    when:
      branch: master
      event: [ push ]
volumes:
  - name: cache
    host:
      path: /Users/yujian/.m2 #host目录
  - name: docker
    host:
      path: /var/run/docker.sock #宿主机 docker.sock文件

7.授权drone

访问drone的ip即可得到gitea的授权,点击授权此时会自动添加webhook。


在这里插入图片描述

8.激活项目

在drone->setting中激活项目并开启Trusted信任该项目

9.提交代码触发流水线

在这里插入图片描述

都是绿色则构建成功,这里drone执行完毕后会调用system prune -f清理未启动的镜像和容器。。本机操作需谨慎

10.总结

drone所有step在一个工作空间内,可以直接向下传递,比如build阶段的jar包目录为

/drone/src/target/SpringBootTestDemo-0.0.1-SNAPSHOT.jar

其他容器使用目录为./target/SpringBootTestDemo-0.0.1-SNAPSHOT.jar即可获取

补充:
上述的yaml只提供的交付到镜像的步骤还可以添加来运行一个容器

  - name: start
    image: plugins/docker
    commands:
      - docker run -d --name test 192.168.31.79:5000/mytest/test
    volumes:
      - name: docker
        path: /var/run/docker.sock
    when:
        branch: master
        event: [ push ]    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容