Как выполнять манипуляции со строками при объявлении переменных env в GitHub Actions - PullRequest
1 голос
/ 27 февраля 2020

У меня есть github-репозиторий, подобный следующему

johndoe / hello-world

Я пытаюсь установить следующие переменные среды в github actions

env:
  DOCKER_HUB_USERID: ${{ github.actor }}
  REPOSITORY_NAME: ${GITHUB_REPOSITORY#*\/}
  IMAGE_NAME_CLIENT: "$REPOSITORY_NAME-client"
  IMAGE_NAME_SERVER: "$REPOSITORY_NAME-server"

Мои ожидаемые результаты для этих переменных:

johndoe
hello-world
hello-world-client
hello-world-server

Но я получаю

johndoe
${REPOSITORY_NAME#*\/}
$REPOSITORY_NAME-client
$REPOSITORY_NAME-server

Похоже, выражения не являются оценивается при объявлении env переменных.

Как мне достичь ожидаемого поведения?

1 Ответ

1 голос
/ 28 февраля 2020

Расширение параметра оболочки невозможно вне шага run.

env:
  REPOSITORY_NAME: ${GITHUB_REPOSITORY#*\/}

Создайте дополнительный шаг для вычисления значения в новой переменной.

      - name: Set env
        run: echo ::set-env name=REPOSITORY_NAME::${GITHUB_REPOSITORY#*\/}
      - name: Test
        run: echo $REPOSITORY_NAME

Или создайте пошаговый вывод.

      - name: Set outputs
        id: vars
        run: echo ::set-output name=repo_name::${GITHUB_REPOSITORY#*\/}
      - name: Test set output
        run: echo ${{ steps.vars.outputs.repo_name }}

Когда вычисленная переменная окружения REPOSITORY_NAME, или пошаговый вывод steps.vars.outputs.repo_name, существует, их можно использовать для установки других переменных, подобных этой.

env:
  IMAGE_NAME_CLIENT: ${{ env.REPOSITORY_NAME }}-server
  IMAGE_NAME_SERVER: ${{ steps.vars.outputs.repo_name }}-server
...