#docker #continuous-integration #continuous-deployment #drone
#docker #непрерывная интеграция #непрерывное развертывание #drone.io
Вопрос:
У меня есть этот дрон.yml, который работает нормально и генерирует изображение docker. Я создаю изображение docker с 2 тегами.
- SHA фиксации в GitHub.
- Последние
Что я хочу сделать, так это добавить дату и время создания изображения в формате ГГГГ-ММ-DD_HH-ММ к 1-му тегу (SHA фиксации в GitHub).
---
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
Теги изображений в журналах сборки drone:
- /usr/local/bin/ тег docker c692df4346acada797d9541135f37124b15d1183 nonprodazure/graph-base-api: 1600986079-c692df4346acada797d9541135f37124b15d1183
В журналах можно увидеть, что временная метка UNIX (1600986079) добавлена в имя тега docker image. Как я могу изменить значение $ {DRONE_BUILD_FINISHED} — метка времени Unix на формат строки DateTime, понятный для человека (ГГГГ-ММ-DD_HH-ММ)?
Ответ №1:
Это то, что мне нужно было сделать, чтобы получить дату / время в удобочитаемом формате, а не в формате 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
Ниже приведены 2 тега, созданные для изображения docker. Теперь второе имя тега содержит требуемый формат даты и времени.
Решение:
- Удалите теги на существующем шаге.
- Добавлен новый шаг для создания тегов в файле .tags.
Если вам нужно обмениваться данными между родственными процессами (этапы конвейера), вам необходимо обмениваться этой информацией путем записи и чтения с диска. Плагин docker автоматически считывает теги из файла .tags. Невозможно создать переменную среды в одном процессе и прочитать эту переменную среды в процессе-двойнике.
Ссылки: