name: Deploy infrastructure on: check_suite: types: [completed] workflow_dispatch: jobs: nixos: name: Deploy NixOS systems runs-on: ubuntu-latest concurrency: group: deploy cancel-in-progress: true # https://github.com/sellout/bash-strict-mode/commit/9bf1d65c2f786a9887facfcb81e06d8b8b5f4667 if: github.event.check_suite.app.name == 'Garnix CI' && github.event.check_suite.conclusion == 'success' && github.event.check_suite.latest_check_runs_count >= 12 && github.event.check_suite.head_branch == 'main' steps: - uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v9 - name: Setup local Nix cache uses: DeterminateSystems/magic-nix-cache-action@v2 - name: Connect to Tailscale uses: tailscale/github-action@v2 with: oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }} oauth-secret: ${{ secrets.TS_OAUTH_SECRET }} tags: tag:gha - name: Copy known_hosts run: | set -eux [ ! -d ~/.ssh ] && mkdir -p ~/.ssh cp .known_hosts ~/.ssh/known_hosts - name: Run deploy run: | nix develop --accept-flake-config \ --command just deploy-all #opentofu: # name: Apply OpenTofu plan # needs: nixos # runs-on: ubuntu-latest # concurrency: # group: tofu # cancel-in-progress: true # steps: # - uses: actions/checkout@v4 # - name: Install Nix # uses: DeterminateSystems/nix-installer-action@v9 # - name: Setup local Nix cache # uses: DeterminateSystems/magic-nix-cache-action@v2 # - name: Setup OpenTofu # uses: opentofu/setup-opentofu@v1 # with: # cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }} # - name: Setup OpenTofu cache # uses: terraform-cache/terraform-cache@v1 # - name: Run plan # run: nix run .#plan # - name: Apply # run: tofu apply -auto-approve