美文网首页
GiteaDroneCi

GiteaDroneCi

作者: 浑元形意太极门 | 来源:发表于2021-05-19 16:32 被阅读0次

    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 ]    
    

    相关文章

      网友评论

          本文标题:GiteaDroneCi

          本文链接:https://www.haomeiwen.com/subject/deipjltx.html