Github Действия | условно по названию ветки - PullRequest
1 голос
/ 18 января 2020

В настоящее время я впервые изучаю действия github.

У меня есть процесс, в котором я создаю docker образ и публикую sh его на Docker Hub.

Кажется, все это работает отлично, однако, когда я пу sh, чтобы освоить его сборки и теги с веткой master, я бы хотел, чтобы это помечало веткой latest?

Я знаю Вы можете сделать условия в файле .yml внутри шагов, таких как:

step:
  if: github.ref == 'refs/heads/master'

, но мне было интересно, могу ли я сделать это встроенным, чтобы я мог по существу сказать

build . docker-image-name:${{ github.ref == 'refs/head/master' ? 'latest' : github.ref }}

Я знаю, что это не синтаксис, но это идея,

1 Ответ

0 голосов
/ 18 января 2020

Вы можете сделать это с небольшим количеством сценариев оболочки. Предполагая, что вы знаете, что ссылка всегда будет установлена ​​(то есть вы всегда работаете с веткой или тегом), вы можете написать следующее:

build . docker-image-name:$(ref=${GITHUB_REF%refs/heads/master};echo ${ref:=latest})

Или, если вы хотите что-то менее компактное, но легче для чтения:

build . docker-image-name:$([ "$GITHUB_REF" = refs/heads/master ] && echo "latest" || echo "$GITHUB_REF")

Переменная окружения GITHUB_REF должна быть установлена ​​вашим действием автоматически, если вы работаете с ref.

...