From b959b52898af4d18daa079c9af952f8a2c1bb8ed Mon Sep 17 00:00:00 2001 From: Suleiman Dibirov Date: Sun, 15 Sep 2024 13:07:27 +0300 Subject: [PATCH] feat(github): Add release.yml to github actions --- .github/workflows/release.yml | 68 +++++++++++++++++++++++++++++++++++ .gitignore | 4 +-- 2 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..a3bb9be --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,68 @@ +name: Create Release with Assets + +on: + push: + tags: + - 'v*' # Triggers the workflow when a tag is pushed + +permissions: + contents: write # Explicitly grant write permissions for contents + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + arch: [amd64, arm64] # Different architectures + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.23' + + - name: Build binary + run: | + # Set the GOOS, GOARCH, and extension for Windows + if [ "${{ matrix.os }}" == "ubuntu-latest" ]; then + GOOS=linux + EXT="" + elif [ "${{ matrix.os }}" == "macos-latest" ]; then + GOOS=darwin + EXT="" + elif [ "${{ matrix.os }}" == "windows-latest" ]; then + GOOS=windows + EXT=".exe" + fi + + GOARCH=${{ matrix.arch }} + + # Create the build directory and build the binary + mkdir -p ./bin + go build -o ./bin/swama-${GOOS}-${GOARCH}${EXT} + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Provided automatically by GitHub Actions + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + draft: false + prerelease: false + + - name: Upload Release Assets + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./bin/swama-${GOOS}-${GOARCH}${EXT} + asset_name: swama-${GOOS}-${GOARCH}${EXT} + asset_content_type: application/octet-stream \ No newline at end of file diff --git a/.gitignore b/.gitignore index ec0687c..f09f766 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea +bin # Binaries for programs and plugins *.exe @@ -13,9 +14,6 @@ # Output of the go coverage tool, specifically when used with LiteIDE *.out -# Dependency directories (remove the comment below to include it) -# vendor/ - # Go workspace file go.work go.work.sum