diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml new file mode 100644 index 0000000..f0a86f4 --- /dev/null +++ b/.github/workflows/test-and-release.yml @@ -0,0 +1,60 @@ +name: Test and Release + +on: + push: + tags: + - 'v*.*.*' # Triggers on tags like v1.2.3 + pull_request: + branches: [ main ] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: 1.22 + - name: Cache Go modules + uses: actions/cache@v4 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - name: Install dependencies + run: go mod download + - name: Run tests + run: go test -v ./... + + release: + if: startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-latest + needs: test + steps: + - uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: 1.22 + - name: Build binaries + run: | + mkdir -p dist + GOOS=linux GOARCH=amd64 go build -o dist/app-linux-amd64 + GOOS=darwin GOARCH=amd64 go build -o dist/app-darwin-amd64 + GOOS=windows GOARCH=amd64 go build -o dist/app-windows-amd64.exe + - name: Create Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.ref_name }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload Release Assets + uses: softprops/action-gh-release@v2 + with: + files: dist/* + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/pkg/version/version b/pkg/version/version index 850e1b8..eb056dd 100644 --- a/pkg/version/version +++ b/pkg/version/version @@ -1 +1 @@ -v0.5.3 \ No newline at end of file +v0.5.4 \ No newline at end of file