Skip to content

Commit eaa2a0c

Browse files
author
psadi
committed
ci: cache apt and nix dependencies
1 parent 8533717 commit eaa2a0c

File tree

2 files changed

+47
-19
lines changed

2 files changed

+47
-19
lines changed

.github/workflows/ci.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,22 @@ jobs:
3232
with:
3333
persist-credentials: false
3434

35+
- name: Cache dependencies
36+
id: cache-ghostty
37+
uses: actions/cache@v4
38+
with:
39+
path: |
40+
/var/cache/apt/archives
41+
/var/lib/apt/lists
42+
/tmp/offline-cache
43+
/usr/local/bin/appimagetool
44+
/usr/local/bin/minisign
45+
/usr/local/bin/zig
46+
/opt
47+
key: ${{ runner.os }}-${{ matrix.arch }}-ghostty-${{ hashFiles('**/setup.sh') }}
48+
restore-keys: |
49+
${{ runner.os }}-${{ matrix.arch }}-ghostty-
50+
3551
- name: Setup Build Env
3652
run: ./setup.sh
3753

setup.sh

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,41 @@ if command -v jq >/dev/null 2>&1; then
2323
fi
2424
fi
2525

26-
# update & install os base dependencies
27-
buildPkgs="build-essential libonig-dev libbz2-dev pandoc wget fuse libfuse2t64 file zsync appstream"
26+
# Update & install OS base dependencies
27+
buildPkgs="apt-utils build-essential libonig-dev libbz2-dev pandoc wget fuse libfuse2t64 file zsync appstream"
2828
ghosttyPkgs="libgtk-4-dev libadwaita-1-dev"
29-
apt-get -qq update && apt-get -qq -y upgrade && apt-get -qq -y install ${buildPkgs} ${ghosttyPkgs}
29+
apt-get -qq update && apt-get -qq -y upgrade
30+
apt-get -qq -y --download-only install ${buildPkgs} ${ghosttyPkgs}
31+
apt-get -qq -y install ${buildPkgs} ${ghosttyPkgs}
3032

31-
# download & install other dependencies
33+
# Download & install other dependencies
3234
# appimagetool: https://github.com/AppImage/appimagetool
33-
wget -q "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${ARCH}.AppImage"
34-
install "appimagetool-${ARCH}.AppImage" /usr/local/bin/appimagetool
35+
if [ ! -f '/usr/local/bin/appimagetool' ]; then
36+
wget -q "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${ARCH}.AppImage" -O /tmp/appimagetool.AppImage
37+
chmod +x /tmp/appimagetool.AppImage
38+
mv /tmp/appimagetool.AppImage /usr/local/bin/appimagetool
39+
fi
3540

3641
# minisign: https://github.com/jedisct1/minisign
37-
wget -q "${MINISIGN_URL}" -O "minisign-linux.tar.gz"
38-
tar -xzf "minisign-linux.tar.gz"
39-
mv minisign-linux/"${ARCH}"/minisign /usr/local/bin
42+
if [ ! -f '/usr/local/bin/minisign' ]; then
43+
wget -q "${MINISIGN_URL}" -O /tmp/minisign-linux.tar.gz
44+
tar -xzf /tmp/minisign-linux.tar.gz -C /tmp
45+
mv /tmp/minisign-linux/"${ARCH}"/minisign /usr/local/bin
46+
fi
4047

4148
# zig: https://ziglang.org
42-
wget -q "https://ziglang.org/download/${ZIG_VERSION}/zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz"
43-
tar -xf "zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz" -C /opt
44-
ln -s "/opt/zig-linux-${ARCH}-${ZIG_VERSION}/zig" /usr/local/bin/zig
45-
46-
# cleanup
47-
rm -r \
48-
"appimagetool-${ARCH}.AppImage" \
49-
"minisign-linux.tar.gz" \
50-
"minisign-linux" \
51-
"zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz"
49+
if [ ! -d "/opt/zig-linux-${ARCH}-${ZIG_VERSION}" ]; then
50+
wget -q "https://ziglang.org/download/${ZIG_VERSION}/zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz" -O /tmp/zig-linux.tar.xz
51+
tar -xf /tmp/zig-linux.tar.xz -C /opt
52+
ln -s "/opt/zig-linux-${ARCH}-${ZIG_VERSION}/zig" /usr/local/bin/zig
53+
fi
54+
55+
# Cleanup
56+
rm -rf \
57+
/tmp/appimagetool.AppImage \
58+
/tmp/minisign-linux.tar.gz \
59+
/tmp/minisign-linux \
60+
/tmp/zig-linux.tar.xz
61+
62+
# Reset DEBIAN_FRONTEND to default
63+
unset DEBIAN_FRONTEND

0 commit comments

Comments
 (0)