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

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

  •  
  •   knightgao2 · 18 小时 8 分钟前 · 952 次点击
    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
    37 条回复    2025-01-21 17:30:29 +08:00
    knightgao2
        1
    knightgao2  
    OP
       18 小时 6 分钟前
    我看其他人都可以的,不知道哪里出问题了,家资不厚,愿意解决的大佬,请一杯咖啡( 50 元)
    knightgao2
        2
    knightgao2  
    OP
       17 小时 57 分钟前
    不一定要死磕 drone 啊,主要是搞了几天想搞明白为啥,有除了 jenkins 的其他推荐也行,主要打包前后端,后续会集成进 k8s
    maichael
        3
    maichael  
       17 小时 54 分钟前
    构建日志?
    defunct9
        4
    defunct9  
       17 小时 52 分钟前   ❤️ 4
    开 ssh ,让我上去看看
    presoul
        5
    presoul  
       17 小时 52 分钟前
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": [
    "https://docker.unsee.tech"
    ]
    }
    EOF

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

    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  
       17 小时 41 分钟前
    去看看 runner output 的日志,就是你 drone-runner-445 这个容器的 docker log ,有没有收到 task, 现在在干什么,在 drone 看看 runner 的状态。好多年没用这东西了。
    knightgao2
        14
    knightgao2  
    OP
       17 小时 39 分钟前
    MyBules
        15
    MyBules  
       17 小时 39 分钟前
    @defunct9 #4 哈哈哈
    knightgao2
        16
    knightgao2  
    OP
       17 小时 38 分钟前
    我这边 drone-runner-445 没有映射出去端口有关系吗,我理解只要能 runner 主动访问到 服务就行,不需要服务去主动访问 runner
    wu67
        17
    wu67  
       17 小时 38 分钟前
    drone.yml 里面的 volumes 定义一下.

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

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

    另外,同推荐直接在 k8s 里用 argo workflow CI/CD 一步到“胃”。有空的时候再去折腾。
    knightgao2
        30
    knightgao2  
    OP
       17 小时 12 分钟前
    @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  
       17 小时 6 分钟前
    你试试把 drone runner 的 3000 端口绑定出来, 实时看一下卡住的时候 runner 在搞什么飞机.
    presoul
        32
    presoul  
       16 小时 55 分钟前
    ci 文件没问题 我帮你试过了
    ![图片描述]( https://ibb.co/LJSHCvk)
    HAWCat
        33
    HAWCat  
       16 小时 55 分钟前
    因为你的 runner 设置了 DRONE_RUNNER_LABELS
    所以你的 .drone.yml 要加上
    `
    node:
    type:docker
    `
    knightgao2
        34
    knightgao2  
    OP
       16 小时 52 分钟前
    @HAWCat 妙手啊,来个微信给你转红包
    HAWCat
        35
    HAWCat  
       16 小时 51 分钟前
    抱歉,没格式化好

    像这样

    HAWCat
        36
    HAWCat  
       16 小时 48 分钟前   ❤️ 1
    @knightgao2 #34 问题解决了就行 😘 哈哈, 红包就不用啦. 恰好我也用过 drone, 有问题可以随时交流
    defunct9
        37
    defunct9  
       16 小时 41 分钟前   ❤️ 1
    不用谢我,我正看 container 日志呢,啥也没抛出,就被人解决掉了。
    - DRONE_RUNNER_LABELS=type:docker
    这个标签的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5792 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:12 · PVG 10:12 · LAX 18:12 · JFK 21:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.