Skip to content

Commit ff16b71

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 efcbfc6 commit ff16b71

File tree

2 files changed

+10
-41
lines changed

2 files changed

+10
-41
lines changed

.github/workflows/ci.yml

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -182,30 +182,15 @@ jobs:
182182
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
183183
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh)
184184
- run: ./docker/run_dockers.bsh --prune
185-
build-docker-cross:
186-
name: Build Cross Linux packages
187-
runs-on: ubuntu-latest
188-
strategy:
189-
matrix:
190-
arch: [arm64]
191-
container: [debian_12]
185+
build-docker-arm:
186+
name: Build Linux ARM packages
187+
runs-on: ubuntu-24.04-arm
192188
steps:
193189
- uses: actions/checkout@v4
194190
with:
195191
fetch-depth: 0
196192
persist-credentials: false
197193
ref: ${{ github.ref }}
198-
- run: |
199-
echo '{"experimental": true}' | sudo tee /etc/docker/daemon.json
200-
sudo systemctl restart docker.service
201-
docker version -f '{{.Server.Experimental}}'
202-
- uses: docker/setup-qemu-action@v3
203194
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
204-
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch="$ARCH" "$CONTAINER")
205-
env:
206-
ARCH: ${{matrix.arch}}
207-
CONTAINER: ${{matrix.container}}
208-
- run: ./docker/run_dockers.bsh --prune --arch="$ARCH" "$CONTAINER"
209-
env:
210-
ARCH: ${{matrix.arch}}
211-
CONTAINER: ${{matrix.container}}
195+
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch=arm64 debian_11 debian_12)
196+
- run: ./docker/run_dockers.bsh --prune --arch=arm64 debian_11 debian_12

.github/workflows/release.yml

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,9 @@ 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
204-
strategy:
205-
matrix:
206-
arch: [arm64]
207-
container: [debian_12]
200+
build-docker-arm:
201+
name: Build Linux ARM packages
202+
runs-on: ubuntu-24.04-arm
208203
steps:
209204
- uses: actions/checkout@v4
210205
with:
@@ -213,20 +208,9 @@ jobs:
213208
ref: ${{ github.ref }}
214209
- uses: ruby/setup-ruby@v1
215210
- 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
221211
- 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")
223-
env:
224-
ARCH: ${{matrix.arch}}
225-
CONTAINER: ${{matrix.container}}
226-
- run: ./docker/run_dockers.bsh --prune --arch="$ARCH" "$CONTAINER"
227-
env:
228-
ARCH: ${{matrix.arch}}
229-
CONTAINER: ${{matrix.container}}
212+
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch=arm64 debian_11 debian_12)
213+
- run: ./docker/run_dockers.bsh --prune --arch=arm64 debian_11 debian_12
230214
# If this is a pre-release tag, don't upload anything to packagecloud.
231215
- run: '[ -z "${GITHUB_REF%%refs/tags/*-pre*}" ] || ./script/packagecloud.rb'
232216
env:

0 commit comments

Comments
 (0)