В нашем репозитории 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:
[...]
Как я могу получить доступ к значению имени среды (здесь: «Этап») на шаге повторно используемого рабочего процесса?
@GuiFalourd спасибо, мне нравится идея. Если вы превратите свой комментарий в ответ, я с радостью приму его.
Вы можете использовать секреты среды для хранения имени этапа в этой среде развертывания, а затем получить доступ к переменной среды в вашем скрипте (например, скрипт bash ) или как компонент действия ${{ env.DAY_OF_WEEK == 'Monday' }}
( ссылка)
Спасибо за ваш ответ! Собственно, это то, что у нас уже было. Но мне не нравится тот факт, что переменные считаются секретными, тогда как они могут быть общедоступными. Это делает выходные данные и т. д. менее читаемыми и делает их излишне трудными для понимания теми, кто не знает ценности секрета.
Невозможно получить это значение из контекста рабочего процесса.
Обходной путь может заключаться в добавлении ввода 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 }}
.
Невозможно получить это значение из контекста рабочего процесса. Почему бы не добавить ввод
environment
в многократно используемый рабочий процесс, получающий значение? Затем вы можете получить к нему доступ из любого места многократно используемого рабочего процесса, используя${{ inputs.environment }}
.