-
Notifications
You must be signed in to change notification settings - Fork 0
150 lines (149 loc) · 5.25 KB
/
release.yaml
File metadata and controls
150 lines (149 loc) · 5.25 KB
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
---
name: Release
on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
jobs:
build-linux:
name: Build for Linux
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up env
run: |
VERSION=${GITHUB_REF_NAME#v}
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "TARGET_PLATFORM=linux" >> $GITHUB_ENV
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.24
- name: Install C toolchain
run: sudo apt-get update && sudo apt-get install -y build-essential
- name: Build for Linux
env:
CGO_ENABLED: 1
CC: gcc
run: ./scripts/build.sh
- name: Release for Linux
run: ./scripts/release.sh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-macos:
name: Build for macOS
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up env
run: |
VERSION=${GITHUB_REF_NAME#v}
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "TARGET_PLATFORM=macos" >> $GITHUB_ENV
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.24
- name: Build for macOS
env:
CGO_ENABLED: 1
run: ./scripts/build.sh
- name: Install the Apple certificate, provisioning profile, and API key
id: keychain
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.APPLE_BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.APPLE_P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.APPLE_BUILD_PROVISION_PROFILE_BASE64 }}
AUTH_KEY_BASE64: ${{ secrets.APPLE_AUTH_KEY_BASE64 }}
run: ./scripts/ci-import-apple-certs.sh
- name: Sign the amd64 binary
env:
CODESIGNING_IDENTITY: ${{ secrets.APPLE_CODESIGNING_IDENTITY }}
CODESIGNING_PREFIX: ${{ secrets.APPLE_CODESIGNING_PREFIX }}
run: |
export CODESIGNING_IDENTITY=$(base64 --decode <<< "$CODESIGNING_IDENTITY")
export CODESIGNING_PREFIX=$(base64 --decode <<< "$CODESIGNING_PREFIX")
codesign --sign "$CODESIGNING_IDENTITY" \
--prefix "$CODESIGNING_PREFIX" \
--options runtime dist/kuba-darwin-amd64
- name: Sign the arm64 binary
env:
CODESIGNING_IDENTITY: ${{ secrets.APPLE_CODESIGNING_IDENTITY }}
CODESIGNING_PREFIX: ${{ secrets.APPLE_CODESIGNING_PREFIX }}
run: |
export CODESIGNING_IDENTITY=$(base64 --decode <<< "$CODESIGNING_IDENTITY")
export CODESIGNING_PREFIX=$(base64 --decode <<< "$CODESIGNING_PREFIX")
codesign --sign "$CODESIGNING_IDENTITY" \
--prefix "$CODESIGNING_PREFIX" \
--options runtime dist/kuba-darwin-arm64
- name: Zip the amd64 binary for notarization
run: zip -r dist/kuba-darwin-amd64.zip dist/kuba-darwin-amd64
- name: Zip the arm64 binary for notarization
run: zip -r dist/kuba-darwin-arm64.zip dist/kuba-darwin-arm64
- name: Upload the amd64 binary for notarization
env:
KEY_ID: ${{ secrets.APPLE_KEY_ID }}
ISSUER: ${{ secrets.APPLE_ISSUER }}
run: |
export KEY_ID=$(base64 --decode <<< "$KEY_ID")
export ISSUER=$(base64 --decode <<< "$ISSUER")
xcrun notarytool submit dist/kuba-darwin-amd64.zip \
--key "${{ steps.keychain.outputs.auth_key_path }}" \
--key-id "$KEY_ID" \
--issuer "$ISSUER" \
--wait
- name: Upload the arm64 binary for notarization
env:
KEY_ID: ${{ secrets.APPLE_KEY_ID }}
ISSUER: ${{ secrets.APPLE_ISSUER }}
run: |
export KEY_ID=$(base64 --decode <<< "$KEY_ID")
export ISSUER=$(base64 --decode <<< "$ISSUER")
xcrun notarytool submit dist/kuba-darwin-arm64.zip \
--key "${{ steps.keychain.outputs.auth_key_path }}" \
--key-id "$KEY_ID" \
--issuer "$ISSUER" \
--wait
- name: Release for macOS
run: ./scripts/release.sh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-windows:
name: Build for Windows
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up env
shell: pwsh
run: |
$version = "${env:GITHUB_REF_NAME}".TrimStart('v')
"VERSION=$version" >> $env:GITHUB_ENV
"TARGET_PLATFORM=windows" >> $env:GITHUB_ENV
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
- name: Install MinGW
run: choco install mingw -y
- name: Use MSVC for cgo
shell: pwsh
run: |
"CC=gcc" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
"CGO_ENABLED=1" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Build for Windows
shell: bash
run: ./scripts/build.sh
- name: Release for Windows
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./scripts/release.sh