当前位置: 首页 > 知识库问答 >
问题:

Bitbucket管道变量为curl

邹弘
2023-03-14

我正在使用bitbucket管道,在一个步骤中,我想调用curl请求我们的API来将部署数据保存在DB中。

但是当我试图用BITBUCKET_BRANCH和BITBUCKET_REPO_SLUG变量调用curl时,它们总是为空或者根本没有填充。

image: php:7.1.1

pipelines:
  branches:
    master:
    - step:
        name: Preparing pipeline
        script:
          - echo 'Preparing pipeline'

    - step:
        name: Deploy to dev10
        trigger: manual
        deployment: staging
        script:
          - cat ./deploy.sh | ssh root@37.42.83.244
    dev1/*:
    - step:
        name: Preparing pipeline
        script:
          - echo 'Preparing pipeline'
          - export BRANCH=$BITBUCKET_BRANCH
          - echo ${BRANCH}
          - curl -X POST "http://api.url.com/api/savePipelineBranch" -H "Content-Type:application/x-www-form-urlencoded" -H "cache-control:no-cache" -H "content-type:multipart/form-data;" -F branch=${BRANCH} -F repository_slug=$BITBUCKET_REPO_SLUG

    - step:
        name: Deploy to dev1
        trigger: manual
        deployment: staging
        script:
          - cat ./deploy_dev1.sh | ssh root@37.41.82.255

这是我从管道中得到的回复。

curl -X POST "http://api.url.com/api/savePipelineBranch" -H "Content-Type:application/x-www-form-urlencoded" -H "cache-control:no-cache" -H "content-type:multipart/form-data;" -F branch=${BRANCH} -F repository_slug=$BITBUCKET_REPO_SLUG
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
<!DOCTYPE html><!--
Illuminate\Database\QueryException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column &#039;branch&#039; cannot be null (SQL: insert into `branch` (`branch`, `repository_slug`, `updated_at`, `created_at`) values (, , 2019-04-02 08:38:02, 2019-04-02 08:38:02)) in file /home/api/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 664
Stack trace:

你可以看到,对于分支dev1/*,我有第一步,我用两个变量调用curl。我尝试了两种使用我在互联网上找到的变量的方法,但都不起作用。我每次都从curl得到变量为空的响应。

我需要在curl命令中发送这些变量,这样我就可以将这些变量保存到数据库中。

共有1个答案

司徒寒
2023-03-14

尝试使用

curl -d "{\"branch\":\"$BITBUCKET_BRANCH\",\"repository_slug\":\"$BITBUCKET_REPO_SLUG\"}" -H "Content-Type:application/json" -X POST http://api.url.com/api/savePipelineBranch
 类似资料:
  • 我已经编写了所有的e2e测试,它们在我的本地机器和代码上成功运行。我想把我们的CI从codeship移到Bitbucket管道。所以我用测试环境创建了自己的Docker映像。当我在本地工作区中运行docker conatiner时,测试工作正常,但当build在bitbucket管道中运行时,所有测试都因超时而失败,因为在页面上找不到angular。服务器肯定是在容器中启动和运行的ant测试也开始

  • 我想将特定步骤限制为特定分支 在上面的示例中,我希望第一步在几乎所有的分支中运行,但是第二步应该只对< code>release分支模式执行。不幸的是,实际结果是第一步只在像< code>hotfix这样的分支中起作用,并且在分支时不会在< code > release/version-name 中触发。据说是怎么做的?基本上,这个想法是在发布分支上重用上面的前两个步骤,所以不需要重复这些步骤。

  • 经过几个小时的努力,我能够设置我的docker容器。我的yml文件如下: 但是,当我在bild.gradle文件中使用'com.google.android.gms:play-services-location:11.0.2'时,我最终收到以下错误: 非常感谢任何帮助。

  • 我试图建立持续集成(CI)在Bitbucket管道为Android。 我已经使用Android Studio 2.1.1创建了一个样例空白活动。 当运行时,会出现以下错误: 在工作目录中运行会得到:

  • PS:如果您想要Postgresql容器中的日志:

  • 问题内容: 是否有任何环境变量可用于获取Jenkins管道标题? 我知道我们可以使用它来获得自由职业的头衔,但是有什么可以用来获取管道名称的东西吗? 问题答案: 您可以使用相同的名称(例如或)从groovy访问相同的环境变量。 从文档中: 可以从Groovy代码中以env.VARNAME或仅以VARNAME的形式访问环境变量。您也可以写入这些属性(仅使用env。前缀): 这些定义也将在构建期间或构