forked from git-lfs/git-lfs
-
Notifications
You must be signed in to change notification settings - Fork 0
189 lines (188 loc) · 6 KB
/
ci.yml
File metadata and controls
189 lines (188 loc) · 6 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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
name: CI
on: [push, pull_request]
env:
GOTOOLCHAIN: local
jobs:
build-default:
name: Build with default Git
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
go: ['1.26.x']
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.ref }}
# We specify the current ref because otherwise the checkout turns
# annotated tags into lightweight ones, breaking "git describe".
# See https://github.com/actions/checkout/issues/290 and
# https://github.com/actions/checkout/issues/882 for details.
- run: sudo gem install asciidoctor
- uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go }}
- run: sudo apt-get update && sudo apt-get -y install gettext libarchive-tools
if: ${{ startsWith(matrix.os, 'ubuntu-') }}
env:
DEBIAN_FRONTEND: noninteractive
- run: script/cibuild
env:
FORCE_LOCALIZE: true
- run: CGO_ENABLED=0 make release
env:
FORCE_LOCALIZE: true
- run: mkdir -p bin/assets
- run: find bin/releases -name "*$(uname -s | tr A-Z a-z)*" | xargs -I{} cp {} bin/assets
- uses: actions/upload-artifact@v7
with:
name: ${{ matrix.os }}
path: bin/assets
build-go:
name: Build with specific Go
strategy:
matrix:
go: ['1.25.x']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.ref }}
- uses: actions/setup-go@v6
with:
go-version: ${{ matrix.go }}
- run: script/cibuild
build-windows:
name: Build on Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.ref }}
- run: gem install asciidoctor
- uses: actions/setup-go@v6
with:
go-version: '1.26.x'
- run: mkdir -p "$HOME/go/bin"
shell: bash
- run: set GOPATH=%HOME%\go
- run: choco install -y InnoSetup
- run: make man
shell: bash
- run: GOPATH="$HOME/go" PATH="$HOME/go/bin:$PATH" go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@latest
shell: bash
- uses: git-for-windows/setup-git-for-windows-sdk@v1
with:
flavor: minimal
# We install the SDK so as to have access to the msgfmt.exe binary
# from the GNU gettext package.
- run: GOPATH="$HOME/go" PATH="$HOME/go/bin:$PATH" script/cibuild
shell: bash
- run: rm -f commands/mancontent_gen.go
shell: bash
- run: GOPATH="$HOME/go" PATH="$HOME/go/bin:$PATH" make GOARCH=386 -B
shell: bash
env:
FORCE_LOCALIZE: true
- run: mv bin\git-lfs.exe git-lfs-x86.exe
- run: rm -f commands/mancontent_gen.go
shell: bash
- run: GOPATH="$HOME/go" PATH="$HOME/go/bin:$PATH" make GOARCH=amd64 -B
shell: bash
env:
FORCE_LOCALIZE: true
- run: mv bin\git-lfs.exe git-lfs-x64.exe
- run: rm -f commands/mancontent_gen.go
shell: bash
- run: GOPATH="$HOME/go" PATH="$HOME/go/bin:$PATH" make GOARCH=arm64 -B
shell: bash
env:
FORCE_LOCALIZE: true
- run: mv bin\git-lfs.exe git-lfs-arm64.exe
- run: iscc script\windows-installer\inno-setup-git-lfs-installer.iss
- run: mkdir -p bin/assets
shell: bash
- run: mv *.exe bin/assets
shell: bash
- uses: actions/upload-artifact@v7
with:
name: windows-latest
path: bin/assets
build-latest:
name: Build with latest Git
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.ref }}
- uses: actions/setup-go@v6
with:
go-version: '1.26.x'
- run: git clone -b master https://github.com/git/git.git "$HOME/git"
- run: |
echo "GIT_INSTALL_DIR=$HOME/git" >> "$GITHUB_ENV"
echo "$HOME/git/bin" >> "$GITHUB_PATH"
if: ${{ matrix.os == 'macos-latest' }}
# We install our custom Git version into a PATH location ahead of
# that of the Git installed by Homebrew.
- run: script/build-git "$HOME/git"
- run: GIT_DEFAULT_HASH=sha256 script/cibuild
build-earliest:
name: Build with earliest Git
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.ref }}
- uses: actions/setup-go@v6
with:
go-version: '1.26.x'
- run: git clone -b v2.0.0 https://github.com/git/git.git "$HOME/git"
- run: |
echo "GIT_INSTALL_DIR=$HOME/git" >> "$GITHUB_ENV"
echo "$HOME/git/bin" >> "$GITHUB_PATH"
if: ${{ matrix.os == 'macos-latest' }}
# We install our custom Git version into a PATH location ahead of
# that of the Git installed by Homebrew.
- run: script/build-git "$HOME/git"
- run: script/cibuild
build-docker:
name: Build Linux packages
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.ref }}
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh)
- run: ./docker/run_dockers.bsh --prune
build-docker-arm:
name: Build Linux ARM packages
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.ref }}
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch=arm64 debian_11 debian_12)
- run: ./docker/run_dockers.bsh --prune --arch=arm64 debian_11 debian_12