V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
knightgao2
V2EX  ›  DevOps

drone 构建一直卡住,心力憔悴

  •  
  •   knightgao2 · 1 天前 · 1085 次点击
    drone 也是在站内看到的,觉得 jenkins 太丑了,想换个新的试试。
    ## docker-compose.yml
    services:
    drone:
    image: drone/drone:2
    container_name: drone
    restart: always
    ports:
    - "443:443"
    volumes:
    - ./data:/data
    - ./ssl:/etc/ssl:ro # 将 SSL 证书文件挂载到容器中
    - /etc/timezone:/etc/timezone:ro
    - /etc/localtime:/etc/localtime:ro
    environment:
    - DRONE_USER_CREATE=username:admin,admin:true
    - DRONE_GITEA_SERVER=https://XXXXXX
    - DRONE_GITEA_CLIENT_ID=XXXXXX
    - DRONE_GITEA_CLIENT_SECRET=XXXXX
    - DRONE_RPC_SECRET=970106f1f4bb07fa1ab0589a6df09b51
    - DRONE_SERVER_HOST=drone.XXXXXX.cn
    - DRONE_TLS_CERT=/etc/ssl/your_certificate.pem # 指向证书文件路径
    - DRONE_TLS_KEY=/etc/ssl/your_private_key.key # 指向私钥文件路径
    - DRONE_SERVER_PROTO=https
    - DRONE_LOGS_DEBUG=true

    runner:
    image: drone/drone-runner-docker:latest
    container_name: drone-runner-445
    restart: always
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    - /etc/timezone:/etc/timezone:ro
    - /etc/localtime:/etc/localtime:ro
    environment:
    - DRONE_RPC_PROTO=https
    - DRONE_RPC_HOST=drone.XXXXXX.cn
    - DRONE_RPC_SECRET=970106f1f4bb07fa1ab0589a6df09b51
    - DRONE_RUNNER_CAPACITY=4
    - DRONE_RUNNER_NAME=drone-runner-445
    - DRONE_RUNNER_LABELS=type:docker
    - DRONE_LOGS_DEBUG=true
    - DRONE_RPC_INSECURE=true

    ## drone.yml
    kind: pipeline
    type: docker
    name: default

    steps:
    - name: hello
    image: alpine
    pull: if-not-exists
    commands:
    - echo "Starting build..."
    - pwd
    - ls -la
    - echo "Hello World"
    - echo "Build completed"

    trigger:
    branch:
    - main
    event:
    - push
    - pull_request
    - tag
    - schedule
    - custom
    ## 故障
    可以触发新的 build,但是一直卡住,把对应的包加载到服务器了,但是一直 Step is pending ,卡住了
    ubuntu@VM-4-13-ubuntu:~$ sudo docker image ls
    REPOSITORY TAG IMAGE ID CREATED SIZE
    alpine latest b0c9d60fc5e3 12 days ago 7.83MB
    drone/drone 2 649ae58d4a6a 2 months ago 59.2MB
    drone/drone-runner-docker latest e2de942d714a 15 months ago 26MB
    drone/drone-runner-docker 1 42f73cc80149 2 years ago 25.7MB
    drone/git latest b263385b74bd 2 years ago 198MB
    drone/drone-runner-ssh latest 59c90b8fb99d 2 years ago 19.5MB
    38 条回复    2025-01-22 11:17:58 +08:00
    knightgao2
        1
    knightgao2  
    OP
       1 天前
    我看其他人都可以的,不知道哪里出问题了,家资不厚,愿意解决的大佬,请一杯咖啡( 50 元)
    knightgao2
        2
    knightgao2  
    OP
       1 天前
    不一定要死磕 drone 啊,主要是搞了几天想搞明白为啥,有除了 jenkins 的其他推荐也行,主要打包前后端,后续会集成进 k8s
    maichael
        3
    maichael  
       1 天前
    构建日志?
    defunct9
        4
    defunct9  
       1 天前   ❤️ 4
    开 ssh ,让我上去看看
    presoul
        5
    presoul  
       1 天前
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": [
    "https://docker.unsee.tech"
    ]
    }
    EOF

    重启 docker ,不配置 docker 镜像不行的
    knightgao2
        6
    knightgao2  
    OP
       1 天前
    @maichael 没有构建日志,第一步都没进去
    presoul
        7
    presoul  
       1 天前   ❤️ 1
    这个地址 docker-0.unsee.tech
    knightgao2
        8
    knightgao2  
    OP
       1 天前
    @defunct9 你这让我想起来一位故人
    knightgao2
        9
    knightgao2  
    OP
       1 天前
    @presoul #7 谢谢,我去试试
    defunct9
        10
    defunct9  
       1 天前
    故人江海别,几度隔山川。
    乍见翻疑梦,相悲各问年。
    knightgao2
        11
    knightgao2  
    OP
       1 天前
    大概这个症状,换了 docker 源了,感觉还是没啥动静
    knightgao2
        12
    knightgao2  
    OP
       1 天前
    源应该是生效了,可以拉镜像

    ubuntu@VM-4-13-ubuntu:/opt/docker/drone$ sudo docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    af302e5c37e9: Pull complete
    207b812743af: Pull complete
    841e383b441e: Pull complete
    0256c04a8d84: Pull complete
    38e992d287c5: Pull complete
    9e9aab598f58: Pull complete
    4de87b37f4ad: Pull complete
    Digest: sha256:0a399eb16751829e1af26fea27b20c3ec28d7ab1fb72182879dcae1cca21206a
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest
    ubuntu@VM-4-13-ubuntu:/opt/docker/drone$ cat /etc/docker/daemon.json
    {
    "registry-mirrors": [
    "https://docker-0.unsee.tech"
    ]
    }
    Vegetable
        13
    Vegetable  
       1 天前
    去看看 runner output 的日志,就是你 drone-runner-445 这个容器的 docker log ,有没有收到 task, 现在在干什么,在 drone 看看 runner 的状态。好多年没用这东西了。
    knightgao2
        14
    knightgao2  
    OP
       1 天前
    MyBules
        15
    MyBules  
       1 天前
    @defunct9 #4 哈哈哈
    knightgao2
        16
    knightgao2  
    OP
       1 天前
    我这边 drone-runner-445 没有映射出去端口有关系吗,我理解只要能 runner 主动访问到 服务就行,不需要服务去主动访问 runner
    wu67
        17
    wu67  
       1 天前
    drone.yml 里面的 volumes 定义一下.

    trigger 换成 when. 无关的 event 去掉.
    knightgao2
        18
    knightgao2  
    OP
       1 天前
    @wu67 修改好了
    kind: pipeline
    type: docker
    name: default

    steps:
    - name: hello
    image: alpine
    pull: if-not-exists
    volumes:
    - name: cache
    path: /tmp/cache
    commands:
    - echo "Starting build..."
    - pwd
    - ls -la
    - echo "Hello World"
    - echo "Build completed"

    volumes:
    - name: cache
    host:
    path: /var/lib/cache

    when:
    branch:
    - main
    event:
    - push
    - pull_request
    - custom
    knightgao2
        19
    knightgao2  
    OP
       1 天前
    @knightgao2 #18 觉得大概是噶了
    knightgao2
        20
    knightgao2  
    OP
       1 天前
    @defunct9 #10 来个 wx 尼,给你权限
    defunct9
        21
    defunct9  
       1 天前
    wx: defunct
    knightgao2
        22
    knightgao2  
    OP
       1 天前
    @defunct9 #21 加了
    zidy111
        23
    zidy111  
       1 天前
    argo workflow CI/CD 一起搞定。
    wu67
        24
    wu67  
       1 天前
    volumes 不对. 定义的时候提到顶层. (host path 那个)
    使用的时候(steps 下面的- name: hello 下面的 volumes), 只用到上面定义的名字, 这时的 path 是/drone/src/build .(确实挺绕的...)
    Ayanokouji
        25
    Ayanokouji  
       1 天前
    ci
    研究 https://woodpecker-ci.org/docs/intro 吧,别研究 drone 了。
    或者 gitlab ci
    cd
    没啥好用的
    wu67
        26
    wu67  
       1 天前
    @Ayanokouji 这玩意的优点就是省资源, 但是配置确实有点怪...尤其是挂载目录和路径那玩意. 公司的省钱测试服务器要是配置低, 几乎只有这个选择, gitlab 不够内存跑
    knightgao2
        27
    knightgao2  
    OP
       1 天前
    @wu67 #24 volumes 我理解不定义不会影响我卡住呀,最多没缓存,应该不是这个原因
    wu67
        28
    wu67  
       1 天前
    另外实在受不了各种奇葩配置的话, 可以考虑 express/koa 直接自己简单写几个接口 hook, 然后写个 shell script 744 让程序执行, 同样可以实现 cicd....一样可以启动 docker 镜像.
    justdoit123
        29
    justdoit123  
       1 天前
    完全没用过这个东西。猜测大概率 pending 在资源分配上,比如楼上说的 volumes 。

    解决的思路还是要能找到对应日志出来看一看。要么找错地方,要么 logging 级别打印不够细(不过感觉不太可能)。OP 最后解决了,也分享下历程。

    另外,同推荐直接在 k8s 里用 argo workflow CI/CD 一步到“胃”。有空的时候再去折腾。
    knightgao2
        30
    knightgao2  
    OP
       1 天前
    @knightgao2 #27 kind: pipeline
    type: docker
    name: default

    volumes:
    - name: cache
    host:
    path: /var/lib/cache

    steps:
    - name: hello
    image: alpine
    pull: if-not-exists
    volumes:
    - name: cache
    path: /drone/src/build
    commands:
    - echo "Starting build..."
    - pwd
    - ls -la
    - echo "Hello World"
    - echo "Build completed"

    when:
    branch:
    - main
    event:
    - push
    - pull_request
    - custom
    等了几分钟还是噶了
    wu67
        31
    wu67  
       1 天前
    你试试把 drone runner 的 3000 端口绑定出来, 实时看一下卡住的时候 runner 在搞什么飞机.
    presoul
        32
    presoul  
       1 天前
    ci 文件没问题 我帮你试过了
    ![图片描述]( https://ibb.co/LJSHCvk)
    HAWCat
        33
    HAWCat  
       1 天前
    因为你的 runner 设置了 DRONE_RUNNER_LABELS
    所以你的 .drone.yml 要加上
    `
    node:
    type:docker
    `
    knightgao2
        34
    knightgao2  
    OP
       1 天前
    @HAWCat 妙手啊,来个微信给你转红包
    HAWCat
        35
    HAWCat  
       1 天前
    抱歉,没格式化好

    像这样

    HAWCat
        36
    HAWCat  
       1 天前   ❤️ 1
    @knightgao2 #34 问题解决了就行 😘 哈哈, 红包就不用啦. 恰好我也用过 drone, 有问题可以随时交流
    defunct9
        37
    defunct9  
       1 天前   ❤️ 1
    不用谢我,我正看 container 日志呢,啥也没抛出,就被人解决掉了。
    - DRONE_RUNNER_LABELS=type:docker
    这个标签的问题。
    jianrenjun
        38
    jianrenjun  
       15 小时 1 分钟前
    最近用的 gitea 的 action 还可以 直接改改 github action 的配置就能用已经在公司内部小范围替换 jenkins(他太吃内存了)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1162 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:19 · PVG 02:19 · LAX 10:19 · JFK 13:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.