GitHub | octokit.rb で 公開鍵を登録・参照・削除 #github #octokit
概要
octokit.rb で GitHub に公開鍵を追加・参照・削除します。
前提
- 対象ユーザーは GitHub に登録済み
- octokit.rb をインストール済み
手順
Gemfile の作成
環境変数の設定に dotenv gem を利用します
source "https://rubygems.org"
gem "dotenv"
gem "octokit"
.env の作成
GitHub のアクセストークンは GitHub で確認。
鍵のパスは登録対象の鍵のパスを記述する。
PUBLIC_KEY_ID は GitHub に登録する際の鍵の ID を指定します
GITHUB_ACCESS_TOKEN=your_access_token
PUBLIC_KEY_PATH=/path/to/your/key
PUBLIC_KEY_ID=your_key_id
鍵の登録スクリプト
API は以下。
add_key
鍵の ID にはタイムスタンプを付与します。
require 'octokit'
require 'dotenv'
Dotenv.load
client = Octokit::Client.new(:access_token => ENV['GITHUB_ACCESS_TOKEN'])
timestamp = Time.now.strftime('%Y%m%d_%H%M%S')
# key name format = base_keyname + _ + timestamp (yyyymmdd_hhmiss)
client.add_key("#{ENV['PUBLIC_KEY_ID']}_#{timestamp}", File.read(ENV['PUBLIC_KEY_PATH']))
鍵登録の実行
ruby add_public_key.rb
鍵の参照スクリプト
API は以下。
keys
.env ファイル・ Gemfile は登録処理と同じ。
自ユーザーの鍵をすべて取得します。
require 'octokit'
require 'dotenv'
Dotenv.load
client = Octokit::Client.new(:access_token => ENV['GITHUB_ACCESS_TOKEN'])
print client.keys.map { |e|e[:title] }
鍵参照の実行
ruby list_public_keys.rb
- 実行結果
["deploy_20141211_151046"]
鍵の削除スクリプト
API は以下。
remove_key
.env ファイル・ Gemfile は登録処理と同じ。
登録処理で複数登録した鍵のうち、最新のタイムスタンプを除いて削除します
require 'octokit'
require 'dotenv'
Dotenv.load
client = Octokit::Client.new(:access_token => ENV['GITHUB_ACCESS_TOKEN'])
puts "before remove"
print client.keys.map { |e|e[:title] }, "\n"
puts "start remove"
client.keys.sort_by { |e|e[:title] }
.reverse
.drop(1)
.each { |e|client.remove_key(e[:id]) }
puts "finish remove"
puts "after remove"
print client.keys.map { |e|e[:title] }, "\n"
鍵削除の実行
ruby remove_public_key.rb
- 出力
before remove
["deploy_20141211_154231", "deploy_20141211_154939", "deploy_20141211_154956"]
start remove
finish remove
after remove
["deploy_20141211_154956"]