Open7
DevOps
gitブランチのコミットハッシュを取得
$ git show-ref master
10540cf9c93bcbd909fb5f1431fc8809e5d51c9a refs/heads/master
10540cf9c93bcbd909fb5f1431fc8809e5d51c9a refs/remotes/origin/master
上記だとローカルとリモートの両方が取れてしまうので origin/*
を追加して -s
または --hash
オプションを付けることでコミットハッシュのみを取得できる。
$ git show-ref origin/master -s
10540cf9c93bcbd909fb5f1431fc8809e5d51c9a
git のコミットハッシュを正規表現で判定
s1=10540cf9c93bcbd909fb5f1431fc8809e5d51c9a
s2=hello1
$ if [[ $s1 =~ ^[0-9a-f]{40}$ ]]; then echo TRUE; else echo FALSE; fi;
TRUE
$ if [[ $s2 =~ ^[0-9a-f]{40}$ ]]; then echo TRUE; else echo FALSE; fi;
FALSE
gitで存在するブランチか判定
指定ブランチがリモートにしかない場合を考慮し、rev-parse
ではなく show-ref
でコミットハッシュを取得する。
$ git show-ref origin/my-branch -s
7b67ca4994c5b45cd57d5f980f9790cd9fa9b33f
コミットハッシュが取得できれていれば $?
は 0
を返すし、なければ 1
を返す。
$ echo $?
0
gitで存在するコミットハッシュか判定
$ git rev-parse --verify 7b67ca4994c5b45cd57d5f980f9790cd9fa9b33f
$ echo $?
実行してみるとこれで終了コード 0 なら存在するコミットハッシュであることを確認できてるように思いがちだが、コミットハッシュの末尾の文字数を減らしても終了コード 0 となってしまう
$ git log --format=%H | grep 7b67ca4994c5b45cd57d5f980f9790cd9fa9b33f
$ echo $?
git log
からなら完全一致で判定できる
GitHubのfine-grained personal access tokenでprivateリポジトリをcloneするためのPermission
Repository permissions の Contents の Read only 権限を付与すれば clone できる
Kubernetesでvolumeにマウントしたsecretを標準出力しないように利用する
Kubernetes のコンテナでシェルだけ実行するようなケースで秘匿情報をログ出力させたくない場合に役に立つ方法
見えてしまうやり方
container:
name: sample
image: ubuntu:latest
env:
- name: TOKEN
valueFrom:
secretKeyRef:
name: my-secret
key: token
環境変数に Secret のデータを使うと秘匿情報が展開され実行内容としてログ出力されてしまう
curl --header "Authorization: Bearer ${TOKEN}" "https://example.jp/api"
echo "machine github.com login ${TOKEN}" > ~/.netrc;
volume にマウントしxargsで受け取ればログ出力されない
環境変数として定義せず volume にマウントする
container:
name: sample
image: ubuntu:latest
volumeMounts:
- name: my-secret
mountPath: /my-secret
volumes:
- name: my-secret
secret:
secretName: my-secret
items:
- key: token
path: token.txt
xargs echo "Authorization: Bearer" < /my-secret/token.txt | curl --header @- "https://example.jp/api"
ファイルを標準入力として受け取り Authorization ヘッダーとして認証情報を作成し、curl のオプションに @-
指定することで標準入力として受け取る
xargs echo "machine github.com login" < /my-secret/token.txt > ~/.netrc
ファイルを標準入力として受け取り .netrc
に書き込む用の文字列を作成してホームディレクトリの .netrc
ファイルに出力する
現在のコミットハッシュを取得
$ git rev-parse HEAD
7b67ca4994c5b45cd57d5f980f9790cd9fa9b33f