我正在尝试使用此博客教程在暂存部署时通过 API 调用来运行我的 E2E 测试:https://circleci.com/blog/pipeline-orchestration-circleback/
我的E2E管道依赖于cypress orb,完整代码如下:
version: 2.1
parameters:
triggering-pipeline-id:
type: string
default: ""
orbs:
discord: antonioned/[email protected]
cypress: cypress-io/cypress@3
executor: cypress/default
commands:
approve-job-in-triggering-pipeline:
steps:
- run:
name: Ping CircleCI API and approve the pending job
command: |
echo << pipeline.parameters.triggering-pipeline-id >>
if ! [ -z "<< pipeline.parameters.triggering-pipeline-id >>" ]
then
workflow_id=$(curl --request GET \
--url https://circleci.com/api/v2/pipeline/<< pipeline.parameters.triggering-pipeline-id >>/workflow \
--header "Circle-Token: $CIRCLECI_API_KEY" \
--header "content-type: application/json" \
| jq -r '.items[0].id')
echo $workflow_id
waiting_job_id=$(curl --request GET \
--url https://circleci.com/api/v2/workflow/$workflow_id/job \
--header "Circle-Token: $CIRCLECI_API_KEY" \
--header "content-type: application/json" \
| jq -r '.items[] | select(.name == "wait-for-triggered-pipeline").id')
echo $waiting_job_id
curl --request POST \
--url https://circleci.com/api/v2/workflow/$workflow_id/approve/$waiting_job_id \
--header "Circle-Token: $CIRCLECI_API_KEY" \
--header "content-type: application/json"
fi
when: always
workflows:
e2e-tests:
jobs:
- cypress/run:
parameters: { "triggering-pipeline-id": << pipeline.parameters.triggering-pipeline-id >> }
name: "Firefox"
cypress-command: npm run test:firefox
install-browsers: true
cypress-cache-key: custom-cypress-cache-v1-{{ arch }}-{{ checksum "package.json" }}
cypress-cache-path: ~/.cache/custom-dir/Cypress
working-directory: /home/circleci/project
post-steps:
- approve-job-in-triggering-pipeline
context:
- webapp-e2e
但是,当我尝试运行此管道(通过 API 或其他方式)时,我得到:
Error calling workflow: 'e2e-tests'
Error calling job: 'cypress/run'
Error calling command: 'approve-job-in-triggering-pipeline'
Unknown variable(s): triggering-pipeline-id
在不明确传递参数的情况下运行此命令会导致相同的错误,这是有道理的,因为如此处记录:https://github.com/CircleCI-Public/api-preview-docs/blob/master/docs/pipeline-参数.md
Pipeline parameters are not available in orbs, including orbs declared locally in your config.yml file
如何将管道参数正确传递到 orb 中?
谢谢!
我对 Cypress orb 不熟悉,但是您在引用参数时尝试过使用
<< parameters.triggering-pipeline-id >>
而不是 << pipeline.parameters.triggering-pipeline-id >>
吗?