tです。今回は、Bitbucketのプライベートリポジトリのスクリプトを、コマンド一発で実行する方法を説明します。
(ちなみに上の画像が爆誕したきっかけは、前回の記事をご覧ください)
始めに
Homebrewなど、コマンドラインツールをインストールする時に、インストールスクリプトをコマンド一発で実行したことがあるかもしれません。下記のようなもので、これはcurlコマンドで取得したスクリプトをファイルとして保存せずに、そのまま実行しています。
1 |
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
今回は、同じように、自作したスクリプトを、コマンド一発で実行したいと思いました。
ただ、スクリプトをBitbucketのプライベートリポジトリで管理していると、当然のことながら認証のことを考慮する必要があります。その認証がけっこうややこしいのかと思いきや、意外と簡単にできたので紹介します。
Bitbucketのプライベートリポジトリのシェルスクリプトを実行する
早速、コマンドを見ていきます。以下の設定で説明します。- ユーザ名: yourname
- リポジトリ名: repository
- シェルスクリプトのパス: /path/to/script.sh
- シェルスクリプトの引数: foo bar
1 2 3 |
curl -fsSL -u yourname \ https://bitbucket.org/yourname/repository/raw/master/path/to/script.sh | \ bash -s foo bar |
簡単にコマンドのオプションについて説明します。
curlコマンド
オプション「-fsSL」
まず、fsSLオプションについては、Homebrewのインストールコマンドと全く同じですが、どうもこのオプションでバッチリだったので、そのまま拝借しました。- f: サーバエラーがあったら終了
- sS: 進捗状況のみ表示せず、エラーは表示
- L: リダイレクトへの対応
オプション「-u」
uオプションで、ユーザ名を指定することで、認証を行なうことができます。オプションひとつで認証に対応できるとは思っていなかったので、拍子抜けしました。ちなみに、「-u yournane:password」のように、オプションに直接パスワードを指定することもできますが、シェルの履歴に残ることが考えられますので、おすすめしません。
bashコマンド
curlコマンドで取得したスクリプトをbashコマンドに渡すことで実行しています。- s: 取得したスクリプトに対する引数を指定できる
終わりに
このように、プライベートリポジトリのスクリプトをcurlで取得できれば、公開しづらいスクリプトがコマンド1発で実行できるようになって、便利です。あらかじめローカルにスクリプトをダウンロードしておく手間が省けるからです。例えば、dotfiles(シェルなどの環境設定ファイル)をローカル環境にセットアップするシェルスクリプトをBitbucket上に置いておき実行する、などの利用方法もあると思います。
Bitbucketのプライベートリポジトリに限らず、curlコマンドで取得したスクリプトを実行できれば、手軽にネット上のスクリプトを使えるので、知っておくと良い方法だと思いました (ただし、実行するスクリプトは、信頼できることを確かめてから実行してください)。
キー・ポイントでは、なんでもコマンド一発でこなすエンジニアを募集しています。