概要
シェルスクリプトを紹介します
環境
- Ubuntu 24.04
- glab 1.106.0
スクリプト
- vim install_glab_on_ubuntu.sh
set -euo pipefail
sudo apt-get update
sudo apt-get install -y curl tar jq
ARCH_RAW="$(uname -m)"
case "$ARCH_RAW" in
x86_64) ARCH_SUFFIX="amd64" ;;
aarch64|arm64) ARCH_SUFFIX="arm64" ;;
*)
echo "Unsupported architecture: $ARCH_RAW" >&2
exit 1
;;
esac
API_URL="https://gitlab.com/api/v4/projects/gitlab-org%2Fcli/releases/permalink/latest"
RELEASE_JSON="$(curl -fsSL "$API_URL")"
TAG_NAME="$(echo "$RELEASE_JSON" | jq -r '.tag_name')"
# ここが重要: 現在の命名は glab_<ver>_linux_<arch>.tar.gz
DOWNLOAD_URL="$(echo "$RELEASE_JSON" | jq -r --arg arch "$ARCH_SUFFIX" '
.assets.links[]
| select((.name // "") | test("_linux_" + $arch + "\\.tar\\.gz$"))
| (.direct_asset_url // .url)
' | head -n1)"
if [[ -z "$DOWNLOAD_URL" || "$DOWNLOAD_URL" == "null" ]]; then
echo "No matching asset URL found for arch: $ARCH_SUFFIX" >&2
echo "DEBUG: available asset names:" >&2
echo "$RELEASE_JSON" | jq -r '.assets.links[].name' >&2
exit 1
fi
TMP_DIR="/tmp/glab-install"
TARBALL_PATH="$TMP_DIR/glab.tar.gz"
echo "DEBUG: ARCH_RAW=$ARCH_RAW"
echo "DEBUG: ARCH_SUFFIX=$ARCH_SUFFIX"
echo "DEBUG: API_URL=$API_URL"
echo "DEBUG: TAG_NAME=$TAG_NAME"
echo "DEBUG: DOWNLOAD_URL=$DOWNLOAD_URL"
echo "DEBUG: TMP_DIR=$TMP_DIR"
echo "DEBUG: TARBALL_PATH=$TARBALL_PATH"
rm -rf "$TMP_DIR"
mkdir -p "$TMP_DIR"
curl -fL "$DOWNLOAD_URL" -o "$TARBALL_PATH"
tar -xzf "$TARBALL_PATH" -C "$TMP_DIR"
GLAB_BIN="$(find "$TMP_DIR" -type f -name glab | head -n1)"
if [[ -z "$GLAB_BIN" ]]; then
echo "glab binary not found in extracted archive" >&2
exit 1
fi
sudo install -m 0755 "$GLAB_BIN" /usr/local/bin/glab
glab --version
解説
いろいろやっていますが https://gitlab.com/gitlab-org/cli/-/releases ここから tar をダウンロードし PATH 上に配置しているだけです
最後に
あとは glab auth でログインしましょう
export GITLAB_TOKEN='glpat-c-xxx'
glab auth login --hostname gitlab.devops.nifcloud.net --token <<< "$GITLAB_TOKEN"
glab auth status --hostname gitlab.devops.nifcloud.net

