Skip to content

Commit 947fc6f

Browse files
committed
.github/workflows: use new ARM64 runners
In commit 0044d78 of PR git-lfs#4728 we added the "build-docker-cross" job both our CI and release GitHub Actions workflows in order to build Debian Linux packages of Git LFS on the ARM64 platform. We only build an ARM64 package for Debian 12 because the build process is very slow, as we have had to use the Quick Emulator (QEMU) on AMD64 (x86_64) runners. Lately, some of these CI jobs have failed due to segmentation faults reported from the gcc compiler when it attempts to compile various modules from the Go standard packages. These failures appear to be unrelated to any changes in our code, but may be due to issues with the ARM64 emulation or some other dependency. Fortunately, GitHub has recently made ARM64 Actions runners available for use in public repositories like ours: https://github.com/orgs/community/discussions/148648 This means we can simply replace our "build-docker-cross" jobs with "build-docker-arm" jobs that utilize the ARM64 runners, and which do not exhibit the same kinds of failures with the gcc compiler. The build time for these new jobs is significantly faster than the old ones which ran in emulation, to the point where it now becomes feasible for us to build a Debian 11 package as well as the Debian 12 one. (We skip building a Debian 10 package since we expect to drop support for that platform fairly soon.) We should also be able to build an RPM package for ARM64 using Rocky 9, once we make some updates to our RPM package metadata files and the corresponding Dockerfile in our git-lfs/build-dockers repository. For the time being, however, we defer these changes to future PRs.
1 parent f06b779 commit 947fc6f

File tree

2 files changed

+12
-29
lines changed

2 files changed

+12
-29
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -183,31 +183,23 @@ jobs:
183183
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
184184
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh)
185185
- run: ./docker/run_dockers.bsh --prune
186-
build-docker-cross:
187-
name: Build Cross Linux packages
188-
runs-on: ubuntu-latest
186+
build-docker-arm:
187+
name: Build Linux ARM packages
188+
runs-on: ubuntu-24.04-arm
189189
strategy:
190190
matrix:
191-
arch: [arm64]
192-
container: [debian_12]
191+
container: [debian_11, debian_12]
193192
steps:
194193
- uses: actions/checkout@v4
195194
with:
196195
fetch-depth: 0
197196
persist-credentials: false
198197
ref: ${{ github.ref }}
199198
- uses: ruby/setup-ruby@v1
200-
- run: |
201-
echo '{"experimental": true}' | sudo tee /etc/docker/daemon.json
202-
sudo systemctl restart docker.service
203-
docker version -f '{{.Server.Experimental}}'
204-
- uses: docker/setup-qemu-action@v3
205199
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
206-
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch="$ARCH" "$CONTAINER")
200+
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch=arm64 "$CONTAINER")
207201
env:
208-
ARCH: ${{matrix.arch}}
209202
CONTAINER: ${{matrix.container}}
210-
- run: ./docker/run_dockers.bsh --prune --arch="$ARCH" "$CONTAINER"
203+
- run: ./docker/run_dockers.bsh --prune --arch=arm64 "$CONTAINER"
211204
env:
212-
ARCH: ${{matrix.arch}}
213205
CONTAINER: ${{matrix.container}}

.github/workflows/release.yml

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,12 @@ jobs:
197197
- run: '[ -z "${GITHUB_REF%%refs/tags/*-pre*}" ] || ./script/packagecloud.rb'
198198
env:
199199
PACKAGECLOUD_TOKEN: ${{secrets.PACKAGECLOUD_TOKEN}}
200-
build-docker-cross:
201-
name: Build Cross Linux packages
202-
environment: production
203-
runs-on: ubuntu-latest
200+
build-docker-arm:
201+
name: Build Linux ARM packages
202+
runs-on: ubuntu-24.04-arm
204203
strategy:
205204
matrix:
206-
arch: [arm64]
207-
container: [debian_12]
205+
container: [debian_11, debian_12]
208206
steps:
209207
- uses: actions/checkout@v4
210208
with:
@@ -213,19 +211,12 @@ jobs:
213211
ref: ${{ github.ref }}
214212
- uses: ruby/setup-ruby@v1
215213
- run: gem install packagecloud-ruby
216-
- run: |
217-
echo '{"experimental": true}' | sudo tee /etc/docker/daemon.json
218-
sudo systemctl restart docker.service
219-
docker version -f '{{.Server.Experimental}}'
220-
- uses: docker/setup-qemu-action@v3
221214
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
222-
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch="$ARCH" "$CONTAINER")
215+
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch=arm64 "$CONTAINER")
223216
env:
224-
ARCH: ${{matrix.arch}}
225217
CONTAINER: ${{matrix.container}}
226-
- run: ./docker/run_dockers.bsh --prune --arch="$ARCH" "$CONTAINER"
218+
- run: ./docker/run_dockers.bsh --prune --arch=arm64 "$CONTAINER"
227219
env:
228-
ARCH: ${{matrix.arch}}
229220
CONTAINER: ${{matrix.container}}
230221
# If this is a pre-release tag, don't upload anything to packagecloud.
231222
- run: '[ -z "${GITHUB_REF%%refs/tags/*-pre*}" ] || ./script/packagecloud.rb'

0 commit comments

Comments
 (0)