【问题标题】:GitBlit add a hookGitBlit 添加一个钩子
【发布时间】:2018-01-15 16:00:45
【问题描述】:

我在 Windows 服务器上有一个 GitBlit 实例,我想在接收后回调中设置一个 hook 以在另一台服务器上启动一个 gitlab ci 管道。

我已经设置了一个运行良好的 GitlabCi 触发器,但我的钩子没有。这是build-gitlab-ci.groovy 文件:

import com.gitblit.GitBlit
import com.gitblit.Keys
import com.gitblit.models.RepositoryModel
import com.gitblit.models.UserModel
import com.gitblit.utils.JGitUtils
import org.eclipse.jgit.lib.Repository
import org.eclipse.jgit.revwalk.RevCommit
import org.eclipse.jgit.transport.ReceiveCommand
import org.eclipse.jgit.transport.ReceiveCommand.Result
import org.slf4j.Logger

logger.info("Gitlab-CI hook triggered by ${user.username} for ${repository.name}")

// POST :
def sendPostRequest(urlString, paramString) {
    def url = new URL(urlString)
    def conn = url.openConnection()
    conn.setDoOutput(true)
    def writer = new OutputStreamWriter(conn.getOutputStream())

    writer.write(paramString)
    writer.flush()
    String line
    def reader = new BufferedReader(new     InputStreamReader(conn.getInputStream()))
    while ((line = reader.readLine()) != null) {
        println line
    }
    writer.close()
    reader.close()
}
sendPostRequest("https://xxxxx/api/v4/projects/1/trigger/pipeline", "token=xxxxxxxx&ref=master")

项目配置:

另外,我不知道logger.info在哪里写日志,所以我不知道我的脚本是否执行得很好。感谢您的帮助

【问题讨论】:

    标签: groovy gitlab githooks grape gitblit


    【解决方案1】:

    我发现了我的问题,这是一个 SSL 自证书问题。我添加了这段代码以忽略它:

    import com.gitblit.GitBlit
    import com.gitblit.Keys
    import com.gitblit.models.RepositoryModel
    import com.gitblit.models.UserModel
    import com.gitblit.utils.JGitUtils
    import org.eclipse.jgit.lib.Repository
    import org.eclipse.jgit.revwalk.RevCommit
    import org.eclipse.jgit.transport.ReceiveCommand
    import org.eclipse.jgit.transport.ReceiveCommand.Result
    import org.slf4j.Logger
    
    logger.info("Gitlab-CI hook triggered by ${user.username} for ${repository.name}")
    
    def nullTrustManager = [
        checkClientTrusted: { chain, authType ->  },
        checkServerTrusted: { chain, authType ->  },
        getAcceptedIssuers: { null }
    ]
    
    def nullHostnameVerifier = [
        verify: { hostname, session -> hostname.startsWith('yuml.me')}
    ]
    
    javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL")
    sc.init(null, [nullTrustManager as  javax.net.ssl.X509TrustManager] as  javax.net.ssl.X509TrustManager[], null)
    javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory())
    javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(nullHostnameVerifier as javax.net.ssl.HostnameVerifier)
    
    def url = new URL("https://xxxx/api/v4/projects/{idProject}/trigger/pipeline")
    def conn = url.openConnection()
    conn.setDoOutput(true)
    def writer = new OutputStreamWriter(conn.getOutputStream())
    
    writer.write("token={token}&ref={branch}")
    writer.flush()
    String line
    def reader = new BufferedReader(new InputStreamReader(conn.getInputStream()))
    while ((line = reader.readLine()) != null) {
        println line
    }
    writer.close()
    reader.close()
    

    我发现检查 E:\gitblit-1.7.1\logs\gitblit-stdout.{date}.log 中的日志时出错。

    注意:stdout 文件日期可能很旧。 Gitblit 不会每天创建一个文件。我的名字在 4 个月前过期了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      相关资源
      最近更新 更多