问题描述
我有这个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标记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个标签。第二个标签名称现在包含必需的日期时间格式。
解决方案:
- 在现有步骤中删除标签。
- 添加了新步骤以在.tags文件中生成标签。
如果需要在兄弟进程(管道步骤)之间共享数据,则需要通过写入磁盘和从磁盘读取数据来共享此信息。 docker插件将自动从.tags文件读取标签。一个人不能在一个进程中创建环境变量,而不能在同级进程中读取该环境变量。
参考: