name: Test on: push: branches: - main pull_request: branches: - main jobs: tests: strategy: matrix: arch: ['linux-amd64', 'linux-arm64', 'darwin-amd64', 'windows-amd64'] runs-on: ${{ matrix.arch }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup go uses: actions/setup-go@v5 with: go-version-file: 'go.mod' - name: Install Hashicorp Vault (on Linux) if: matrix.arch != 'darwin-amd64' && matrix.arch != 'windows-amd64' run: | ./script/vault-install.sh - name: Install Hashicorp Vault (on Windows) if: matrix.arch == 'windows-amd64' run: | & ".\scripts\vault-install.ps1" shell: pwsh - name: Start Vault in background (on Unix) id: start-vault if: matrix.arch != 'windows-amd64' env: VAULT_ADDR: "https://127.0.0.1:8200" VAULT_SKIP_VERIFY: "true" run: | ./script/vault-start.sh - name: Start Vault in background (on Windows) id: start-vault-windows if: matrix.arch == 'windows-amd64' shell: pwsh env: VAULT_ADDR: "https://127.0.0.1:8200" VAULT_SKIP_VERIFY: "true" run: | .\script\vault-start.ps1 - name: Setup Vault test data (on Unix) if: matrix.arch != 'windows-amd64' env: TEST_VAULT_KEY: ${{ vars.TEST_VAULT_KEY }} TEST_VAULT_VALUE: ${{ vars.TEST_VAULT_VALUE }} VAULT_ADDR: "https://127.0.0.1:8200" VAULT_TOKEN: root VAULT_SKIP_VERIFY: "true" run: | ./script/vault-setup.sh - name: Setup Vault test data (on Windows) if: matrix.arch == 'windows-amd64' env: VAULT_ADDR: "https://127.0.0.1:8200" VAULT_TOKEN: root VAULT_SKIP_VERIFY: "true" shell: pwsh run: | .\script\vault-setup.ps1 - name: Vet run: go vet -v ./... - name: Test env: TEST_VAULT_KEY: ${{ vars.TEST_VAULT_KEY }} TEST_VAULT_VALUE: ${{ vars.TEST_VAULT_VALUE }} VAULT_ADDR: "https://127.0.0.1:8200" VAULT_TOKEN: root VAULT_SKIP_VERIFY: "true" run: | go test -v ./... - name: Stop Vault (on Unix) if: always() && matrix.arch != 'windows-amd64' run: | if [ -f vault.pid ]; then kill $(cat vault.pid) 2>/dev/null || true rm -f vault.pid fi - name: Stop Vault (on Windows) if: always() && matrix.arch == 'windows-amd64' shell: pwsh run: | .\script\vault-stop.ps1