无人机 - 使用 drone.yml 自定义日期时间字符串格式的名称 docker 图像标签
Drone - Name docker image tag with customize datetime string format using drone.yml
我有这个 drone.yml,它 运行 很好并且生成了一个 docker 图像。我正在构建带有 2 个标签的 docker 图像。
- GitHub.
中提交的 SHA
- 最新
我想要做的是以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 tag c692df4346acada797d9541135f37124b15d1183 nonprodazure/graph-base-api:1600986079-c692df4346acada797d9541135f37124b15d1183
您可以在日志中看到 docker 图像标签名称中附加了 UNIX 时间戳 (1600986079)。如何将 ${DRONE_BUILD_FINISHED} - Unix 时间戳的值更改为 DateTime 人类可读的字符串格式 (YYYY-MM-DD_HH-MM)?
这是我需要做的,以 human-readable 格式而不是 UNIX 格式获得 date/time。
---
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 个标签。第二个标签名称现在包含所需的 date-time 格式。
解决方案:
- 删除现有步骤中的标签。
- 添加了在 .tags 文件中生成标签的新步骤。
如果您需要在兄弟进程(流水线步骤)之间共享数据,您需要通过写入磁盘和从磁盘读取来共享此信息。 docker 插件会自动从 .tags 文件中读取标签。不能在一个进程中创建环境变量并在同级进程中读取该环境变量。
参考文献:
我有这个 drone.yml,它 运行 很好并且生成了一个 docker 图像。我正在构建带有 2 个标签的 docker 图像。
- GitHub. 中提交的 SHA
- 最新
我想要做的是以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 tag c692df4346acada797d9541135f37124b15d1183 nonprodazure/graph-base-api:1600986079-c692df4346acada797d9541135f37124b15d1183
您可以在日志中看到 docker 图像标签名称中附加了 UNIX 时间戳 (1600986079)。如何将 ${DRONE_BUILD_FINISHED} - Unix 时间戳的值更改为 DateTime 人类可读的字符串格式 (YYYY-MM-DD_HH-MM)?
这是我需要做的,以 human-readable 格式而不是 UNIX 格式获得 date/time。
---
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 个标签。第二个标签名称现在包含所需的 date-time 格式。
解决方案:
- 删除现有步骤中的标签。
- 添加了在 .tags 文件中生成标签的新步骤。
如果您需要在兄弟进程(流水线步骤)之间共享数据,您需要通过写入磁盘和从磁盘读取来共享此信息。 docker 插件会自动从 .tags 文件中读取标签。不能在一个进程中创建环境变量并在同级进程中读取该环境变量。
参考文献: