name: Go on: [push] jobs: build: name: Build runs-on: ubuntu-latest steps: - name: Setup Go uses: actions/setup-go@v2 with: go-version: 1.17 - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Cache go module uses: actions/cache@v2 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Get dependencies, run test and static check run: | go test ./... go vet ./... go install honnef.co/go/tools/cmd/staticcheck@latest staticcheck -- $(go list ./...) - name: Build #if: startsWith(github.ref, 'refs/tags/') env: NAME: clash BINDIR: bin run: make -j releases - name: Prepare upload run: | echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV echo "FILE_SHA=$(git describe --tags --always 2>/dev/null)" >> $GITHUB_ENV - name: Upload files to Artifacts uses: actions/upload-artifact@v2 with: name: clash_${{ env.FILE_SHA }}${{ env.FILE_DATE }} path: | bin/* - name: Upload Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: bin/* draft: true - name: Delete workflow runs uses: GitRML/delete-workflow-runs@main with: retain_days: 1 keep_minimum_runs: 2 - name: Remove old Releases uses: dev-drprasad/delete-older-releases@v0.2.0 if: startsWith(github.ref, 'refs/tags/') && !cancelled() with: keep_latest: 1 delete_tags: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}