git 如何正确连接Bitbucket和Jenkins

yks3o0rb  于 2023-04-19  发布在  Git
关注(0)|答案(7)|浏览(224)

从现在起大约一周,Bitbucket没有(?)向我的Jenkins服务器发送请求。
我把它设置成这样:
Endpointhttp://username:apitoken@jenkinshost/
username = Jenkins中的用户名
apitoken = apitoken连接到Jenkins中的用户名
jenkinshost =我运行Jenkins的主机
Project name是一个项目
Token:我可以在每个项目配置中设置的令牌。
我是根据这个网站做的:http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins
它确实有效,但现在已经不起作用了。Bitbucket是否改变了什么?我该如何解决这个问题?

jslywgbw

jslywgbw1#

为了在新提交后构建你的repo,使用Bitbucket Plugin

只有一件事需要注意:当创建一个POST钩子时(注意它是POST钩子,不是Jenkins钩子),URL在结尾有一个“/”时才起作用。像:

URL: JENKINS_URL/bitbucket-hook/
e.g. someAddress:8080/bitbucket-hook/

别忘了在作业配置中勾选“当更改推送到Bitbucket时构建”。

dauxcl2d

dauxcl2d2#

我有一个类似的问题,直到我得到它的工作.下面是完整的集成列表:
1.生成公钥/私钥对:ssh-keygen -t rsa
1.复制公钥(~/.ssh/id_rsa.pub)并粘贴到Bitbucket SSH密钥中,在用户的账户管理控制台中:

1.将私钥(~/.ssh/id_rsa)复制到具有私钥凭证的新用户(甚至现有用户),在这种情况下,username不会产生任何影响,因此username可以是任何内容:

1.运行此命令测试是否可以访问Bitbucket账户:ssh -T git@bitbucket.org
1.可选:现在,您可以使用git to将repo复制到您的桌面,而无需passwjord git clone git@bitbucket.org:username/repo_name.git
1.现在,您可以为Jenkins推送通知和自动构建启用Bitbucket钩子,您将在2个步骤中完成:
1.在您配置的作业/项目中添加身份验证令牌,它可以是任何内容:

1.在Bitbucket钩子中:选择jenkins hooks,并填写以下字段:

其中:

**End point**: username:usertoken@jenkins_domain_or_ip
**Project name**: is the name of job you created on Jenkins
**Token**: Is the authorization token you added in the above steps in your Jenkins' job/project 

Recommendation: I usually add the usertoken as the authorization Token (in both Jenkins Auth Token job configuration and Bitbucket hooks), making them one variable to ease things on myself.
c8ib6hqw

c8ib6hqw3#

我刚刚能够使用Bitbucket中的Hooks选项成功触发构建提交到Jenkins示例,步骤如下(类似于link):
1.生成自定义UUID或字符串序列,保存以备后用

  1. Jenkins -〉配置项目-〉构建触发器-〉“远程触发构建(例如,从脚本)”
    1.(Paste UUID/string Here)for“Authentication Token”
    1.保存
    1.编辑Bitbucket存储库设置
    1.挂钩-〉编辑:端点:http://jenkins.something.co:9009/模块名称:项目名称:项目名称令牌:(在此处粘贴UUID/string)
    尽管使用了身份验证,但端点不需要在URL中插入基本的HTTP身份验证。我没有使用模块名称字段,项目名称是区分大小写输入的,在我的测试用例中包括一个空格。构建并不总是立即触发,但相对较快。您可能会考虑的另一件事是禁用“配置全局安全性”中的“防止跨站点请求伪造漏洞”选项进行测试,因为我当启用此选项时,我经历了现有集成的各种API困难。
c7rzv4ha

c7rzv4ha4#

通过迭代,我了解到Token字段和端点中的令牌可以相同。所以我将它们设置为与用户令牌相同,并且它可以工作!还要检查用户是否具有创建作业的权限。
无论如何,你可以检查 * access.log *,看看Bitbucket是否尝试了。

另外还有一个Bitbucket Documentation的链接。也许有一天它会变得更有用。

ergxz8rk

ergxz8rk5#

我不熟悉这个插件,但我们非常成功地一起使用Bitbucket和Jenkins,但是我们轮询更改而不是从BitBucket推送更改(由于我们的构建服务器隐藏在公司防火墙后面)。如果您仍然对当前方法有问题,这种方法可能对您有用。
这篇关于Setting up SSH for Git & Mercurial on Linux的文档详细介绍了如何通过SSH在构建服务器和Bitbucket之间进行通信。完成后,安装了Git Plugin,转到构建配置并在源代码管理下选择“Git”,然后输入仓库的ssh URL作为仓库URL。最后,在构建触发器部分,选择轮询SCM并将轮询频率设置为您所需的任何频率。

7cwmlq89

7cwmlq896#

我遇到了这个问题,结果发现问题是我用CamelCase命名了我的仓库。Bitbucket自动将仓库的URL更改为小写,并在webhook中发送给Jenkins。Jenkins然后搜索具有匹配仓库的项目。如果你像我一样,在你的项目配置中的仓库URL中有CamelCase,你将能够 checkout 代码,但是Webhook请求上的模式匹配将失败。
只需将您的repo URL更改为全部小写而不是CamelCase,模式匹配应该可以找到您的项目。

fcy6dtqo

fcy6dtqo7#

好的,我已经成功地建立了Jenkins和Bitbucket服务器之间的连接,但是我在进入ec2服务器上的目录时遇到了问题,我在那里克隆了我的bitbucket存储库〉
下面是我的脚本和Jenkins控制台输出

pipeline {
agent any

stages {
    stage('Checkout Git Repository') {
        steps {
            // Set up the checkout directory
            sh 'cd /var/lib/jenkins/test'
            sh 'git status'
            sh 'ls -la /var/lib/jenkins'

            // Check out the current branch of the Git repository
            dir('/home/ec2-user/Sona-Grafana/BitBucket-Repo/observability/soc-poc') {
                git url: 'https://Emmanuel-Sona@bitbucket.org/emmanuel-sona/soc-jenkins.git'
            }
        }
    }

我无法cd到/home/ec2-user/Sona-Grafana/BitBucket-Repo/observability/soc-poc。它只允许我进入/var/lib/jenkins/test
Docker-compose文件,用于启动在EC2示例上运行的Jenkins服务器

version: '3'

services:
  jenkins:
    container_name: ops_jenkins_server
    image: jenkins/jenkins:lts-jdk11
    ports:
      - "8080:8080"
    volumes:
      - jenkins_home:/var/jenkins_home
      - /opt/jenkins_container_volume:/var 
      - /home/ec2-user/Sonalake-Grafana/BitBucket-Repo/observability/soc-poc:/var/lib/jenkins  
    environment:
      - JENKINS_OPTS="--httpPort=8080"
      - JAVA_OPTS="-Djenkins.install.runSetupWizard=false"

  docker:
    image: docker:latest
    privileged: true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

volumes:
  jenkins_home:

networks:
  default:
    driver: bridge

相关问题