summaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
blob: 65815ef584aa61b9d35fdaa3244f5ae10526fcfb (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
name: CI
on:
  push:
jobs:
  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
        with:
          go-version: "1.16"
      - run: |
          go fmt ./...
          go vet ./...
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
        with:
          go-version: "1.16"
      - run: |
          cd testdata
          go run ../cmd/svgu/svgu.go -o=dst -v -c=DOMAINS.star
  build:
    name: Build
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        go: ["1.16", "1.17", "1.18", "1.19", "1.20"]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
        with:
          go-version: ${{ matrix.go }}
      - run: go build -v -o svgu.o cmd/svgu/svgu.go
  release:
    name: Release
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v4
        with:
          go-version: "1.16"
      - name: Cross-platform build
        run: |
          mkdir out

          # GNU/Linux
          export GOOS=linux 

          export GOARCH=amd64 
          go build -o svgu-linux-amd64 cmd/svgu/svgu.go

          export GOARCH=arm64
          go build -o svgu-linux-arm64 cmd/svgu/svgu.go

          # macOS
          export GOOS=darwin

          export GOARCH=amd64
          go build -o svgu-darwin-amd64 cmd/svgu/svgu.go

          export GOARCH=arm64
          go build -o svgu-darwin-arm64 cmd/svgu/svgu.go

          # Microsoft Windows
          export GOOS=windows 

          export GOARCH=amd64
          go build -o svgu-windows-amd64.exe cmd/svgu/svgu.go

          # Plan 9 from Bell Labs
          export GOOS=plan9

          export GOARCH=amd64
          go build -o svgu-plan9-amd64 cmd/svgu/svgu.go

          # FreeBSD
          export GOOS=freebsd

          export GOARCH=amd64
          go build -o svgu-freebsd-amd64 cmd/svgu/svgu.go

          export GOARCH=arm64
          go build -o svgu-freebsd-arm64 cmd/svgu/svgu.go

          # OpenBSD
          export GOOS=openbsd

          export GOARCH=amd64
          go build -o svgu-openbsd-amd64 cmd/svgu/svgu.go

          export GOARCH=arm64
          go build -o svgu-openbsd-arm64 cmd/svgu/svgu.go

          # NetBSD
          export GOOS=netbsd

          export GOARCH=amd64
          go build -o svgu-netbsd-amd64 cmd/svgu/svgu.go

          export GOARCH=arm64 
          go build -o svgu-netbsd-arm64 cmd/svgu/svgu.go

          # OpenSolaris
          export GOOS=solaris

          export GOARCH=amd64
          go build -o svgu-solaris-amd64 cmd/svgu/svgu.go  

          # DragonFly BSD
          export GOOS=dragonfly

          export GOARCH=amd64
          go build -o svgu-dragonfly-amd64 cmd/svgu/svgu.go
      - uses: ncipollo/release-action@v1
        with:
          artifacts: svgu-*
          body: |
            By ${{ github.actor }} on ${{ github.event_name }}:
            ${{ github.event.head_commit.message }}

            ${{ github.event.head_commit.url }}
          tag: ${{ github.event.head_commit.id }}
          name: Commit ${{ github.sha }}