我们拥有Bitbucket Cloud而非Bitbucket Server。有没有办法修改Bitbucket上的“预接收”功能?目标是审核推送,以确保在Bitbucket上的代码可用之前没有明显的漏洞。Git-hooks可能有效,但是实际上并没有办法将它们放入同一版本库中的版本控制中-我能想到的唯一方法是将其放入Bitbucket服务器并修改远程版本库,但我不认为你能做到吗?
我唯一的猜测是,可能有一种方法可以通过将钩子放在仓库中这样的地方来将预接收钩子保留在源代码控制中:
.bitbucket/pre-receive
Run Code Online (Sandbox Code Playgroud)
但是很难在网上找到任何信息。
我试图运行以下步骤,但它不执行“如果”步骤(第5和第6行)(我很确定它们应该是不存在的,因为要测试的目录不存在,我尝试了多种bash格式,但它们都失败了,是否有一种方法可以测试比我正在使用的条件更好的条件?
- step:
name: Google Cloud SDK Installation
caches:
- pip
- cloudsdk
script:
- export ENV=dev
- source scripts/setenv.sh
- export CLOUDSDK_CORE_DISABLE_PROMPTS=1
- SDK_FILENAME=google-cloud-sdk-$SDK_VERSION-linux-x86_64.tar.gz
- if [ ! -e ${HOME}/google-cloud-sdk ] ; then `curl -O -J https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/${SDK_FILENAME}`; fi
- if [ ! -e ${HOME}/google-cloud-sdk ] ; then `tar -zxvf ${SDK_FILENAME} --directory ${HOME}`; fi
- export PATH=${PATH}:${HOME}/google-cloud-sdk/bin
- GAE_PYTHONPATH=${HOME}/google_appengine
- export PYTHONPATH=${PYTHONPATH}:${GAE_PYTHONPATH}
- python scripts/fetch_gae_sdk.py $(dirname "${GAE_PYTHONPATH}")
Run Code Online (Sandbox Code Playgroud) 我们的团队在 Bitbucket 上有一个帐户,我们必须为每个存储库配置 Webhook。有没有办法一次性为所有存储库配置 Webhook,而不是单独管理每个存储库中的 Webhook?
或者,有没有一种方法可以使用 bitbucket api 遍历所有存储库并将每个存储库的 webhook 更新为相同的设置?
我无法将我的 Git 存储库从 Bitbucket Cloud 克隆到我的服务器。我通过 SSH 连接到网站的服务器(不是本地),然后尝试执行以下操作:
git clone https://myusername@bitbucket.org/myusername/reel-visuals.git
Run Code Online (Sandbox Code Playgroud)
输入密码后,这就是我收到的确切错误:
error: while accessing https://myusername@bitbucket.org/myusername/reel-visuals.git/info/refs
fatal: HTTP request failed
Run Code Online (Sandbox Code Playgroud)
我确实输入了正确的用户名和密码。
我究竟做错了什么?这是我的 Bitbucket 存储库的权限问题还是其他问题?如果是这样,我该如何修复它?
1. 总结问题
我按照 Bitbucket 的说明设置 ssh。
我有一个 pub/priv 密钥对,并将 pub 密钥粘贴到项目的 Bitbucket 设置(访问密钥)中。
我在 GCE VM 上有一个构建服务器。 git clone工作成功,并且git pull origin master有效。我正在使用密码。
git commit但是,如果我在 GCE VM 上对单个文件进行小更改,然后执行git push origin master,则会失败并显示以下错误消息。
Enter passphrase for key '/home/proc/.ssh/id_rsa':
Unauthorized
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
git remote -v
节目
origin git@bitbucket.org:<my-account>/<my-repo>.git (fetch)
origin git@bitbucket.org:<my-account>/<my-repo>.git (push)
Run Code Online (Sandbox Code Playgroud)
如果git pull origin master工作正常,则 ssh 设置正确。 …
我已经开始在大堂ci设置一个新的团队,可以登录Bitbucket用户.
fly set-team -n main \
--basic-auth-username myuser \
--basic-auth-password xxxx \
--generic-oauth-display-name bitbucket \
--generic-oauth-client-id xxxx \
--generic-oauth-client-secret xxxx \
--generic-oauth-auth-url https://bitbucket.org/site/oauth2/authorize \
--generic-oauth-token-url https://bitbucket.org/site/oauth2/access_token
Run Code Online (Sandbox Code Playgroud)
成功设置它的关键是,bitbucket中的OAuth使用者的回调网址只需要大厅ci网站(/auth/oauth/callback在回调网址中没有)
现在我发现了一个问题.任何用户(甚至是bitbucket云中新注册的免费用户)都可以登录我的大厅ci服务器.
经过一番研究,我得到了这个
通用oAuth
--generic-oauth-*标志配置通用oAuth提供程序,默认情况下不会对单个用户登录执行任何其他验证.它应该只以这种方式与内部auth系统一起使用.例如,如果它用于配置Google或Twitter oAuth,它将允许互联网上的每个人创建管道.它会非常慷慨.如果需要验证,请确保使用--generic-oauth-scope标志.
那么有没有办法阻止未经授权的bitbucket云用户登录,这应该只限于我的组织?与github的选项相同--github-auth-organization=ORG
我尝试添加--generic-oauth-scope concourse.main但总是得到错误:
failed to verify token
Run Code Online (Sandbox Code Playgroud)
我还阅读了关于Bitbucket Cloud的OAuth - Scopes并尝试使用大多数范围,例如
--generic-oauth-scope account
Run Code Online (Sandbox Code Playgroud)
仍然得到相同的错误.
我应该把什么放在范围内?
需要 Rest API 来同步 Bitbucket(云)中的分支,而无需合并拉取请求。在 API 文档中找不到。有没有用于同步分支的 REST API?
请帮助解决上述查询(高优先级)。
当在Bitbucket Cloud上创建请求请求时,这是有效负载的重要部分,该负载由Bitbucket webhooks进行回购以进行POST:
{
"destination": {
"commit": {
"hash": "b0xxxx9b05e6",
"type": "commit"
},
"repository": {
"type": "repository",
"name": "test-repo",
"full_name": "ntrs/test-repo",
"uuid": "{4exxxx51-e5df-49a7-9601-5d24cb50d3bd}"
},
"branch": {
"name": "master"
}
},
"source": {
"commit": {
"hash": "3dxxxxea3b8f",
"type": "commit",
"repository": {
"type": "repository",
"name": "test-repo",
"full_name": "ntrs/test-repo",
"uuid": "{4exxxx51-e5df-49a7-9601-5d24cb50d3bd}"
},
"branch": {
"name": "temp"
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,与Github不同,Bitbucket不会创建一些具有合并功能的临时分支-因此,我是否希望自己进行合并以创建一些可以提交以进行测试的合并提交?如您所见,我所拥有的只是源提交和目标提交,而不是要测试的新合并提交。
在我目前正在进行的项目中,我想根据以下规则运行bitbucket管道。
这里的问题是,如果我将提交推送到已打开拉取请求的分支,则管道会被触发两次。
pipelines:
default:
- step: *lint
- step: *test
pull-requests:
'**':
- step: *lint
- step: *test-with-coverage
Run Code Online (Sandbox Code Playgroud)
我寻找一种在拉取请求存在时跳过默认管道的方法,但我找不到它。我愿意接受建议和意见。
Bitbucket 计划管道 UI 没有让我们输入 cron 表达式的选项,我们只能每小时、每天或每周运行管道。有一个选项可以通过有效负载中的 cron 表达式通过 API 调用创建计划,但不幸的是它不接受复杂的 cron 表达式。
实现管道仅在工作日运行的最佳方法是什么?
寻找比这些更好的解决方案。
有更好的选择吗?
我在Jenkins上有一个多分支的声明性管道,该管道由我的Bitbucket云帐户中的回购事件触发,我希望它可以将结果报告给Bitbucket。
我的Jenkinsfile看起来如下:
pipeline {
agent any
stages {
stage('Prepare Env') {
steps {
bitbucketStatusNotify(buildState: 'INPROGRESS')
sh "npm i"
}
post {
success {
bitbucketStatusNotify(buildState: 'SUCCESSFUL')
}
failure {
bitbucketStatusNotify(buildState: 'FAILED')
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我发现,当Jenkins构建失败并通过消息向Bitbucket通知构建结果时,对拉取请求的第二次及所有连续提交都会导致出现这种情况java.lang.Exception: None or multiple repos。
这在某种程度上与日志中的第一行说:Fetching changes from 2 remote Git repositories。
但是,我实际上只有一个存储库,不知道为什么詹金斯将其识别为多个存储库。
如何使我的构建停止看到多个存储库并成功?
完整日志如下:
Branch event
Checking out git https://bitbucket.org/mycompany/myproject.git https://bitbucket.org/mycompany/myproject.git into /var/lib/jenkins/workspace/myproject_PR-48-TV7ILAHCKATC6ZK26DHNTXI6KKLEGO3RSNDKAL2363W5GU5TABFQ@script to read Jenkinsfile
> /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from 2 remote Git repositories
> …Run Code Online (Sandbox Code Playgroud) 我需要为存储库创建一个 HTTP 访问令牌,这允许我在另一个存储库中构建 nodeJS 应用程序时从中提取模块。
过去这是通过使用一名员工的个人访问令牌来完成的,我想改变这一点。
我参考了这篇文章“ https://confluence.atlassian.com/bitbucketserver/personal-access-tokens-939515499.html ”,其中步骤说明如下:
为项目或存储库创建 HTTP 访问令牌
可以为团队创建 HTTP 访问令牌,以在项目或存储库级别而不是特定用户授予权限。为项目或存储库创建 HTTP 访问令牌(需要项目或存储库管理员权限):
问题出在我的存储库设置中,我找不到“HTTP 访问令牌”。
我使用的是 Bitbucket 云,而文章提到的是 bitbucket 服务器,这会产生问题吗?如果是这样,这个选项在 bitbucket 云中不可用?
bitbucket-cloud ×12
bitbucket ×10
git ×3
bash ×1
concourse ×1
git-clone ×1
jenkins ×1
oauth-2.0 ×1
pull-request ×1