#github #release #github-actions #release-management
Вопрос:
Я хочу создать тег выпуска из рабочего процесса с использованием действий GitHub actions/create-release@v1
. Я указываю одно и то же значение для имени тега и имени выпуска, которые v${MAJOR}.${MINOR}.${PATCH}
, где MAJOR
, MINOR
, и PATCH
определены env
в начале файла yaml перед всеми заданиями, подобными этому:
env:
MAJOR: $(cat VERSION.txt | cut -d . -f 1)
MINOR: $(cat VERSION.txt | cut -d . -f 2)
PATCH: $(cat VERSION.txt | cut -d . -f 3)
Вот часть, в которой я вызываю действие создать-освободить:
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # this token is created by Actions, no need to set it up ourselves
with:
tag_name: "v${MAJOR}.${MINOR}.${PATCH}" #THIS DOESN'T CAST MAJOR, MINOR, PATCH
release_name: "v${MAJOR}.${MINOR}.${PATCH}"
Это создает явное имя тега v${MAJOR}.${MINOR}.${PATCH}
. Переменные среды не преобразуются в их значения. Когда я использую v${{ env.MAJOR }}.${{ env.MINOR }}.${{ env.PATCH }}
вместо этого, я получаю неправильно сформированное имя тега.
Когда я повторяю v${MAJOR}.${MINOR}.${PATCH}
, я получаю желаемый результат, что-то вроде v5.9.1
.
Как я могу заставить имя тега использовать значения переменных среды ?
Комментарии:
1. Без раздела, в котором вы устанавливаете эти переменные, это просто предположение
2. Я добавил часть, в которой я определяю мажор, минор и патч
3. Вы не можете так настроить параметры env. Ознакомьтесь с документами здесь: docs.github.com/en/actions/reference/…
4. Если я не ошибаюсь, синтаксис, на который вы указываете, работает на уровне задания, а это означает, что я должен повторять его для каждого задания, одновременно устанавливая ключ env в начале файла yaml, прежде чем какое-либо задание сделает переменные среды доступными для всех заданий. Кроме того, то, как я это сделал, похоже, работает для других действий в том же файле yaml.
Ответ №1:
Благодаря одному из комментариев мне удалось заставить tag_name получить значение v5.9.1
. Я удалил env
ключ в начале файла yaml и создал следующий шаг get_version
:
- name: Get version
id: get_version
run: |
MAJOR=$(cat VERSION.txt | cut -d . -f 1)
MINOR=$(cat VERSION.txt | cut -d . -f 2)
PATCH=$(cat VERSION.txt | cut -d . -f 3)
VERSION="v${MAJOR}.${MINOR}.${PATCH}"
echo "::set-output name=version::${VERSION}"
затем я изменил шаг создания выпуска :
- name: Create release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ needs.get_version.outputs.version }}
release_name: ${{ needs.get_version.outputs.version }}
draft: false
prerelease: false