diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..7d3632bc --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,122 @@ +name: Release + +on: + release: + types: [ created ] + +jobs: + build-linux: + name: Linux build + runs-on: ubuntu-latest + steps: + - name: Get tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + shell: bash + - uses: actions/checkout@v3 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.22.x' + - name: Install dependencies + run: | + go get ./... + - name: Build + run: GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" ./cmd/modo + - name: Compress binaries + run: | + tar -czf modo.tar.gz modo + shell: bash + - name: Upload binaries + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: modo.tar.gz + asset_name: modo-${{ env.RELEASE_VERSION }}-linux-amd64.tar.gz + tag: ${{ github.ref }} + + build-windows: + name: Windows build + runs-on: ubuntu-latest + steps: + - name: Get tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + shell: bash + - uses: actions/checkout@v3 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.22.x' + - name: Install dependencies + run: | + go get ./... + - name: Build + run: GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" ./cmd/modo + - name: Compress binaries + run: | + zip -r modo.zip modo.exe + shell: bash + - name: Upload binaries + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: modo.zip + asset_name: modo-${{ env.RELEASE_VERSION }}-windows-amd64.zip + tag: ${{ github.ref }} + + build-macos-arm64: + name: MacOS arm64 build + runs-on: macos-latest + steps: + - name: Get tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + shell: bash + - uses: actions/checkout@v3 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.22.x' + - name: Install dependencies + run: | + go get ./... + - name: Build + run: GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" ./cmd/modo + - name: Compress binaries + run: | + zip -r modo.zip modo + shell: bash + - name: Upload binaries + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: modo.zip + asset_name: modo-${{ env.RELEASE_VERSION }}-macos-arm64.zip + tag: ${{ github.ref }} + + build-macos-amd64: + name: MacOS amd64 build + runs-on: macos-latest + steps: + - name: Get tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + shell: bash + - uses: actions/checkout@v3 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.22.x' + - name: Install dependencies + run: | + go get ./... + - name: Build + run: GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" ./cmd/modo + - name: Compress binaries + run: | + zip -r modo.zip modo + shell: bash + - name: Upload binaries + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: modo.zip + asset_name: modo-${{ env.RELEASE_VERSION }}-macos-amd64.zip + tag: ${{ github.ref }} diff --git a/.github/workflows/test-release.yml b/.github/workflows/test-release.yml new file mode 100644 index 00000000..2d40922b --- /dev/null +++ b/.github/workflows/test-release.yml @@ -0,0 +1,118 @@ +name: Test Release + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build-linux: + name: Linux build + runs-on: ubuntu-latest + steps: + - name: Get tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + shell: bash + - uses: actions/checkout@v3 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.22.x' + - name: Install dependencies + run: | + go get ./... + - name: Build + run: GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" ./cmd/modo + - name: Compress binaries + run: | + tar -czf modo.tar.gz modo + shell: bash + - name: Archive artifacts + uses: actions/upload-artifact@v4 + with: + name: modo-linux-amd64.tar.gz + path: modo.tar.gz + + build-windows: + name: Windows build + runs-on: ubuntu-latest + steps: + - name: Get tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + shell: bash + - uses: actions/checkout@v3 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.22.x' + - name: Install dependencies + run: | + go get ./... + - name: Build + run: GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" ./cmd/modo + - name: Compress binaries + run: | + zip -r modo.zip modo.exe + shell: bash + - name: Archive artifacts + uses: actions/upload-artifact@v4 + with: + name: modo-windows-amd64.zip + path: modo.zip + + build-macos-arm64: + name: MacOS arm64 build + runs-on: macos-latest + steps: + - name: Get tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + shell: bash + - uses: actions/checkout@v3 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.22.x' + - name: Install dependencies + run: | + go get ./... + - name: Build + run: GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" ./cmd/modo + - name: Compress binaries + run: | + zip -r modo.zip modo + shell: bash + - name: Archive artifacts + uses: actions/upload-artifact@v4 + with: + name: modo-macos-arm64.zip + path: modo.zip + + build-macos-amd64: + name: MacOS amd64 build + runs-on: macos-latest + steps: + - name: Get tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + shell: bash + - uses: actions/checkout@v3 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.22.x' + - name: Install dependencies + run: | + go get ./... + - name: Build + run: GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" ./cmd/modo + - name: Compress binaries + run: | + zip -r modo.zip modo + shell: bash + - name: Archive artifacts + uses: actions/upload-artifact@v4 + with: + name: modo-macos-amd64.zip + path: modo.zip