name: Release on: push: tags: - 'v*' permissions: contents: write jobs: test: name: Test Before Release runs-on: ubuntu-latest steps: - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.21' - name: Check out code uses: actions/checkout@v4 - name: Cache Go modules uses: actions/cache@v3 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-1.21-${{ hashFiles('**/go.sum') }} - name: Download dependencies run: go mod download - name: Run all tests run: go test -v -race -timeout 600s ./... release: name: Create Release runs-on: ubuntu-latest needs: test steps: - name: Check out code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.21' - name: Cache Go modules uses: actions/cache@v3 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-1.21-${{ hashFiles('**/go.sum') }} - name: Download dependencies run: go mod download