maven依赖
< dependency>
< groupId> org.gitlab</ groupId>
< artifactId> java -gitlab-api</ artifactId>
< version> 4.1.1</ version>
< exclusions>
< exclusion>
< groupId> org.slf4j</ groupId>
< artifactId> slf4j-api</ artifactId>
</ exclusion>
</ exclusions>
</ dependency>
< dependency>
< groupId> org.jsoup</ groupId>
< artifactId> jsoup</ artifactId>
< version> 1.10.2</ version>
</ dependency>
封装工具类
java">package cn. sdu. weblab. util ;
import cn. sdu. weblab. entity. User ;
import cn. sdu. weblab. entity. pojo. Project ;
import org. gitlab. api. GitlabAPI ;
import org. gitlab. api. models. CreateUserRequest ;
import org. gitlab. api. models. GitlabProject ;
import org. gitlab. api. models. GitlabUser ;
import org. jsoup. Connection ;
import org. jsoup. Jsoup ;
import org. jsoup. nodes. Document ;
import java . io. IOException ;
import java . util. Map ;
public class GitlabUtil {
static String ROOT_TOKEN = null ;
static GitlabAPI gitlab = null ;
static {
try {
ROOT_TOKEN = createPrivateToken ( "http" , "XXXXXX" , "8929" , "XXXXX" , "XXXXXXXXX" , "weblab" , "2022-07-07" ) ;
} catch ( Exception e) {
e. printStackTrace ( ) ;
}
gitlab = GitlabAPI . connect ( "http://XXXXXXXX/" , ROOT_TOKEN) ;
}
public static String createPrivateToken ( String protocol, String host, String port, String username, String password, String tokenName, String expireDate) throws Exception {
StringBuffer sb = new StringBuffer ( ) ;
sb. append ( protocol) ;
sb. append ( "://" ) ;
sb. append ( host) ;
sb. append ( ":" ) ;
sb. append ( port) ;
String baseLocation = sb. toString ( ) ;
String loginHtml = baseLocation + "/users/sign_in" ;
Connection loginHtmlConn = Jsoup . connect ( loginHtml) ;
Connection. Response loginHtmlRes = loginHtmlConn. execute ( ) ;
Document loginHtmlResDoc = Jsoup . parseBodyFragment ( loginHtmlRes. body ( ) ) ;
String auth = loginHtmlResDoc. getElementById ( "new_user" )
. select ( "input" )
. get ( 0 )
. attr ( "value" ) ;
String _gitlab_session = loginHtmlRes. cookie ( "_gitlab_session" ) ;
String loginApi = baseLocation + "/users/sign_in" ;
Connection loginApiConn = Jsoup . connect ( loginApi) ;
loginApiConn. cookie ( "_gitlab_session" , _gitlab_session) ;
loginApiConn. data ( "user[login]" , username) ;
loginApiConn. data ( "user[password]" , password) ;
loginApiConn. data ( "user[remember_me]" , "0" ) ;
loginApiConn. data ( "authenticity_token" , auth) ;
loginApiConn. method ( Connection. Method . POST) ;
Connection. Response loginApiRes = loginApiConn. execute ( ) ;
Map < String , String > loginStatusCookie = loginApiRes. cookies ( ) ;
String accessTokenHtml = baseLocation + "/-/profile/personal_access_tokens" ;
Connection tokenHtmlConn = Jsoup . connect ( accessTokenHtml) ;
tokenHtmlConn. cookies ( loginStatusCookie) ;
Document accessTokenHtmlDoc = tokenHtmlConn. get ( ) ;
String authenticity_token = accessTokenHtmlDoc
. getElementById ( "new_personal_access_token" )
. select ( "input" )
. get ( 0 )
. attr ( "value" ) ;
String accessTokenCreateApi = baseLocation + "/-/profile/personal_access_tokens" ;
Connection accessTokenCreateApiConn = Jsoup . connect ( accessTokenCreateApi) ;
accessTokenCreateApiConn. cookies ( loginStatusCookie) ;
accessTokenCreateApiConn. data ( "personal_access_token[name]" , tokenName) ;
accessTokenCreateApiConn. data ( "personal_access_token[expires_at]" , expireDate) ;
accessTokenCreateApiConn. data ( "personal_access_token[scopes][]" , "api" ) ;
accessTokenCreateApiConn. data ( "personal_access_token[scopes][]" , "read_api" ) ;
accessTokenCreateApiConn. data ( "personal_access_token[scopes][]" , "read_user" ) ;
accessTokenCreateApiConn. data ( "personal_access_token[scopes][]" , "read_repository" ) ;
accessTokenCreateApiConn. data ( "personal_access_token[scopes][]" , "write_repository" ) ;
accessTokenCreateApiConn. data ( "authenticity_token" , authenticity_token) ;
accessTokenCreateApiConn. method ( Connection. Method . POST) ;
Connection. Response accessTokenCreateApiRes = accessTokenCreateApiConn. execute ( ) ;
Document accessTokenCreateApiDoc = accessTokenCreateApiRes. parse ( ) ;
String token = accessTokenCreateApiDoc
. getElementById ( "created-personal-access-token" )
. attr ( "value" ) ;
System . out. println ( token) ;
return token;
}
public static String getRootToken ( ) {
return ROOT_TOKEN;
}
public static GitlabUser createGitlabUser ( User user) throws IOException {
CreateUserRequest info = new CreateUserRequest ( user. getUsername ( ) , user. getUsername ( ) , user. getEmail ( ) ) ;
info. setPassword ( user. getPassword ( ) ) ;
info. setSkipConfirmation ( true ) ;
GitlabUser gitlabUser = gitlab. createUser ( info) ;
return gitlabUser;
}
public static GitlabProject createGitlabProject ( Project project) throws IOException {
GitlabProject userProject = gitlab. createUserProject ( project. getGitlabUserId ( ) , project. getName ( ) , project. getDescription ( ) , "master" , null , null , null , null , null , null , null ) ;
return userProject;
}
public static void deleteGitlabProject ( Integer projectId) throws IOException {
gitlab. deleteProject ( projectId) ;
}
}