Gitlab使用python批量創建用戶

本文使用python的python-gitlab庫實現,python環境3.6.8
安裝庫

pip3 install python-gitlab

這裏先貼出源碼

# coding=utf-8
import gitlab
import requests

def add(gl):
    gid = int(input('Group ID: '))
    group = gl.groups.get(gid)
    print(group.name)
    mkey = []
    path = 'useradd.txt'
    with open(path,'r') as f:
        for fnun in f.readlines():
            fkey = fnun.strip()
            name = fkey.split(',')[0]
            mail = fkey.split(',')[1]
            username = mail.split('@')[0]
            passwd = fkey.split(',')[2]
            user = gl.users.create({'email':mail,'password':passwd,'username':username ,'name':name})
            print(user.username,user.id)
            mkey.append(user.id)
    for i in mkey:
        member = group.members.create({'user_id':i,'access_level':30})
        print(member.username,member.access_level)

def main():
    gl = gitlab.Gitlab.from_config('somewhere', ['gitlab.cfg'])
    #gl = gitlab.Gitlab('http://0.0.0.0', private_token='your_token')
    add(gl)
    
if __name__ == '__main__':
    main()

在連接gitlab的時候,可以參考api官方手冊,一般用兩種方式直接通過ip和私有的token連接,或者使用配置文件進行連接。因爲我這裏配置了https,所以採用的配置文件gitlab.cfg進行連接,文件內容具體如下:

[global]
default = somewhere
ssl_verify = False
timeout = 5

[somewhere]
url = https://0.0.0.0
private_token = your_token
api_version = 4

新版的gitlab不再支持api v3,所以使用v4。這裏填寫上你的ip地址以及私有的token就可以了。我這裏ssl選擇的False因爲我沒有真正的證書,只是本地生成的證書。
如果不使用配置文件的方法直接用我註釋的那行代碼,把上面那行註釋掉就可以了。
我們這裏使用批量創建用戶的方法是讀取了當前目錄下的useradd.txt的文件,格式如下:

張三,[email protected],12345678

Q&A
1.解釋一下access_level這個字段的意思
gitlab裏面分爲Guest,Reporter,Developer,Maintainer,Owner,對應的id是10,20,30,40,50,所以這裏默認用的30也就是Developer的權限,具體權限可以參考gitlab的官方文檔。程序默認會讓你選擇他們是哪個組,可以點擊組的名字看到Group ID。
2.在哪裏新建私有的token
在管理員賬戶中點擊用戶頭像,選擇setting(設置),再選着Access Tokens(訪問令牌),填寫名字,然後選擇api,點擊創建就可以了,一定要好好記住顯示的tokens值,因爲一旦離開頁面,以後都看不到了,而且不要給其他人。
3.爲什麼創建了用戶無法登陸?
gitlab要使用郵件進行確認,但是可以跳過確認用戶。只需要將users.create那一段修改一下就好。
代碼如下:

user = gl.users.create({'email':mail, 'password':passwd, 'username':username, 'name':name, 'skip_confirmation':True})

參考網址:
https://blog.51cto.com/8669236/2287084?source=dra
https://python-gitlab.readthedocs.io/en/stable/
https://docs.gitlab.com/ce/api/users.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章