diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..2ee121e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,64 @@ +# This workflow will build a golang project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go + +name: Release + +on: + push: + # Sequence of patterns matched against refs/tags + tags: + - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + +permissions: + contents: write + +jobs: + build: + name: Create Release + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22' + + - run: mkdir ~/build + + - name: Build + shell: bash + run: | + set +e + go tool dist list | while IFS='/' read -ra TARGET + do + export GOOS=${TARGET[0]} + export GOARCH=${TARGET[1]} + echo "Building target $GOOS/$GOARCH" + go build -o ~/build/analytics-server-${{ github.ref_name }}-$GOOS-$GOARCH ./cmd/analytics-server + done + + - name: Compress via Zstd + run: zstd ~/build/analytics-server-${{ github.ref_name }}-* + + - name: Generate Checksums + run: sha256sum ~/build/*zst > ~/build/SHA256SUMS.txt + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ github.token }} + with: + tag_name: ${{ github.ref_name }} + release_name: ${{ github.ref_name }} + body: Changelog for ${{ github.ref_name }} + draft: true + prerelease: false + + - name: Upload Artifact + env: + GH_TOKEN: ${{ github.token }} + run: + gh release -R ${{ github.repository }} upload ${{ github.ref_name }} ~/build/SHA256SUMS.txt ~/build/*zst --clobber