quarkshologridledger/.forgejo/workflows/infra.yml
Pedro Faria da Costa 7c4f866606
Some checks failed
CI / tongo-core (push) Failing after 2m41s
CI / web-terminal (push) Successful in 57s
Deploy / build-and-push (push) Failing after 4s
Deploy / deploy (push) Has been skipped
update readme
2026-07-06 00:06:29 +01:00

74 lines
1.9 KiB
YAML

name: Infrastructure
on:
push:
branches: [main]
tags: ['v*']
paths: ['infra/**']
pull_request:
branches: [main]
paths: ['infra/**']
jobs:
plan:
runs-on: docker
steps:
- uses: actions/checkout@v4
- name: Setup OpenTofu
uses: opentofu/setup-opentofu@v1
- name: Set environment target
id: target
run: |
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
echo "env_name=production" >> $GITHUB_OUTPUT
else
echo "env_name=staging" >> $GITHUB_OUTPUT
fi
- name: Init and Plan
working-directory: infra
env:
HCLOUD_TOKEN: ${{ secrets.HCLOUD_TOKEN }}
ENV_NAME: ${{ steps.target.outputs.env_name }}
run: |
tofu init
tofu workspace select $ENV_NAME || tofu workspace new $ENV_NAME
tofu plan -out=tfplan
- name: Upload plan artifact
if: github.event_name == 'pull_request'
uses: actions/upload-artifact@v4
with:
name: tfplan
path: infra/tfplan
apply:
runs-on: docker
needs: plan
if: (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) && github.event_name == 'push'
steps:
- uses: actions/checkout@v4
- name: Setup OpenTofu
uses: opentofu/setup-opentofu@v1
- name: Set environment target
id: target
run: |
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
echo "env_name=production" >> $GITHUB_OUTPUT
else
echo "env_name=staging" >> $GITHUB_OUTPUT
fi
- name: Init and Apply
working-directory: infra
env:
HCLOUD_TOKEN: ${{ secrets.HCLOUD_TOKEN }}
ENV_NAME: ${{ steps.target.outputs.env_name }}
run: |
tofu init
tofu workspace select $ENV_NAME || tofu workspace new $ENV_NAME
tofu apply -auto-approve