.github/workflows/main.yml
name: CI # Controls when the workflow will runon: # Triggers the workflow on push or pull request events but only for the main branch push: branches: [main] tags: - "*" pull_request: branches: [main] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in paralleljobs: build: # The type of runner that the job will run on runs-on: ubuntu-latest strategy: matrix: os: [linux, darwin] arch: [amd64, arm64] # 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@v4 - name: Setup Go environment ${{ matrix.os }} ${{ matrix.arch }} uses: actions/setup-go@v5 with: go-version-file: go.mod cache-dependency-path: go.sum - name: Build executable run: | mkdir ./dist go build -ldflags "-X github.com/wasilak/notes-manager/libs/common.Version=${{ github.ref_name }}" -o ./dist/notes-manager env: GOOS: ${{ matrix.os }} GOARCH: ${{ matrix.arch }} - name: compress executable run: | cd ./dist chmod +x notes-manager zip notes-manager-${{ matrix.os }}-${{ matrix.arch }}.zip notes-manager - name: Release uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: generate_release_notes: true repository: wasilak/notes-manager files: | dist/notes-manager*.zip