Drone-使用drone.yml使用自定义日期时间字符串格式命名docker映像标签

问题描述

我有这个drone.yml,它运行良好并生成了docker映像。我正在构建带有2个标签的Docker映像。

  1. 在GitHub中提交的SHA。
  2. 最新

我想要做的是将图像创建的日期和时间以YYYY-MM-DD_HH-MM格式附加到第一个标签(在GitHub中为SHA提交)。

---
name: api-graph-base
kind: pipeline
type: docker

steps:

  - name: push-azure-nonprod
    when:
      event:
        - push
        - pull_request
      branch:
        - master
    image: plugins/docker
    settings:
      username: abc
      password:
        from_secret: xyz
      repo: nonprodazure/graph-base-api
      build_args:
        - LOG_LEVEL=debug
      registry: nonprodregistry.azurecir.io
      custom_dns: [100.100.100.100,99.99.99.99]
      tags:
        - '${DRONE_BUILD_FINISHED}-${DRONE_COMMIT}'
        - latest
      dockerfile: Dockerfile

无人机构建日志中的图像标签:

  • / usr / local / bin / docker标记c692df4346acada797d9541135f37124b15d1183 nonprodazure / graph-base-api: 1600986079 -c692df4346acada797d9541135f37124b15d1183

您可以在日志中看到UNIX时间戳( 1600986079 )附加在docker映像标签名称中。如何将$ {DRONE_BUILD_FINISHED}-Unix时间戳记的值更改为DateTime人类可读的字符串格式(YYYY-MM-DD_HH-MM)?

解决方法

这是我需要做的事情,以便以人类可读的格式而不是UNIX格式获取日期/时间。

---
name: api-graph-base
kind: pipeline
type: docker

steps:
  - name: send-tags-to-tags-file
    image: node
    when:
      event:
        - push
        - pull_request
    commands:
      - echo -n "$(date +'%Y-%m-%d_%H-%M')_${DRONE_COMMIT},latest" > .tags

  - name: push-azure-nonprod
    when:
      event:
        - push
      branch:
        - master
    image: plugins/docker
    settings:
      username: abc
      password:
        from_secret: xyz
      repo: nonprodazure/graph-base-api
      build_args:
        - LOG_LEVEL=debug
      registry: nonprodregistry.azurecir.io
      custom_dns: [100.100.100.100,99.99.99.99]
      dockerfile: Dockerfile

以下为docker映像创建的2个标签。第二个标签名称现在包含必需的日期时间格式。

enter image description here

解决方案:

  • 在现有步骤中删除标签。
  • 添加了新步骤以在.tags文件中生成标签。

如果需要在兄弟进程(管道步骤)之间共享数据,则需要通过写入磁盘和从磁盘读取数据来共享此信息。 docker插件将自动从.tags文件读取标签。一个人不能在一个进程中创建环境变量,而不能在同级进程中读取该环境变量。

参考:

  1. using custom generated tags for docker images.
  2. plugins/docker configuration multiple tags using .tags file

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...