サーバーでgitlabを実行しています。今のところ、gitlab に追加する必要があるユーザーとメールのリストも取得しています。これを自動的に行う方法はありますか?(つまり、スクリプト/サービスによる)
3 に答える
GitLab API を使用して、スクリプトでユーザーを作成できます。 最近のバージョンの curl では、 POST データを URL エンコードできます。それ以外の場合、スペースはの代わりに%20
andにする必要があります。--data
--data-urlencode
curl --header "PRIVATE-TOKEN: QVy1PB7sTxfy4pqfZM1U" --data-urlencode "email=jon@doe.com&password=defaultpassword&username=jdoe&name=Jon Doe" "http://example.com/api/v3/users"
Curl は、好みのシェル言語 (私の場合は Bash) で最も抵抗の少ない方法です。curl を使用してユーザーを作成するスクリプトを作成したくない場合は、GitLab API と対話するためのさまざまな言語用の多数のライブラリがあります。好きなのを選びな。一般的なライブラリには次のものがあります。
- Java - java-gitlab-api
- PHP - php-gitlab-api
- Python - pyapi-gitlab、python-gitlab、またはpython-gitlab3
- Ruby - Gitlab ラッパー
他の言語用の API ライブラリは他にもたくさんあると思います。お好みの言語をグーグル検索して、クエリの一部としてGitLab APIを含めてください。
可能であれば (まだテストされていません)、 gitlab の API を公開する gitlab-shell ライブラリを介して実行できたはずです。
ただし、ユーザーの追加はまだ API の一部ではありません (ssh キーのみを追加します)。
Issue 1942には、gitlab 自体に API があることが記載されています。
次のようなテスターで例を挙げることができますspec/features/gitlab_flavored_markdown_spec.rb
:
require 'spec_helper'
describe "GitLab Flavored Markdown" do
let(:project) { create(:project_with_code) }
let(:issue) { create(:issue, project: project) }
let(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
let(:fred) do
u = create(:user, name: "fred")
project.team << [u, :master]
u
end
npm を介してインストールされた cli-gitlabは、LDAP (AD) とローカル ユーザーの両方でうまく機能しています。「管理者」ユーザーのトークンが保存されるため、スクリプトの作成や自動化がはるかに簡単になります。