Skip to content

Commit 0044d78

Browse files
committed
.github/workflows: build arm64 packages for latest Debian
Users have recently requested packages for arm64, which is an increasingly popular architecture. In addition, it is the architecture used on newer Macs and some Windows systems, which may commonly run Linux VMs or WSL. However, GitHub Actions does not support arm64 natively, so we must build in emulation. This is extraordinarily slow, so we'll build only for the latest Debian release. All Debian-based images use our Debian images, and Debian is by far the most portable mainstream Linux distribution in terms of architecture support, so the cost to add additional architectures should be extremely minimal. Users who would like versions for older releases may build their own packages with our tooling. Build these packages in both CI and for releases.
1 parent 569b5ce commit 0044d78

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

.github/workflows/ci.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,27 @@ jobs:
114114
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
115115
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh)
116116
- run: DOCKER_AUTOPULL=0 ./docker/run_dockers.bsh --prune
117+
build-docker-cross:
118+
name: Build Cross Linux packages
119+
runs-on: ubuntu-20.04
120+
strategy:
121+
matrix:
122+
arch: [arm64]
123+
container: [debian_11]
124+
steps:
125+
- uses: actions/checkout@v1
126+
- uses: actions/setup-ruby@v1
127+
- run: |
128+
echo '{"experimental": true}' | sudo tee /etc/docker/daemon.json
129+
sudo systemctl restart docker.service
130+
docker version -f '{{.Server.Experimental}}'
131+
- uses: docker/setup-qemu-action@v1
132+
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
133+
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch=$ARCH $CONTAINER)
134+
env:
135+
ARCH: ${{matrix.arch}}
136+
CONTAINER: ${{matrix.container}}
137+
- run: DOCKER_AUTOPULL=0 ./docker/run_dockers.bsh --prune --arch=$ARCH $CONTAINER
138+
env:
139+
ARCH: ${{matrix.arch}}
140+
CONTAINER: ${{matrix.container}}

.github/workflows/release.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,30 @@ jobs:
122122
- run: '[ -z "${GITHUB_REF%%refs/tags/*-pre*}" ] || ./script/packagecloud.rb'
123123
env:
124124
PACKAGECLOUD_TOKEN: ${{secrets.PACKAGECLOUD_TOKEN}}
125+
build-docker-cross:
126+
name: Build Cross Linux packages
127+
runs-on: ubuntu-20.04
128+
strategy:
129+
matrix:
130+
arch: [arm64]
131+
container: [debian_11]
132+
- uses: actions/checkout@v1
133+
- uses: actions/setup-ruby@v1
134+
- run: |
135+
echo '{"experimental": true}' | sudo tee /etc/docker/daemon.json
136+
sudo systemctl restart docker.service
137+
docker version -f '{{.Server.Experimental}}'
138+
- uses: docker/setup-qemu-action@v1
139+
- run: git clone https://github.com/git-lfs/build-dockers.git "$HOME/build-dockers"
140+
- run: (cd "$HOME/build-dockers" && ./build_dockers.bsh --arch=$ARCH $CONTAINER)
141+
env:
142+
ARCH: ${{matrix.arch}}
143+
CONTAINER: ${{matrix.container}}
144+
- run: DOCKER_AUTOPULL=0 ./docker/run_dockers.bsh --prune --arch=$ARCH $CONTAINER
145+
env:
146+
ARCH: ${{matrix.arch}}
147+
CONTAINER: ${{matrix.container}}
148+
# If this is a pre-release tag, don't upload anything to packagecloud.
149+
- run: '[ -z "${GITHUB_REF%%refs/tags/*-pre*}" ] || ./script/packagecloud.rb'
150+
env:
151+
PACKAGECLOUD_TOKEN: ${{secrets.PACKAGECLOUD_TOKEN}}

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ built from source using the latest version of [Go](https://golang.org), and the
3333
available instructions in our
3434
[Wiki](https://github.com/git-lfs/git-lfs/wiki/Installation#source).
3535

36+
Note that Debian and RPM packages are built for all OSes for amd64 and i386.
37+
For arm64, only Debian packages for the latest Debian release are built due to the cost of building in emulation.
38+
3639
### Installing
3740

3841
#### From binary

0 commit comments

Comments
 (0)