Skip to content

Commit 3170ccc

Browse files
committed
fix: handle root user in GitHub CLI installation script
Detect if runner is running as root (id -u == 0) and skip sudo commands in that case. Self-hosted runners may run as root, which cannot use sudo. Changes: - Check user ID before using sudo - Set SUDO variable to empty string if root, 'sudo' otherwise - Use $SUDO variable for all privileged commands This makes the installation work on both regular and root runners.
1 parent 82fb918 commit 3170ccc

File tree

1 file changed

+70
-30
lines changed

1 file changed

+70
-30
lines changed

.github/workflows/release.yml

Lines changed: 70 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,20 @@ jobs:
123123
run: |
124124
if ! command -v gh &> /dev/null; then
125125
echo "📦 Installing GitHub CLI..."
126-
type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
127-
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
128-
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
129-
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
130-
sudo apt update
131-
sudo apt install gh -y
126+
127+
# Detect if running as root (self-hosted runners may run as root)
128+
if [ "$(id -u)" -eq 0 ]; then
129+
SUDO=""
130+
else
131+
SUDO="sudo"
132+
fi
133+
134+
type -p curl >/dev/null || ($SUDO apt update && $SUDO apt install curl -y)
135+
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | $SUDO dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
136+
$SUDO chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
137+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | $SUDO tee /etc/apt/sources.list.d/github-cli.list > /dev/null
138+
$SUDO apt update
139+
$SUDO apt install gh -y
132140
echo "✅ GitHub CLI installed"
133141
else
134142
echo "✅ GitHub CLI already installed"
@@ -265,12 +273,20 @@ jobs:
265273
run: |
266274
if ! command -v gh &> /dev/null; then
267275
echo "📦 Installing GitHub CLI..."
268-
type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
269-
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
270-
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
271-
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
272-
sudo apt update
273-
sudo apt install gh -y
276+
277+
# Detect if running as root (self-hosted runners may run as root)
278+
if [ "$(id -u)" -eq 0 ]; then
279+
SUDO=""
280+
else
281+
SUDO="sudo"
282+
fi
283+
284+
type -p curl >/dev/null || ($SUDO apt update && $SUDO apt install curl -y)
285+
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | $SUDO dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
286+
$SUDO chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
287+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | $SUDO tee /etc/apt/sources.list.d/github-cli.list > /dev/null
288+
$SUDO apt update
289+
$SUDO apt install gh -y
274290
echo "✅ GitHub CLI installed"
275291
else
276292
echo "✅ GitHub CLI already installed"
@@ -324,12 +340,20 @@ jobs:
324340
run: |
325341
if ! command -v gh &> /dev/null; then
326342
echo "📦 Installing GitHub CLI..."
327-
type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
328-
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
329-
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
330-
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
331-
sudo apt update
332-
sudo apt install gh -y
343+
344+
# Detect if running as root (self-hosted runners may run as root)
345+
if [ "$(id -u)" -eq 0 ]; then
346+
SUDO=""
347+
else
348+
SUDO="sudo"
349+
fi
350+
351+
type -p curl >/dev/null || ($SUDO apt update && $SUDO apt install curl -y)
352+
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | $SUDO dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
353+
$SUDO chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
354+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | $SUDO tee /etc/apt/sources.list.d/github-cli.list > /dev/null
355+
$SUDO apt update
356+
$SUDO apt install gh -y
333357
echo "✅ GitHub CLI installed"
334358
else
335359
echo "✅ GitHub CLI already installed"
@@ -694,12 +718,20 @@ jobs:
694718
run: |
695719
if ! command -v gh &> /dev/null; then
696720
echo "📦 Installing GitHub CLI..."
697-
type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
698-
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
699-
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
700-
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
701-
sudo apt update
702-
sudo apt install gh -y
721+
722+
# Detect if running as root (self-hosted runners may run as root)
723+
if [ "$(id -u)" -eq 0 ]; then
724+
SUDO=""
725+
else
726+
SUDO="sudo"
727+
fi
728+
729+
type -p curl >/dev/null || ($SUDO apt update && $SUDO apt install curl -y)
730+
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | $SUDO dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
731+
$SUDO chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
732+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | $SUDO tee /etc/apt/sources.list.d/github-cli.list > /dev/null
733+
$SUDO apt update
734+
$SUDO apt install gh -y
703735
echo "✅ GitHub CLI installed"
704736
else
705737
echo "✅ GitHub CLI already installed"
@@ -776,12 +808,20 @@ jobs:
776808
run: |
777809
if ! command -v gh &> /dev/null; then
778810
echo "📦 Installing GitHub CLI..."
779-
type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
780-
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
781-
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
782-
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
783-
sudo apt update
784-
sudo apt install gh -y
811+
812+
# Detect if running as root (self-hosted runners may run as root)
813+
if [ "$(id -u)" -eq 0 ]; then
814+
SUDO=""
815+
else
816+
SUDO="sudo"
817+
fi
818+
819+
type -p curl >/dev/null || ($SUDO apt update && $SUDO apt install curl -y)
820+
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | $SUDO dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
821+
$SUDO chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
822+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | $SUDO tee /etc/apt/sources.list.d/github-cli.list > /dev/null
823+
$SUDO apt update
824+
$SUDO apt install gh -y
785825
echo "✅ GitHub CLI installed"
786826
else
787827
echo "✅ GitHub CLI already installed"

0 commit comments

Comments
 (0)