diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 15e69a0..0b3110f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,15 +6,18 @@ on: push: branches: - main - - release: - types: [published] + tags: + - v* pull_request: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: +permissions: + contents: write + pull-requests: read + # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" @@ -24,8 +27,10 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-go@v4 with: go-version: '^1.18.8' # The Go version to download (if necessary) and use. - name: Install Build Dependencies @@ -39,59 +44,16 @@ jobs: - name: Cover run: make cover - name: Build - run: | - set -ex - for dist in amd64 arm64; do - target=out/wait-for-port-linux-$dist - rm -rf "$target" - make build/$dist TOOL_PATH="$target" - file $target - tar -C "$(dirname "$target")" -czf "$target.tar.gz" "$(basename "$target")" - done - - uses: actions/upload-artifact@v2 - with: - name: built-binaries - path: | - out/*.tar.gz - release: - needs: [ 'build-and-test' ] - if: startsWith(github.ref, 'refs/tags/') - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v2 - - uses: actions/download-artifact@v2 + uses: goreleaser/goreleaser-action@v4 + if: ! startsWith(github.ref, 'refs/tags/') with: - path: ./artifacts - - name: Set tag name - id: vars - run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} + version: latest + args: build --snapshot --clean - name: Release - run: | - set -e - create_digest_file() { - local digest_file=${1:?You must provide the digest file path} - shift - for file in "$@"; do - ( - cd "$(dirname "$file")" - sha256sum "$(basename "$file")" - ) >> "$digest_file" - done - } - assets=( ./artifacts/built-binaries/*.gz ) - - tag_name="${{ steps.vars.outputs.tag }}" - checksums_file="${tag_name}_checksums.txt" - create_digest_file "$checksums_file" "${assets[@]}" - assets+=( "$checksums_file" ) - if gh release view "$tag_name" >/dev/null 2>/dev/null; then - echo "Release $tag_name already exists. Updating" - gh release upload "$tag_name" "${assets[@]}" - else - echo "Creating new release $tag_name" - # Format checksums for the release text - printf '```\n%s\n```' "$(<"$checksums_file")" > release.txt - gh release create -t "$tag_name" "$tag_name" -F release.txt "${assets[@]}" - fi + uses: goreleaser/goreleaser-action@v4 + if: startsWith(github.ref, 'refs/tags/') + with: + version: latest + args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 8cd2977..823a1e2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ vendor/ out/ +/dist diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..7831191 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,12 @@ +env: + - CGO_ENABLED=0 +builds: + - targets: + - linux_amd64 + - linux_arm64 +archives: + - name_template: "{{ .ProjectName }}-{{ .Os }}-{{ .Arch }}" +checksum: + name_template: '{{ .Version }}_checksums.txt' +changelog: + use: github-native