diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml new file mode 100644 index 0000000..369cf09 --- /dev/null +++ b/.github/workflows/pr-check.yml @@ -0,0 +1,90 @@ +name: PR Checks + +on: + pull_request: + +permissions: + contents: read + pull-requests: write + +jobs: + Format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Set up Go + uses: actions/setup-go@v6 + with: + go-version: '1.25.4' + check-latest: true + + - name: Format + run: | + # List files that would be reformatted + unformatted=$(go fmt ./...) + if [ -n "$unformatted" ]; then + echo "The following files are not properly formatted:" + echo "$unformatted" + exit 1 + fi + + Vet: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Set up Go + uses: actions/setup-go@v6 + with: + go-version: '1.25.4' + check-latest: true + + - name: Vet + run: | + result=$(go vet ./...) + if [ -n "$result" ]; then + echo "The following errors were reported by 'vet':" + echo "$result" + exit 1 + fi + + Build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Set up Go + uses: actions/setup-go@v6 + with: + go-version: '1.25.4' + check-latest: true + + - name: Build + run: | + result=$(go build ./...) + if [ -n "$result" ]; then + echo "The following errors were reported by 'build':" + echo "$result" + exit 1 + fi + + Test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Set up Go + uses: actions/setup-go@v6 + with: + go-version: '1.25.4' + check-latest: true + + - name: Test + run: | + go test -coverprofile=cover.out ./tests/... -coverpkg=./pkg/...,.,./internal/... + + - name: Coverage Report + uses: Jannik-Hm/go-test-coverage-report@v1.1 + with: + coverprofile: cover.out \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..4efc8e1 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +name: Release + +on: + push: + branches: + - main + +jobs: + Release: + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - name: Checkout Code + uses: actions/checkout@v5 + + - name: Bump version and push tag + id: tag_version + uses: mathieudutour/github-tag-action@v6.2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + + - name: Publish Release + uses: ncipollo/release-action@v1 + with: + generateReleaseNotes: true + tag: ${{ steps.tag_version.outputs.new_tag }} + prerelease: true \ No newline at end of file