name: CI on: push: branches: - main paths-ignore: - '.github/**' pull_request: branches: - main jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: 1.22.x - run: go mod download - run: go install github.com/a-h/templ/cmd/templ@v0.2.771 - run: make generate-templ - uses: sqlc-dev/setup-sqlc@v4 with: sqlc-version: '1.27.0' - run: sqlc vet - run: sqlc generate - name: Lint uses: golangci/golangci-lint-action@v3 with: version: v1.54 skip-pkg-cache: true test: name: Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: 1.22.x - run: go mod download - run: go install github.com/a-h/templ/cmd/templ@v0.2.771 - run: make generate-templ - uses: sqlc-dev/setup-sqlc@v4 with: sqlc-version: '1.27.0' - run: sqlc generate - name: Test run: go test -race ./... e2e: name: End-to-End runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: 1.22.x - run: go mod download - run: go install github.com/a-h/templ/cmd/templ@v0.2.771 - run: templ generate -path ./components - uses: sqlc-dev/setup-sqlc@v4 with: sqlc-version: '1.27.0' - run: sqlc generate - run: go test ./... -tags=e2e docker-publish: name: Publish Docker runs-on: ubuntu-latest permissions: contents: read packages: write if: github.event_name == 'push' && github.ref == 'refs/heads/main' needs: - lint - test - e2e steps: - uses: actions/checkout@v4 - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: docker/metadata-action@v5 id: meta with: images: ghcr.io/piszmog/vctp - uses: docker/build-push-action@v5 with: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }}