hubコマンドにGitHub Enterprise環境を追加する

<code>hub</code> コマンドをご存じでしょうか。インストールしてalias git=hubと設定するだけで、gitコマンドからGitHubの操作ができるようになる優れものです。特に個人的にはgit createとするだけでGitHub上にリポジトリが作成される、というのが非常に便利だと思っています。 さて、皆さんの会社ではgitサーバはどのように構築されているでしょうか。いろいろな選択肢がありますが、それなりの規模だとGitHub Enterprise(以下GHE)を利用している、という会社も多いと思います。 実際、現職ではGHEを使っています。 そのような場合、趣味/個人の開発ではgithub.com、会社ではGHEと使い分けることとなりますが、GHEでhubが使えないとすると非常に不便です。そう考えて調べてみると、Web上では、hubをGHE環境で使うには環境変数を使うとする設定例が散見されます。 しかし実は、hubは複数環境での使用をサポートしているんです。 設定方法は至って簡単で、$HOME/.config/hubに設定を書き足すだけです。実際に見てみましょう。 すでにhubを使っている場合、cat $HOME/.config/hubで設定を見ることができます。私の場合、次のようになっていました(oauth_tokenは潰してありますが、実際にはトークンが入っています)。 github.com: - user: nasa9084 oauth_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx protocol: https どんな項目かは明らかですね。ここに会社のGHEの環境に関する情報を追記します。 まず、自社のGHEのアドレス以下/settings/tokensを開きます。Generate new tokenボタンをクリックし、新規でPersonal access tokenを発行します。名称はわかりやすい物を任意で付けてください。hubはリポジトリを操作するコマンドですから、scopeはrepoを与えれば十分でしょう。画面下部のGenerate tokenボタンをクリックすると、トークンが発行されますので、これをコピーしておきます。 手元のエディタ(お好みの物を使用してください)で$HOME/.config/hubを開き、設定を追加します。 YOUR_GHE_DOMAIN: - user: YOUR_USERNAME oauth_token: YOUR_TOKEN protocol: https オブジェクトのキーとしてGHEのドメインを、userはGHEでログインに使用するユーザ名を使用します。oauth_tokenに先ほど生成したPersonal access tokenを設定し、保存します。保存できたら、hubでGHEにアクセスができるようになっているはずです。 実際に使うと、次の様にどのホストを使用するか聞かれ、好きな方を選べるようになっています。 $ git create Select host: 1. github.com 2. YOUR_GHE_DOMAIN > 1 Updating origin https://github.com/nasa9084/REPOSITORY_NAME

2019-08-22 · nasa9084

git ignoreコマンドで.gitignoreを取得する

割とみんな知ってるのかもしれないですが。 git-xxxという名称で実行可能ファイルをパスの通ったところに配置すると、git xxxというgitのサブコマンドの形で実行することができるようになります。これを利用したのが拙作git-license で、git license [option] license_name > LICENSEの形で実行するとLICENSEファイルを簡単に作成することができます。 その他、git configでエイリアスを指定して、サブコマンドとして登録することも可能です。 同様にして、git ignoreで`.gitignoreファイルを簡単に取得できるようにしてみましょう。 おそらく現代では多くの人が.gitignoreの生成やテンプレート化をして、あるいはテンプレート化されたものを利用しているのではないでしょうか。GitHubのWUI上でリポジトリを作成するときにも生成することができますし、そのさい使用される.gitignoreファイルとしてgithub/gitignore が提供されています。 今回紹介するのはgitignore.io というサービスです。 gitignore.ioはその名の通り、.gitignoreファイルを生成するサービスです。 基本的な使い方は非常に簡単で、ブラウザでアクセスして、テキストボックスに必要な言語、OS、エディタやIDEなどを指定していくだけです。指定が終わったらCreateボタンを押すことで、選択した対象用の.gitignoreテンプレートを全て含んだ.gitignoreファイルが作成されます。これを保存すれば良いですね。 しかし、その他の作業をコマンドラインから行なっていると、いちいちブラウザでアクセスして、マウスで操作して・・・というのが非常に面倒に感じます。 大丈夫です!gitignore.ioではもちろんAPIを提供しています(というか、WUIで生成された.gitignoreのURLがそのままAPIのURL)。 次のように実行してみます。 $ curl https://www.gitignore.io/api/go,emacs,macos https://www.gitignore.io/api/の後ろに、カンマ区切りで必要なものを列挙して行くだけで、簡単にコマンドラインから.gitignoreファイルを取得できます。 ここまでやったらもう少し簡単にしたいですね?いちいちURLを打つのは面倒ですし、忘れてしまうかもしれません。せっかくなのでgitのサブコマンドとしてgit ignoreとできるようにしてみましょう。次のコマンドを実行してみます。 $ git config --global alias.ignore '!gi() { curl -L -s https://www.gitignore.io/api/$@ ;}; gi' もしくは、~/.gitconfigファイルの[alias]のセクションに次のように設定しても良いでしょう。 [alias] ignore = !curl -L -s https://www.gitignore.io/api/$@ $@は引数をそのまま渡すという変数です。このように設定をすることで、git ignoreとしてgitignore.ioのAPIを利用することができるようになります。実際に使用する時は次のように使用します。 $ git ignore go,emacs,macos 言語や環境のリストは全てまとめて一つの引数のため、カンマの後にスペースを入れないことに注意です。指定できる環境の一覧はgit ignore listとすることで表示できます。 標準出力をそのままリダイレクトして、.gitignoreファイルに書き込めばプロジェクトの初期設定として使用できるでしょう。

2018-11-13 · nasa9084

confd + initContainerでAlertmanagerの設定をSecretに逃がす

TL;DR Alertmanagerの設定には一部Secretが含まれる バージョン管理システムに入れたくない initContainerでconfdを使って設定ファイルを生成する Alertmanagerの設定の一部をSecretに格納できる confd kelseyhightower/confd は非常に軽量な設定ファイル管理ツールです。基本的にはテンプレートエンジンですが、多くのバックエンドデータストアからデータを持ってきて、設定ファイルに書き出すことが出来ます。 また、事前処理や事後処理を行うことが出来るので、例えば設定ファイルを書き換えたあと、リロードする、というところまでconfdで行うことが出来ます。 Install Go言語で書かれているため、インストールは非常に簡単で、バイナリをダウンロードしてきて実行権限を与え、パスの通ったところに置くだけです。バイナリはリリースページ からダウンロードすることが出来ます。 使用方法 confdを使用するためには、三つのものを用意する必要があります。 テンプレートリソース テンプレート データストア テンプレートリソース テンプレートリソースには、どのテンプレートを使用して、どんなキーでデータストアからデータを取り出し、完成した設定ファイルをどこに置くのか、事前処理・事後処理はどんなものかを記述します。書式はTOMLで、慣れ親しんだ(慣れ親しんでない?)iniファイルの様に気軽に書くことが出来ます。/etc/confd/conf.d以下に配置します。 テンプレート テンプレートはその名の通り、設定ファイルのテンプレートです。ここに、データストアから取り出したデータを合わせて設定ファイルを作成します。書式はGo言語の<code>text/template</code> に準じます。/etc/confd/templates以下に配置します。 データストア そして、データストアにデータを入れる必要があります。 confdは、データストアとして、次のものをサポートしています(2018/08/20現在) etcd (GitHub: coreos/etcd ) consul (GitHub: hashicorp/consul ) dynamodb redis (GitHub: antirez/redis ) vault (GitHub: hashicorp/vault ) zookeeper (GitHub: apache/zookeeper ) rancher metadata-service (GitHub: rancher/rancher , rancher/metadata ) AWS Systems Manager パラメータストア 環境変数 ファイル Alertmanager Alertmanager はPrometheus からのアラートを受け取り、適切にハンドルするためのアプリケーションです。Alertmanagerの設定はYAMLで記述するのですが、SMTPのパスワードやSlack のIncoming Webhook URL 等、平文でバージョン管理システムに入れるのは躊躇われるデータを含みます。しかし、環境変数などから設定をすることも出来ないため、平文で記述するか、何らかの方法で設定ファイルを編集してから使う必要があります。 特に、Prometheus/AlertmanagerはKubernetes と併せて使用されることが多いため、出来ればKubernetesのSecret機能を使用したいところです。 そこでconfdをinitContainerで使用して、設定ファイルを生成します。...

2018-08-20 · nasa9084

Generates LICENSE file: git-license

When we create a new repository on GitHub , we can choose an open source license. We choose an OSS license, then, LICENSE file is put into the new repository. Now, I’m usually using <code>hub</code> command to create a new repository. I’ll do below to create: $ mkdir my_new_repository $ cd my_new_repository $ git init # # ... some code writing and commit ... # $ git create # git command is aliased to hub $ git push -u origin master In this flow, I can write description for repository1, set homepage2, make the repository private3, but I CANNOT choose LICENSE....

2018-02-21 · nasa9084