Когда вы используете контекст run
, вы вызываете оболочку. (Для хостов macOS и Linux это /bin/bash
.) Так что для этого шага:
- name: Tag & Push docker image
run: |
docker push myrepo/myapp:${GITHUB_SHA::8}
вы используете оболочку и ${GITHUB_SHA::8}
будет передано ей буквально. Затем оболочка проанализирует это и интерполирует с обычными правилами синтаксического анализа.
Однако, когда вы указываете действие для запуска вместо сценария для выполнения, вы просто вызываете другая программа. Там нет оболочки, поэтому нет ничего, что будет анализировать ${GITHUB_SHA::8}
.
Вы можете использовать ${{ ... }}
для ссылки на вещи в доступных контекстах . Например, есть контекст env
, который открыт для вас, чтобы установить пары ключ / значение и использовать их повторно. (Но контекст env
не является частью bash
shell , поэтому, например, ${{ env.PWD }}
не существует.)
Там является отображением, однако между переменными окружения github
context и , которые устанавливаются, когда вы do запускаете оболочку . Переменная контекста ${{ github.sha }}
будет установлена в вашей оболочке как переменная окружения $GITHUB_SHA
.
Так что в вашем примере это должно работать:
- name: create release
uses: some-custom-action
with:
release_version: "1.0.0-${{ github.sha }}"