diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml new file mode 100644 index 0000000..21576cb --- /dev/null +++ b/.github/workflows/go.yml @@ -0,0 +1,34 @@ +name: Go Build and Format + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + go: + name: Go ${{ matrix.task }} + runs-on: ubuntu-latest + strategy: + matrix: + task: [fmt, build] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v4 + with: + go-version: "^1.20" + - name: Install dependencies + run: go mod tidy + - name: Run go fmt + if: matrix.task == 'fmt' + run: | + if [ -n "$(go fmt ./...)" ]; then + echo "Go files must be formatted with gofmt. Please run 'go fmt ./...' locally." + exit 1 + fi + - name: Run go build + if: matrix.task == 'build' + run: go build ./... diff --git a/.github/workflows/terraform.yml b/.github/workflows/terraform.yml new file mode 100644 index 0000000..939c853 --- /dev/null +++ b/.github/workflows/terraform.yml @@ -0,0 +1,35 @@ +name: Terraform Format and Validate + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + terraform: + name: Terraform ${{ matrix.task }} + runs-on: ubuntu-latest + strategy: + matrix: + task: [fmt, validate] + defaults: + run: + working-directory: infra + steps: + - uses: actions/checkout@v4 + - name: Setup Terraform + uses: hashicorp/setup-terraform@v3 + with: + terraform_version: "1.5.1" + - name: Terraform Format + if: matrix.task == 'fmt' + run: terraform fmt -check + - name: Terraform Init + if: matrix.task == 'validate' + run: terraform init -backend=false + - name: Terraform Validate + if: matrix.task == 'validate' + run: terraform validate