• Gogs+Drone+Docker CI/CD


    Gogs+Drone+Docker CD/CD Demo

    1.准备docker-compose.yml

    本机IP:172.24.16.1

    version: "2"
    services:
      gogs:
        container_name: gogs
        image: gogs/gogs:latest
        ports:
          - 3000:3000
        volumes:
          - ./gogs/data:/data
        environment:
          - TZ=Asia/Shanghai
        restart: always
    
      drone-server:
        image: drone/drone:latest
        container_name: drone-server
        ports:
          - 801:80
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - ./drone/:/var/lib/drone
        environment:
          - DRONE_OPEN=true
          - DRONE_SERVER_HOST=172.24.16.1
          - DRONE_DEBUG=true
          - DRONE_GIT_ALWAYS_AUTH=false
          - DRONE_GOGS=true
          - DRONE_GOGS_SKIP_VERIFY=false
          - DRONE_GOGS_SERVER=http://172.24.16.1:3000
          - DRONE_PROVIDER=gogs
          - DRONE_SERVER_PROTO=http
          - DRONE_RPC_SECRET=7b4eb5caee376cf81a2fcf7181e66175
          - DRONE_USER_CREATE=username:Test,admin:true
          - DRONE_DATABASE_DATASOURCE=/var/lib/drone/drone.sqlite
          - DRONE_DATABASE_DRIVER=sqlite3
          - TZ=Asia/Shanghai
        restart: always
    
      drone-runner-docker:
        image: drone/drone-runner-docker:latest
        container_name: drone-runner-docker
        depends_on:
          - drone-server
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        environment:
          - DRONE_RPC_PROTO=http
          - DRONE_RPC_HOST=172.24.16.1:801 
          - DRONE_RPC_SECRET=7b4eb5caee376cf81a2fcf7181e66175
          - DRONE_RUNNER_CAPACITY=10
          - DRONE_DEBUG=true
          - TZ=Asia/Shanghai
        restart: always
    docker-compose

    2.进入文件目录直接docker compose up -d 进行容器编排启动

    3.数据库选择的是Sqlite3.配置域名以及应用URL

     设置一个管理员账号

    4.建立一个Gogs 仓库

    5.在Drone配置仓库流水线,对仓库信任并保存。

     6.修改web hook改成drone的serever地址

    7.创建一个.NET Core 项目 并添加Gogs的地址 推送触发web hook 进行自动化部署 在根目录需要.drone.yml

    .drone.yml 测试代码

    kind: pipeline
    type: docker
    name: default
    
    steps:
    - name: greeting
      image: alpine
      commands:
      - echo hello
      - echo world

     8.提交到Gogs仓库 测试

    在项目根目录 修改.drone.yml,进行编译部署。

    #当我们向Git仓库Push代码时,会自动触发Web钩子,然后Drone就会从Git仓库Clone代码,再通过项目目录下的.drone.yml配置,执行相应的流水线
    kind: pipeline
    type: docker #流水线类型  还有k8s等 
    name: deployment # 流水线名称
    
    platform:
      os: linux
      arch: amd64
    
    steps:  #流水线执行步骤
      - name: pack
        when:
          branch:
            - master
        image: docker:dind
        environment:
          IMAGE: management
        volumes:
          - name: dockersock
            path: /var/run/docker.sock
        commands:
          - docker build -f ./Dockerfile -t management .
      - name: push
        when:
          branch:
            - master
        image: docker:dind
        environment:
          IMAGE: management
        volumes:
          - name: dockersock
            path: /var/run/docker.sock
        commands:
            - docker stop management && docker rm management
            - docker run -d -p 8087:80 --name management management:latest
    volumes:
      - name: dockersock
        host:
          path: /var/run/docker.sock

     dockerfile如下

    FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
    WORKDIR /app
    EXPOSE 80
    
    FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
    WORKDIR /src
    COPY ["DroneWebApi.csproj", "."]
    RUN dotnet restore "./DroneWebApi.csproj"
    COPY . .
    WORKDIR "/src/."
    RUN dotnet build "DroneWebApi.csproj" -c Release -o /app/build
    
    FROM build AS publish
    RUN dotnet publish "DroneWebApi.csproj" -c Release -o /app/publish
    
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "DroneWebApi.dll"]

    效果图 第一次构建比较慢 后面就非常快了。

  • 相关阅读:
    Informix IDS 11系统办理(918考试)认证指南,第6部分:IDS备份和恢复(1)
    Informix IDS 11体系处置(918检验)认证指南,第 4 局部: 性能调优(7)
    我常用网址整理
    System.Insert 插入字符串
    System.Length 获取字符串或数组的长度
    System.New、System.Dispose 为某个指针申请和释放内存
    System.GetMem、System.FreeMem 申请和释放内存
    学习 TList 类的实现[1]
    学习 TList 类的实现[2]
    System.ReallocMem 重新申请内存
  • 原文地址:https://www.cnblogs.com/cdjbolg/p/16130105.html
Copyright © 2020-2023  润新知