0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linuxのプロンプトに現在のGitのbranch名やk8sのコンテキスト・ネームスペースを表示してみる

Last updated at Posted at 2024-12-09

0.はじめに

最近個人や現場でも、Linuxを用いたGitの開発と、k8sによるクラスタ管理を行うことが増えてきました。
現場で実際にあったミスですが、対象のコンテキストを間違えてデプロイしてしまってアプリが止まるといったこともあり、プロンプトに情報を表示するに越したことはないと思い、個人の備忘として記載しておきます。

Gitのプロンプト表示、k8sのプロンプト表示をそれぞれ解説し、その複合版も記載しますが先に結論は記載しておきます。

TL;DR

ユーザの~/.bashrcに以下を記載

# Git ブランチ名を取得する関数
function parse_git_branch() {
  branch=$(git branch 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')
  if [ -z "$branch" ]; then
    echo "N/A"  # ブランチが無ければ "N/A" を表示
  else
    echo "$branch"  # ブランチがあればそのまま表示
  fi
}

# リポジトリ名取得関数
function parse_git_repos() {
  # Gitリポジトリかどうかを確認
  if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
    # Gitリポジトリの場合、リモートURLを取得しリポジトリ名を表示
    repos=$(basename -s .git "$(git remote get-url origin)")
    echo "$repos"  # リモートリポジトリ名を表示
  else
    echo "N/A"  # Gitリポジトリでない場合
  fi
}

# 色設定
RED="\[\033[01;31m\]"
YELLOW="\[\033[01;33m\]"
GREEN="\[\033[01;32m\]"
BLUE="\[\033[01;34m\]"
WHITE="\[\033[01;37m\]"
CYAN="\[\033[01;36m\]"
BOLD="\[\033[1m\]"
NO_COLOR="\[\033[00m\]"

# kube-ps1 の読み込み
source "/work/kube-ps/kube-ps1.sh"

# kube-ps1 のオプション設定
export KUBE_PS1_SYMBOL_ENABLE=false

# PS1 の統合
PS1="$GREEN\u@\h$WHITE:$BLUE\w $YELLOW($NO_COLOR$RED\$(parse_git_branch)$YELLOW) $NO_COLOR$BOLD\$(kube_ps1)$WHITE\$ $NO_COLOR"
#お試し版
#PS1="$CYAN\u$GREEN@\h$WHITE:$BLUE\w $YELLOW($BLUE🔧$YELLOW|$RED\$(parse_git_branch)$YELLOW) $BOLD\$(kube_ps1)$WHITE\$$NO_COLOR "
#PS1="$CYAN\u$GREEN@\h$WHITE:$BLUE\w $YELLOW($RED\$(parse_git_repos)$YELLOW:$CYAN\$(parse_git_branch)$YELLOW) $BOLD\$(kube_ps1)$WHITE\$$NO_COLOR "

Gitのbranchがある時

image.png

Gitのbranchがない時

image.png

k8sのネームスペース切替

image.png

1.Gitのプロンプト表示

主にこちらこちらのサイトを大いに参考(ほぼ丸パクリ)させて頂きました。
やっていること非常にシンプルで、git branchの結果をPS1変数に返しているだけです。

1-1.Gitのbranch名表示

以下の設定内容を~/.bashrcに記載し、source ~/.bashrc_で読み込みます。
色や表示内容はかなり好みによると思いますので、色々変えてみてください。

function parse_git_branch () {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
 
RED="\[\033[01;31m\]"
YELLOW="\[\033[01;33m\]"
GREEN="\[\033[01;32m\]"
BLUE="\[\033[01;34m\]"
NO_COLOR="\[\033[00m\]"
PS1="$GREEN\u@\h$NO_COLOR:$BLUE\w $RED\$(parse_git_branch)$NO_COLOR\$ "

Gitのbranchがあるディレクトリに移動すると、以下のように表示されます。
image.png

当然branchの切替を行うと、以下のように変更も反映されます。
image.png

2.k8sのコンテキスト・ネームスペースのプロンプト表示

こちらのGitにインストール手順などが記載されています。
まずは単純に資材をcloneします。今回は/work/kube-psにcloneしています。

root@k8s-master-node01:~ $ git clone https://github.com/jonmosco/kube-ps1.git /work/kube-ps
Cloning into '/work/kube-ps'...
remote: Enumerating objects: 760, done.
remote: Counting objects: 100% (195/195), done.
remote: Compressing objects: 100% (108/108), done.
remote: Total 760 (delta 107), reused 165 (delta 83), pack-reused 565 (from 1)
Receiving objects: 100% (760/760), 7.72 MiB | 13.94 MiB/s, done.
Resolving deltas: 100% (401/401), done.

次に、手順に記載の通り~/.bashrcに以下のように追記します。

source /work/kube-ps/kube-ps1.sh
PS1='[\u@\h \W $(kube_ps1)]\$ '

source ~/.bashrc_で読み込むと以下のように現在のコンテキストやネームスペースが表示されます。
image.png

3.Gitもk8sもどっちも表示する

解説も兼ねていたので、Gitとk8sそれぞれの表示方法を記載しました。
ただ、タイトルにもある通りどっちも見たいので、PS1変数に対していい感じにマージした物が冒頭の物になります。
上記で紹介した個別の物とマージ版で少し内容が変わっています。

  • branchが無い時は(N/A)と返却するように変更
  • KUBE_PS1_SYMBOL_ENABLE変数をfalseに設定(マークが非表示になる)

4.最後に

プロンプトに何を表示させるかは個人の好み、現場の方針などでだいぶ変わると思いますが、これで瞬時に判別できるようになるのでオペミスが減る…のでは…。

参考サイト

・Git ブランチ名を Bash プロンプトに表示する方法とカラーコーディング
https://qiita.com/c8h9no2/items/f54b1f2c43892d4b6310

・プロンプトをカスタマイズしてgitブランチを表示する
https://qiita.com/caad1229/items/6d71d84933c8a87af0c4

・kube-ps1
https://github.com/jonmosco/kube-ps1

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?