Прочитать имя среды в многоразовом рабочем процессе github

В нашем репозитории github у нас есть действие github, которое вызывает многоразовый рабочий процесс в среде.

name: Pull Request Merged

concurrency:
  group: ${{ github.ref }}

on:
  pull_request:
    types: [closed]
  
jobs:
  deploy_to_stage:
    if: |
      github.event.pull_request.merged == true && 
      contains(github.event.pull_request.labels.*.name, 'Stage')
    name: Deploy to Stage
    uses: ./.github/workflows/deploy.yml
    with:
      environment: Stage
    secrets: inherit

Рабочий процесс многократного использования выглядит примерно следующим образом:

name: deploy
on:
  workflow_call:
    secrets:
      AWS_ACCESS_KEY_ID:
        required: true
      AWS_SECRET_ACCESS_KEY:
        required: true

jobs:
  deployment:
    runs-on: ubuntu-latest
    steps:
[...]

Как я могу получить доступ к значению имени среды (здесь: «Этап») на шаге повторно используемого рабочего процесса?

Невозможно получить это значение из контекста рабочего процесса. Почему бы не добавить ввод environment в многократно используемый рабочий процесс, получающий значение? Затем вы можете получить к нему доступ из любого места многократно используемого рабочего процесса, используя ${{ inputs.environment }}.

GuiFalourd 17.11.2022 12:29

@GuiFalourd спасибо, мне нравится идея. Если вы превратите свой комментарий в ответ, я с радостью приму его.

Hermann.Gruber 17.11.2022 16:43
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
1
2
136
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать секреты среды для хранения имени этапа в этой среде развертывания, а затем получить доступ к переменной среды в вашем скрипте (например, скрипт bash ) или как компонент действия ${{ env.DAY_OF_WEEK == 'Monday' }} ( ссылка)

Спасибо за ваш ответ! Собственно, это то, что у нас уже было. Но мне не нравится тот факт, что переменные считаются секретными, тогда как они могут быть общедоступными. Это делает выходные данные и т. д. менее читаемыми и делает их излишне трудными для понимания теми, кто не знает ценности секрета.

Hermann.Gruber 17.11.2022 16:41
Ответ принят как подходящий

Невозможно получить это значение из контекста рабочего процесса.

Обходной путь может заключаться в добавлении ввода environment в повторно используемый рабочий процесс, получающий значение:

name: deploy

on:
  workflow_call:
    inputs:
      environment:
        required: true
    secrets:
      AWS_ACCESS_KEY_ID:
        required: true
      AWS_SECRET_ACCESS_KEY:
        required: true

Затем вы можете получить доступ к входному значению из любого места многократно используемого рабочего процесса, используя ${{ inputs.environment }}.

Другие вопросы по теме