0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Bitbucket | bitbucket_rest_api gem で 公開鍵を登録・参照・削除 #bitbucket

Posted at

Bitbucket | bitbucket_rest_api gem で 公開鍵を登録・参照・削除 #bitbucket

概要

bitbucket_rest_api gem で 公開鍵を追加・参照・削除します。

前提

手順

Gemfile の作成

環境変数の設定に dotenv gem を利用します

source "https://rubygems.org"

gem "dotenv"
gem "bitbucket"

.env の作成

鍵のIDは BitBucket に登録する際のラベル名を指定する。
鍵のパスは登録対象の鍵のパスを記述する。
Basic 認証用のユーザー名とパスワードを記述する。

PUBLIC_KEY_PATH=public_key_path
PUBLIC_KEY_ID=deploy
LOGIN=your_login_name
PASSWORD=your_password

鍵の登録スクリプト

API は以下。
new_key

鍵の ID にはタイムスタンプを付与します。

require 'bitbucket_rest_api'
require 'dotenv'

begin
  Dotenv.load
  bitbucket = BitBucket.new basic_auth: "#{ENV['LOGIN']}:#{ENV['PASSWORD']}"

  timestamp = Time.now.strftime('%Y%m%d_%H%M%S')
  bitbucket.users.account.new_key(ENV['LOGIN'], {
    key: File.read(ENV['PUBLIC_KEY_PATH']),
    label: "#{ENV['PUBLIC_KEY_ID']}_#{timestamp}" 
  })
  puts "Complete add '#{ENV['PUBLIC_KEY_ID']}_#{timestamp}' key"
  exit(true)
rescue => e
  puts e.message
  exit(false)
end

鍵登録の実行

$ ruby new_key.rb
Complete add 'deploy_20141212_151637' key

鍵の参照スクリプト

API は以下。
keys

.env ファイル・ Gemfile は登録処理と同じ。
自ユーザーの鍵をすべて取得します。

require 'bitbucket_rest_api'
require 'dotenv'

begin
  Dotenv.load
  bitbucket = BitBucket.new basic_auth: "#{ENV['LOGIN']}:#{ENV['PASSWORD']}"

  print bitbucket.users.account.keys(ENV['LOGIN']).map { |e|"id:#{e.pk},label:#{e.label}" }.join("\n") + "\n"
  exit(true)
rescue => e
  puts e.message
  exit(false)
end

鍵参照の実行

$ ruby keys.rb
id:2249918,label:deploy_20141212_151637
id:2249873,label:deploy_20141212_150343
id:2249871,label:deploy_20141212_150247
id:2249868,label:deploy_20141212_150207
id:2249860,label:deploy_20141212_150018
id:2249858,label:deploy_20141212_145946

鍵の削除スクリプト

API は以下。
delete_key

.env ファイル・ Gemfile は登録処理と同じ。
登録処理で複数登録した鍵のうち、最新のタイムスタンプを除いて削除します

require 'bitbucket_rest_api'
require 'dotenv'

def show_keys(bitbucket)
  print bitbucket.users.account.keys(ENV['LOGIN']).map { |e|"id:#{e.pk},label:#{e.label}" }.join("\n") + "\n"
end

begin
  Dotenv.load
  bitbucket = BitBucket.new basic_auth: "#{ENV['LOGIN']}:#{ENV['PASSWORD']}"

  puts "before remove"
  show_keys(bitbucket)
  puts "start remove"
  bitbucket.users.account.keys(ENV['LOGIN']).sort_by { |e|e[:label] }
            .reverse
            .drop(1)
            .each { |e|bitbucket.users.account.delete_key(ENV['LOGIN'], e[:pk]) }
  puts "end   remove"
  show_keys(bitbucket)
  puts "after remove"
  exit(true)
rescue => e
  puts e.message
  exit(false)
end

鍵削除の実行

ruby delete_public_key.rb
  • 出力
$ ruby delete_key.rb
before remove
id:2249918,label:deploy_20141212_151637
id:2249873,label:deploy_20141212_150343
id:2249871,label:deploy_20141212_150247
id:2249868,label:deploy_20141212_150207
id:2249860,label:deploy_20141212_150018
id:2249858,label:deploy_20141212_145946
start remove
end   remove
after remove
id:2249918,label:deploy_20141212_151637

補足

  • REST API の検証時に、 Bitbucket が提供している REST API Console を利用すると便利です

参照

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?