bitbucket-pipelines.yml 文件中的部署环境“暂存”在管道中多次出现

2024-03-30

我正在尝试让 Bitbucket Pipelines 执行定义部署区域的多个步骤。当我这样做时,我收到错误

配置错误您的部署环境“暂存” bitbucket-pipelines.yml 文件在管道中出现多次。 请参阅我们的文档以了解有效的环境及其 订购。

据我所知,部署变量必须逐步发生。

我如何设置此示例管道文件才不会遇到该错误?

image: ubuntu:18.04

definitions:
    steps:
        - step: &build
            name: npm-build
            condition:
                changesets:
                    includePaths:
                        # Only run npm if anything in the build directory was touched
                        - "build/**"
            image: node:14.17.5
            script:
              - echo 'build initiated'
              - cd build
              - npm install
              - npm run dev
              - echo 'build complete'
            artifacts:
              - themes/factor/css/**
              - themes/factor/js/**
        - step: &deploychanges
            name: Deploy_Changes
            deployment: Staging
            script:
              - echo 'Installing server dependencies'
              - apt-get update -q
              - apt-get install -qy software-properties-common
              - add-apt-repository -y ppa:git-ftp/ppa
              - apt-get update -q
              - apt-get install -qy git-ftp
              - echo 'All dependencies installed'
              - echo 'Transferring changes'
              - git ftp init --user $FTP_USER --passwd $FTP_PASSWORD $FTP_ADDRESS push --force --changed-only -vv
              - echo 'File transfer complete'
        
        - step: &deploycompiled
            name: Deploy_Compiled
            deployment: Staging
            condition:
                changesets:
                    includePaths:
                        # Only run npm if anything in the build directory was touched
                        - "build/**"
            script:
              - echo 'Installing server dependencies'
              - apt-get update -q
              - apt-get install -qy software-properties-common
              - add-apt-repository -y ppa:git-ftp/ppa
              - apt-get update -q
              - apt-get install -qy git-ftp
              - echo 'All dependencies installed'
              - echo 'Transferring compiled assets'
              - git ftp init --user $FTP_USER --passwd $FTP_PASSWORD $FTP_ADDRESS push --all --syncroot themes/factor/css/ -vv
              - git ftp init --user $FTP_USER --passwd $FTP_PASSWORD $FTP_ADDRESS push --all --syncroot themes/factor/js/ -vv
              - echo 'File transfer complete'

pipelines:
    branches:
        master:
            - step: *build
                <<: *deploychanges
                deployment: Production
            - step:            
                <<: *deploycompiled
                deployment: Production

        dev:
            - step: *build
            - step: *deploychanges
            - step: *deploycompiled

我发现,在管道中的多个步骤中重用环境变量而不使用部署子句的问题的解决方法是将 ENV VARS 转储到一个文件并将其保存为将在以下步骤中获取的工件。

它的代码片段如下所示:

  steps:

    - step: &set-environment-variables
        name: 'Set environment variables'
        script:
          - printenv | xargs echo export > .envs
        artifacts:
          - .envs


    - step: &next-step
        name: "Next step in the pipeline"
        script:
          - source .envs
          - next_actions


pipelines:

  pull-requests:
    '**':
      - step:
          <<: *set-environment-variables
          deployment: my-deployment
      - step:
          <<: *next-step
          name: "Name of the next step being executed"

  branches:
    staging:
      - step:
          <<: *set-environment-variables
          deployment: my-deployment
      - step:
          <<: *next-step
          name: "Name of the next step being executed"

到目前为止,这个解决方案对我有用。

更新: 在 .envs 文件中出现“%s”问题导致后面的源 .envs 语句失败之后,这里是与初始步骤略有不同的方法。它解决了这个特定问题,但也只导出您知道管道中需要的那些变量 - 请注意,第一个脚本步骤有很多可用的 bitbucket 环境变量,无论如何,这些变量自然可以用于以后的脚本,并且它使得更有意义(无论如何对我来说),您不只是将所有环境变量转储到 .env 工件,而是以更加受控的方式进行。

   - step: &set-environment-variables
        name: 'Set environment variables'
        script:
          - echo "export SSH_USER=$SSH_USER" > .envs
          - echo "export SERVER_IP=$SERVER_IP" >> .envs
          - echo "export ANOTHER_ENV_VAR=$ANOTHER_ENV_VAR" >> .envs
        artifacts:
          - .envs

在此示例中,.envs 现在将仅包含这 3 个环境变量,而不是整个系统 + bitbucket 变量堆(当然,也没有讨厌的 %s 字符!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

bitbucket-pipelines.yml 文件中的部署环境“暂存”在管道中多次出现 的相关文章

  • goimports 需要忽略供应商包

    我正在尝试实施dep在我的项目中 这一切都运行良好 但它还添加了一个供应商目录 我现在需要更新我的工具以忽略此目录 否则我提供的软件包将被修改 或者我会收到警告误报 我目前正在使用以下工具 goimports w go vet go lin
  • 如何使用个人访问令牌从 CircleCI 构建将提交推送到 Github

    执行 git 存储库构建时giantswarm docs content在 CircleCI 中 我想将提交推送到另一个存储库giantswarm docs 我有这个在deployment的部分circle yml git config c
  • 使用 MSBuild 构建解决方案文件夹

    我们有一个解决方案文件其中包含一些解决方案文件夹 库 单元测试 应用程序等 With 视觉工作室2010 https en wikipedia org wiki Microsoft Visual Studio 2010我们可以通过右键单击给
  • git push 忽略 cocoapods

    我开发 iOS 应用程序已有几个月了 现在 我想将其推送到 bitBucket 上 问题是 git push 忽略与 cocoapods 相关的所有文件 例如 project xcworkspace Podfile Podfile lock
  • 多个 bitbucket 帐户的 ssh 配置 - 简单的示例,但出现“远程端意外挂断”

    假设我的 bitbucket 用户名是 jon 并且我有一些个人项目https bitbucket org jon 假设我加入了一个开发团队 该团队有一个名为 devteam 的 bitbucket 帐户 可以在以下位置找到该帐户 http
  • 如何从 Github 和 Bitbucket 上的 git 删除提交

    我不小心从 Django 项目中的 idea 目录中推送了文件 这些文件位于 gitignore 文件中 我正在尝试从我的 bitbucket 存储库中完全删除提交 因为我正在与该项目一起工作的其他人 并且他无法在不影响他自己的 idea
  • Bitbucket 和 Azure DevOps 之间的集成

    我的要求是我想将我的 Bitbucket 存储库与 Azure DevOps CI 服务器集成 以便一旦我将代码推送到 bitbucket 存储库中 我的管道就会在 Azure DevOps CI 服务器中触发 因为我已经在 Bitbuck
  • SQL部署自动化

    我正在尝试使用 Jenkins 自动化现有的 sql server 数据库部署自动化 自动化的方法之一是使用 Visual Studio 将 SQL 脚本 存储过程 视图 表创建 包含在 SQL Server 数据库项目中 使用 MSBui
  • 如何在 gitlab-ci 作业之间传递变量?

    我有一个像这样的 gitlab ci stages calculation execution calculation job stage calculation script calculate something and output
  • 世博会错误 - 无法加载所有资源

    由于某种原因 当第一次使用命令启动我的应用程序时expo r ci no dev我收到Failed to load all assets error 收到错误的图像 https i stack imgur com pcvv4 png 如果我
  • 是否可以允许jenkins访问只有root或某些特定程序可以访问的文件?

    我基本上想做的是允许 jenkins 访问我的 android sdk linux 文件夹和所有子目录 我的老板不想自己更改文件夹的权限 我应该在构建过程中这样做 我见过一些在构建过程中在执行 shell 中运行一些命令的示例 是否可以在该
  • 多个构建配置可以共享一个配置转换吗?

    我正在使用 SlowCheetah 进行 XML 转换项目中的一堆配置文件 但是 这个相同的解决方案是负载平衡设置的一部分 其中不同服务器 在本例中为两个 之间的某些配置值有所不同 我有以下构建配置 Debug Release 发布 测试
  • BitBucket+Jenkins:仅在特定分支更改时触发构建

    以下是该问题的据称解决方案 尽管它看起来确实是一种解决方法 而不是最终的解决方案 有没有一种方法 通过作业配置或 bitbucket 挂钩配置 我可以将作业设置为仅在推送到特定分支时运行构建 是否可以仅从一个特定分支触发 Jenkins h
  • 如何仅在 PR 上触发构建,而不是在合并后在 Azure 管道上触发构建?

    这是向pyjanitor project https github com ericmjl pyjanitor 我已经构建了分为多个作业的管道 并且这些作业被设计为并行运行 但是 我注意到即使在合并 PR 后也会触发构建 因此 我的问题有两
  • bitbucket、“hg 推送”和“hg 更新”

    如果我从本地 Mercurial 存储库开始 我认为它是 主要 存储库 请原谅我的 dvcs 领主 并打算使用 bitbucket 作为备份和问题跟踪工具 我可以在本地进行所有更改repo 并执行 hg Push 将更改发送回 bitbuc
  • 持续集成的投资回报率是多少?

    目前 我们的组织没有实行持续集成 为了让我们启动并运行 CI 服务器 我需要生成一份文档来证明投资回报 除了通过尽早发现和修复错误来节省成本之外 我很好奇我可以将其写入本文档的其他好处 节省 我喜欢 CI 的第一个原因是它有助于防止开发人员
  • Jenkins - Xcode 构建工作协同设计失败

    下面是我的构建脚本 不使用 xcodebuild 插件 构建步骤工程 我使用所需的证书和私钥创建了一个单独的钥匙串 它们在钥匙串访问中可见 脚本中的钥匙串命令不会失败 安全列表钥匙串将这些显示为有效的钥匙串 它的表现就像解锁命令并未真正成功
  • 从 BitBucket 请求 OAuth 令牌

    在过去的 4 个小时里 我一直在尝试将 BitBucket 集成到我的应用程序中 但没有成功 在阅读的过程中BitBucket 的 RESTful API 文档 https confluence atlassian com display
  • Docker:通过 CLI 使用 --password 是不安全的。使用--密码-stdin

    当我在持续集成 CI 过程中登录注册表时 出现以下警告 WARNING Using password via the CLI is insecure Use password stdin 我应该更换吗 password with passw
  • 如何定制Maven唯一版本字符串?

    我想知道有哪些选项可以自定义 Maven 工件部署时使用的时间戳字符串

随机推荐

  • iphone开发-GDB错误信号EXC_BAD_ACCESS

    我收到信号错误EXC BAD ACCESS当尝试从 randomBallPick 方法检索返回输出时 我可能做错了 NSString temp self randomBallPick upBall1 image UIImage imageN
  • 当 btoa 被弃用时,如何在 ReactJS 中编码 Base 64 字符串?

    我正在使用一个 API 它要求我授权我的客户端 ID 和客户端密钥 我尝试使用 btoa 方法 但它说它已被弃用 这是我到目前为止所尝试过的 授权 基本 btoa ClientID ClientSecret 这似乎给出了相同的结果btoa
  • 如何使用 javascript 或 jQuery 处理多个 HTML 中的通用代码

    我有一个应用程序 其中有近 30 个 html 它们共享一些通用代码 如果我对其进行任何更改 我需要在每个页面上更改它 下面是我在所有页面上使用的代码片段 div ul li class current a href html a li l
  • 使用activestorage的直接上传上传到S3时如何指定前缀?

    使用标准 S3 配置 AWS ACCESS KEY ID AWS ID AWS BUCKET bucket name AWS REGION region AWS SECRET ACCESS KEY secret 我可以使用以下 Rails
  • 如何编写在现代 x64 处理器上高效运行的自修改代码?

    我正在尝试加速可变位宽整数压缩方案 并且我对动态生成和执行汇编代码感兴趣 目前 大量时间花费在错误预测的间接分支上 并且根据发现的一系列位宽生成代码似乎是避免这种损失的唯一方法 一般技术被称为 子例程线程 或 调用线程 尽管这也有其他定义
  • 我在什么上下文中运行 C#?

    我想知道 当我有这样的代码时 lock obj MyCode MyAgent Can MyAgent包含代码认识到它正在运行lock block 关于什么 for int i 0 i lt 5 i MyCode MyAgent Can My
  • 类抛出异常[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何在 Symfony2 中创建 IP 黑名单?

    是的 我知道有食谱中的选民教程 http symfony com doc 2 0 cookbook security voters html 但我正在寻找稍微不同的东西 我需要两层不同的黑名单 拒绝某些IP访问整个网站 拒绝某些IP登录 我
  • For 循环中的 DispatchGroup

    因此 我花了一些时间尝试让 DispatchGroup 在长时间异步操作完成之前阻止 for 循环迭代 我发现的大多数示例都相当简单明了 但我似乎无法让我的简单测试用例按我的预期工作 let group DispatchGroup for
  • Fabric.js:如何将自定义尺寸设置为 Text 或 IText?

    我正在使用优秀的 Fabric js 在画布上绘制一些文本 当我为 IText 对象指定自定义大小 假设为 200x200 矩形 时 Farbric js 似乎强制对象的宽度和高度适合文本 var t new fabric IText He
  • 无法使用 Web Video Kit API 将视频发布到 Tiktok

    我正在尝试使用此端点将视频上传到 Tiktok https open api tiktok com share video upload https open api tiktok com share video upload 按照官方文档
  • 将数据放入 EBS 支持的 EC2 实例中

    我创建了一个 AWS EC2 实例并向其附加了一个 EBS 卷 我已经在上面安装了 LAMP 堆栈和 phpmyadmin 我还可以使用 Cyber duck 使用公钥 私钥 初始化与其的 SFTP 连接 并将一些 html php 文件上
  • CMAKE:更新函数中的列表不起作用

    我跟着this https stackoverflow com questions 22487215 cmake function parameter and return and this https stackoverflow com
  • 在 javascript 中使用正则表达式无效组错误

    我有以下正则表达式来检查多种类型的电子邮件地址输入 W
  • Windows 8 下的 WPF 和 Silverlight 的未来会怎样?

    看到首次发布 HTML5 JS Windows 8 GUI http windows8news com 2011 06 02 microsoft unveil windows 8 tablet ui 大量的WPF 和 Silverlight
  • 如何在 pycaffe 中获取图层类型?

    是否有可能在 pycaffe 中获取每一层的类型 例如 卷积 数据等 我搜索了提供的示例 但找不到任何内容 目前我正在使用图层名称来完成我的工作 这是非常糟糕和有限的 这很容易 import caffe net caffe Net path
  • 使用curl PHP获取gzip压缩的XML文件时出现问题

    我正在尝试使用curl 从 xml gz 文件中获取数据 我可以下载该文件 但我的任何尝试都无法获取可用的 XML 当我尝试打印 XML 时 我收到一长串乱码特殊字符 例如 r 7 E i 5 6 DL u 有没有一种简单的方法来解压缩和编
  • Ruby 模除法

    所以我用一个模块编写了一个在 Ruby 中进行模除法的程序 module Moddiv def Moddiv testfor op1 op2 return op1 op2 end end Program require mdivmod pr
  • 让 UIButton 充当导航控制器

    如何使常规 UIButton 充当导航控制器 以便按下它时我可以打开一个新视图 按照以下方式在 viewDidLoad 方法中创建 yourButton UIButton yourButton UIButton buttonWithType
  • bitbucket-pipelines.yml 文件中的部署环境“暂存”在管道中多次出现

    我正在尝试让 Bitbucket Pipelines 执行定义部署区域的多个步骤 当我这样做时 我收到错误 配置错误您的部署环境 暂存 bitbucket pipelines yml 文件在管道中出现多次 请参阅我们的文档以了解有效的环境及