shynome / shynome.github.io

8 stars 0 forks source link

记使用 drone 部署 docker 镜像 #5

Open shynome opened 6 years ago

shynome commented 6 years ago

为什么要写这个呢, 是因为踩到坑了

docker 镜像总是无缓存重新构建, 速度就很慢, 看了 plugins/docker 文档也没有发现哪里写着可以设置缓存, 最后是在 issue 里找到如何设置缓存的 https://github.com/drone-plugins/drone-docker/issues?utf8=%E2%9C%93&q=storage_path

下面是自动部署的配置文件了:

pipeline:

  set_tags:
    image: alpine
    commands:
    # 每次上传已存在的镜像需要 2 秒
    - echo "$DRONE_COMMIT_SHA,latest">.tags

  # 缓存镜像构建缓存, 需要管理员开启 trust 选项才能使用 volumes
  restore-cache:
    image: drillster/drone-volume-cache
    restore: true
    mount: [ '/drone/docker' ]
    volumes: [ '/tmp/cache:/cache' ]

  publish:
    image: plugins/docker
    # 镜像名
    repo: repo_name
    # 默认是 docker 官方仓库
    registry: https://index.docker.io/v1/
    # 默认就是 Dockerfile, 可不填
    dockerfile: Dockerfile
    # 用户名账号密码需要在 secrets 里设置
    secrets: [ docker_username, docker_password ]
    # 国内镜像加速
    mirror: https://registry.docker-cn.com
    # 缓存镜像构建缓存
    storage_path: /drone/docker

  # 缓存镜像构建缓存
  rebuild-cache:
    image: drillster/drone-volume-cache
    rebuild: true
    mount: [ '/drone/docker' ]
    volumes: [ '/tmp/cache:/cache' ]

  # 更新镜像需要 3 秒,网络稳定需要 5 秒, 至少需要 8 秒, 感觉超慢
  deploy:
    # 这是我自己写的一个命令行工具, 可以用来部署 php docker 项目, 以后也许会加上其他的功能
    image: shynome/alpine-drone-ci
    volumes: [ 'ssh:/root/.ssh' ]
    commands:
      - deploy docker to $host_name $docker_server_in_host $image_name

  # 向钉钉反馈构建结果
  report:
    image: shynome/alpine-drone-ci
    when:
      status: [ success, failure ]
    commands:
      - deploy report https://oapi.dingtalk.com/robot/send?access_token=$access_token

这次测试部署的时候还遇到另外一个坑, alpine add --no-cahe nodejs 安装的 node 版本是 8.9.3 现在的长期支持版是 8.11.3, 这两个版本在运行 webpack 打包的时候在测试部署的这个项目里: 8.9.3 打包需要 40s , 而 8.11.3 需要 30s , 居然有 10s 的差距, 更新的版本如 10.y.z8.11.3webpack 构建速度只快 1s 2s , 没有太大的差距