Skip to content

Commit e705dfd

Browse files
authored
fix(build): use GITHUB_TOKEN for curl when needed (#2808)
1 parent 74272a1 commit e705dfd

9 files changed

Lines changed: 59 additions & 17 deletions

File tree

.github/workflows/reusable-build.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,10 @@ jobs:
7373
- name: Build Image
7474
id: build-image
7575
shell: bash
76+
env:
77+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
7678
run: |
77-
sudo $(command -v just) repo_organization="${{ github.repository_owner }}" \
79+
sudo -E $(command -v just) repo_organization="${{ github.repository_owner }}" \
7880
build-ghcr "${{ matrix.base_name }}" \
7981
"${{ matrix.stream_name }}" \
8082
"${{ matrix.image_flavor }}" \
@@ -105,8 +107,10 @@ jobs:
105107
- name: Rechunk Image
106108
id: rechunk-image
107109
shell: bash
110+
env:
111+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
108112
run: |
109-
sudo $(command -v just) rechunk "${{ matrix.base_name }}" \
113+
sudo -E $(command -v just) rechunk "${{ matrix.base_name }}" \
110114
"${{ matrix.stream_name }}" \
111115
"${{ matrix.image_flavor }}" \
112116
"1"

Containerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ ARG VERSION=""
2727
RUN --mount=type=cache,dst=/var/cache/libdnf5 \
2828
--mount=type=cache,dst=/var/cache/rpm-ostree \
2929
--mount=type=bind,from=ctx,source=/,target=/ctx \
30+
--mount=type=secret,id=GITHUB_TOKEN \
3031
/ctx/build_files/shared/build-base.sh
3132

3233
## bluefin-dx developer edition image section
@@ -46,4 +47,5 @@ ARG VERSION=""
4647
RUN --mount=type=cache,dst=/var/cache/libdnf5 \
4748
--mount=type=cache,dst=/var/cache/rpm-ostree \
4849
--mount=type=bind,from=ctx,source=/,target=/ctx \
50+
--mount=type=secret,id=GITHUB_TOKEN \
4951
/ctx/build_files/shared/build-dx.sh

Justfile

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -229,13 +229,17 @@ build $image="bluefin" $tag="latest" $flavor="main" rechunk="0" ghcr="0" pipelin
229229
echo "::group:: Build Container"
230230

231231
# Build Image
232-
${PODMAN} build \
233-
"${BUILD_ARGS[@]}" \
234-
"${LABELS[@]}" \
235-
--target "${target}" \
236-
--tag localhost/"${image_name}:${tag}" \
237-
--file Containerfile \
238-
.
232+
PODMAN_BUILD_ARGS=("${BUILD_ARGS[@]}" "${LABELS[@]}" --target "${target}" --tag localhost/"${image_name}:${tag}" --file Containerfile)
233+
234+
# Add GitHub token secret if available (for CI/CD)
235+
if [[ -n "${GITHUB_TOKEN:-}" ]]; then
236+
echo "Adding GitHub token as build secret"
237+
PODMAN_BUILD_ARGS+=(--secret "id=GITHUB_TOKEN,env=GITHUB_TOKEN")
238+
else
239+
echo "No GitHub token found - build may hit rate limit"
240+
fi
241+
242+
${PODMAN} build "${PODMAN_BUILD_ARGS[@]}" .
239243
echo "::endgroup::"
240244

241245
# Rechunk

build_files/base/03-install-kernel-akmods.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ if [[ "${IMAGE_NAME}" =~ nvidia ]]; then
9999
fi
100100

101101
# Install Nvidia RPMs
102-
curl -Lo /tmp/nvidia-install.sh https://raw.githubusercontent.com/ublue-os/main/main/build_files/nvidia-install.sh
102+
ghcurl "https://raw.githubusercontent.com/ublue-os/main/main/build_files/nvidia-install.sh" -o /tmp/nvidia-install.sh
103103
chmod +x /tmp/nvidia-install.sh
104104
IMAGE_NAME="${BASE_IMAGE_NAME}" RPMFUSION_MIRROR="" /tmp/nvidia-install.sh
105105
rm -f /usr/share/vulkan/icd.d/nouveau_icd.*.json

build_files/base/05-override-install.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ dnf5 -y swap \
2222
fwupd fwupd
2323

2424
# Offline Bluefin documentation
25-
curl --retry 3 -Lo /tmp/bluefin.pdf https://github.com/ublue-os/bluefin-docs/releases/download/0.1/bluefin.pdf
25+
ghcurl "https://github.com/ublue-os/bluefin-docs/releases/download/0.1/bluefin.pdf" --retry 3 -o /tmp/bluefin.pdf
2626
install -Dm0644 -t /usr/share/doc/bluefin/ /tmp/bluefin.pdf
2727

2828
# Starship Shell Prompt
29-
curl --retry 3 -Lo /tmp/starship.tar.gz "https://github.com/starship/starship/releases/latest/download/starship-x86_64-unknown-linux-gnu.tar.gz"
29+
ghcurl "https://github.com/starship/starship/releases/latest/download/starship-x86_64-unknown-linux-gnu.tar.gz" --retry 3 -o /tmp/starship.tar.gz
3030
tar -xzf /tmp/starship.tar.gz -C /tmp
3131
install -c -m 0755 /tmp/starship /usr/bin
3232
# shellcheck disable=SC2016

build_files/dx/04-override-install-dx.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ echo "::group:: ===$(basename "$0")==="
44

55
set -eoux pipefail
66

7-
curl --retry 3 -Lo /tmp/kind "https://github.com/kubernetes-sigs/kind/releases/latest/download/kind-$(uname)-amd64"
7+
ghcurl "https://github.com/kubernetes-sigs/kind/releases/latest/download/kind-$(uname)-amd64" --retry 3 -o /tmp/kind
88
chmod +x /tmp/kind
99
mv /tmp/kind /usr/bin/kind
1010

1111
# GitHub Monaspace Font
12-
DOWNLOAD_URL=$(curl --retry 3 https://api.github.com/repos/githubnext/monaspace/releases/latest | jq -r '.assets[] | select(.name| test(".*.zip$")).browser_download_url')
13-
curl --retry 3 -Lo /tmp/monaspace-font.zip "$DOWNLOAD_URL"
12+
DOWNLOAD_URL=$(ghcurl "https://api.github.com/repos/githubnext/monaspace/releases/latest" --retry 3 | jq -r '.assets[] | select(.name| test(".*.zip$")).browser_download_url')
13+
ghcurl "$DOWNLOAD_URL" --retry 3 -o /tmp/monaspace-font.zip
1414

1515
unzip -qo /tmp/monaspace-font.zip -d /tmp/monaspace-font
1616
mkdir -p /usr/share/fonts/monaspace
@@ -21,8 +21,8 @@ fc-cache -f /usr/share/fonts/monaspace
2121
fc-cache --system-only --really-force --verbose
2222

2323
# ls-iommu helper tool for listing devices in iommu groups (PCI Passthrough)
24-
DOWNLOAD_URL=$(curl https://api.github.com/repos/HikariKnight/ls-iommu/releases/latest | jq -r '.assets[] | select(.name| test(".*x86_64.tar.gz$")).browser_download_url')
25-
curl --retry 3 -Lo /tmp/ls-iommu.tar.gz "$DOWNLOAD_URL"
24+
DOWNLOAD_URL=$(ghcurl "https://api.github.com/repos/HikariKnight/ls-iommu/releases/latest" | jq -r '.assets[] | select(.name| test(".*x86_64.tar.gz$")).browser_download_url')
25+
ghcurl "$DOWNLOAD_URL" --retry 3 -o /tmp/ls-iommu.tar.gz
2626
mkdir /tmp/ls-iommu
2727
tar --no-same-owner --no-same-permissions --no-overwrite-dir -xvzf /tmp/ls-iommu.tar.gz -C /tmp/ls-iommu
2828
mv /tmp/ls-iommu/ls-iommu /usr/bin/

build_files/shared/build-base.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ install -Dm0644 -t /etc/ublue-os/ /ctx/iso_files/*.list
2020
cp -r /ctx/just /tmp/just
2121
cp /ctx/packages.json /tmp/packages.json
2222
rsync -rvK /ctx/system_files/shared/ /
23+
24+
mkdir -p /tmp/scripts/helpers
25+
install -Dm0755 /ctx/build_files/shared/utils/ghcurl /tmp/scripts/helpers/ghcurl
26+
export PATH="/tmp/scripts/helpers:$PATH"
27+
2328
echo "::endgroup::"
2429

2530
# Generate image-info.json

build_files/shared/build-dx.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ echo "::group:: Copy Files"
99
# Copy Files to Image
1010
cp /ctx/packages.json /tmp/packages.json
1111
rsync -rvK /ctx/system_files/dx/ /
12+
13+
mkdir -p /tmp/scripts/helpers
14+
install -Dm0755 /ctx/build_files/shared/utils/ghcurl /tmp/scripts/helpers/ghcurl
15+
export PATH="/tmp/scripts/helpers:$PATH"
16+
1217
echo "::endgroup::"
1318

1419
# Apply IP Forwarding before installing Docker to prevent messing with LXC networking

build_files/shared/utils/ghcurl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# Check for GITHUB_TOKEN in /run/secrets/GITHUB_TOKEN (Podman secret mount)
5+
if [[ -f /run/secrets/GITHUB_TOKEN ]]; then
6+
GITHUB_TOKEN=$(< /run/secrets/GITHUB_TOKEN)
7+
echo "Using GITHUB_TOKEN from /run/secrets/GITHUB_TOKEN for authentication." >&2
8+
AUTH_HEADER="Authorization: Bearer $GITHUB_TOKEN"
9+
else
10+
echo "GITHUB_TOKEN secret not found. Using unauthenticated requests." >&2
11+
AUTH_HEADER=""
12+
fi
13+
14+
URL="$1"
15+
shift
16+
OPTIONS=("$@")
17+
18+
if [[ -n "$AUTH_HEADER" ]]; then
19+
curl -sSL -H "$AUTH_HEADER" "${OPTIONS[@]}" "$URL"
20+
else
21+
curl -sSL "${OPTIONS[@]}" "$URL"
22+
fi

0 commit comments

Comments
 (0)