summaryrefslogtreecommitdiff
path: root/.github/workflows/create-release.yml
blob: 4702e59884f9d3c7822b641a20ea4e09d159b5dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
on:
  push:
    # Sequence of patterns matched against refs/tags
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

name: Create Release

jobs:
  build:

    name: Build binary files

    # START build targets
    strategy:
      matrix:
        # Include amd64 on all platforms.
        goos: [ windows, freebsd, openbsd, linux, dragonfly, darwin ]
        goarch: [ amd64, 386 ]
        exclude:
          # Exclude i386 on darwin and dragonfly.
          - goarch: 386
            goos: dragonfly
          - goarch: 386
            goos: darwin
        include:
          # BEGIN Linux ARM 5 6 7
          - goos: linux
            goarch: arm
            goarm: 7
          - goos: linux
            goarch: arm
            goarm: 6
          - goos: linux
            goarch: arm
            goarm: 5
          # END Linux ARM 5 6 7
          # BEGIN Windows ARM 7
          - goos: windows
            goarch: arm
            goarm: 7
          # END Windows ARM 7
          # BEGIN FreeBSD ARM 6 7
          - goos: freebsd
            goarch: arm
            goarm: 6
          - goos: freebsd
            goarch: arm
            goarm: 7
          # END FreeBSD ARM 6 7
          # BEGIN OpenBSD ARM 6 7
          - goos: openbsd
            goarch: arm
            goarm: 6
          - goos: openbsd
            goarch: arm
            goarm: 7
          # END OpenBSD ARM 6 7
          # BEGIN Other architectures
          - goos: darwin
            goarch: arm64
          - goos: linux
            goarch: arm64
          - goos: linux
            goarch: riscv64
          - goos: windows
            goarch: arm64
          - goos: android
            goarch: arm64
          - goos: freebsd
            goarch: arm64
          - goos: openbsd
            goarch: arm64
          # BEGIN MIPS
          - goos: linux
            goarch: mips64
          - goos: linux
            goarch: mips64le
          - goos: linux
            goarch: mipsle
          - goos: linux
            goarch: mips
          # END MIPS
          # END Other architectures
      fail-fast: false
    # END build targets

    runs-on: ubuntu-latest

    env:
      GOOS: ${{ matrix.goos }}
      GOARCH: ${{ matrix.goarch }}
      GOARM: ${{ matrix.goarm }}
      CGO_ENABLED: 0

    steps:
      - name: Checkout code
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Set up Go
        uses: actions/setup-go@v3
        with:
          go-version: ^1.19

      - name: Get project dependencies
        run: go mod download

      - name: Add exe extname for Windows
        if: matrix.goos == 'windows'
        run: echo "ASSET_EXT_NAME=.exe" >> $GITHUB_ENV

      - name: Rename GOARCH (rename "386" to "i386")
        if: matrix.goarch == '386'
        run: echo "ARCH_NAME=i386" >> $GITHUB_ENV

      - name: Rename GOARCH (NOP)
        if: matrix.goarch != '386'
        run: echo "ARCH_NAME=${GOARCH}${GOARM}" >> $GITHUB_ENV

      - name: Set asset filename
        run: echo "ASSET_NAME=slbr_${GOOS}_${ARCH_NAME}${ASSET_EXT_NAME}" >> $GITHUB_ENV

      - name: Build binaries
        run: |
          mkdir -p build_assets
          go build -v -o build_assets/$ASSET_NAME -trimpath -ldflags="-s -w"

      - name: Upload binaries to release
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file_glob: true
          file: build_assets/*
          tag: ${{ github.ref }}