1

我们使用 maven 构建项目并使用 GitLab Ci 将其部署到我们的 nexus 存储库中。实时部署由另一个团队完成,该团队要求接收“scmCommitId”以检查是否部署了正确的版本。因此我们必须建立scm连接。

我尝试在pom.xml文件中使用 scm-connection,例如:

<scm>
  <connection>scm:git:https://gitlab-ci-token:GITLAB-CI-TOKEN@gitlabserver.com:path/to/project/projectname.git</connection>
</scm>

如果我在本地使用scm:git:git@gitlabserver.com:path/to/project/projectname.git它可以工作并且 maven build 连接并显示最后的提交,例如:

| master-SNAPSHOT
|\
||                                                                        by [Developer]
||                                                                        [86d70a0]
||                                                                        by [Developer]
||                                                                        [2122a35]
||                                                                        by [Developer]
||                                                                        [790f523]
|| ...

如果我在 GitLab Ci 上使用相同的代码,它无法连接,因为 GitLab Ci 请求通过 HTTPs 连接。所以我确实尝试使用:

scm:git: https://gitlab-ci-token:GITLAB-CI-TOKEN@gitlabserver.com:path/to/project/projectname.git通过在before_script中替换我的gitlab-ci.yml中的GITLAB-CI-TOKEN$CI_JOB_TOKEN

  before_script:
    - sed -i "s/GITLAB-CI-TOKEN/$CI_JOB_TOKEN/g" pom.xml
  script: mvn package 
  after_script:
    - sed -i "s/$CI_JOB_TOKEN/GITLAB-CI-TOKEN/g" pom.xml

这仍然不起作用:

something is wrong with your scm connection: "://gitlab-ci-token:TOKENgitlabserver.com:path/to/project/projectname.git" != "https://gitlab-ci-token:TOKENgitlabserver.com:path/to/project/projectname.git"
raw: "scm:git:https://gitlab-ci-token:[MASKED]@gitlabserver.com:path/to/project/projectname.git" != "https://gitlab-ci-token:[MASKED]@gitlabserver.com:path/to/project/projectname.git"

“https”协议在某个地方丢失了。如果我尝试使用 http,它会保留协议但会失败,因为它是错误的协议:

something is wrong with your scm connection: "http://gitlab-ci-token:TOKENgitlabserver.com:path/to/project/projectname.git" != "https://gitlab-ci-token:TOKENgitlabserver.com:path/to/project/projectname.git"

可以通过https连接吗?或者是否可以告诉 GitLab Ci 请求另一种方法,比如通过 ssh 连接?或者只是为了测试,如果它可以工作,告诉 GitLab 使用 http 代替?

4

0 回答 0