Я пытаюсь развернуть стек с помощью pulumi в своей учетной записи AWS. Мой Deploy.yml выглядит так:
name: Pushes Glue Scripts to S3
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy jobs
uses: pulumi/actions@v5
id: pulumi
env:
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }}
with:
command: up
cloud-url: s3://my-bucket/pulumi/
stack-name: dev
В моем репозитории есть файл стека с именем Pulumi.dev.yaml. Сам файл имеет только соляной код шифрования. Важно сказать, что я настроил серверную часть pulumi в своей корзине S3 с помощью команды: pulumi login s3://my-bucket/pulumi
.
Однако когда я запускаю код развертывания, я получаю следующую ошибку:
StackNotFoundError: code: -2
stdout:
stderr: Command failed with exit code 255: pulumi stack select --stack dev --non-interactive
error: no stack named 'dev' found
err?: Error: Command failed with exit code 255: pulumi stack select --stack dev --non-interactive
error: no stack named 'dev' found
Я считаю, что контейнер, который запускает код pulumi, не видит мой стек. Итак, как я могу это исправить? Есть ли какой-нибудь шаг для проверки при запуске моих действий Github с Pulumi?
Через несколько дней мне удалось найти решение, хотя я считаю, что оно не самое лучшее и подходящее. Мне пришлось реорганизовать весь сценарий развертывания, чтобы добиться того, что мне было нужно. Ниже следует сценарий и пояснения:
name: Pushes Glue Scripts to S3
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
env:
PULUMI_STACK: dev
PULUMI_CONFIG_PASSPHRASE:
GLUE_SCRIPT_LOCATION: ${{ vars.GLUE_SCRIPT_LOCATION }}
jobs:
deploy-glue-jobs:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./glue_jobs
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Pulumi
uses: pulumi/[email protected]
- name: Install Poetry
run: pip install poetry
- name: Installing Project Dependencies
run: |
poetry config virtualenvs.in-project true
poetry install
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.GLUE_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.GLUE_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Start Pulumi
run: |
poetry run pulumi login s3://my-bucket/pulumi
poetry run pulumi stack select dev
poetry run pulumi stack init dev
continue-on-error: true
- name: Deploy Pulumi
run: poetry run pulumi up --yes
pulumi/actions@v5
мне не помог. Тогда мне пришлось разделить весь процесс развертывания сервисов с помощью пулуми.
Сначала мне нужно установить pulumi и настроить учетные данные AWS. Поскольку я использую поэзию для управления своими зависимостями, я добавил шаг для ее установки, настройки и управления. Затем я пообещал запустить pulumi из своей среды с помощью поэтических команд.
Ну, как я уже сказал, это сработало. Но его можно улучшить? Я так считаю. Поэтому, пожалуйста, не стесняйтесь добавлять более подходящий ответ. Пока что я сохраняю это.