0

所以我正在尝试使用 Gitlab CI/CD 进行部署阶段。问题是当我运行我的 gitlab-ci.yml 文件时,它无法识别 dpl 命令:

我的 yaml 文件

image: node:8.9.3

stages:
  - build
  - sonarqube-check
  - test
  - staging
  - production
  - deploy


cache:
  paths:
    - .gradle/wrapper
    - .gradle/caches

build:
  stage: build
  script:
    - ./gradlew assemble
  artifacts:
    paths:
      - build/libs/*.jar
    expire_in: 1 week
  only:
    - master

sonarqube-check:
  stage: test
  image: gradle:jre11-slim
  variables:
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # Defines the location of the analysis task cache
    GIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis task
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script: ./gradlew sonarqube
  allow_failure: true
  only:
    - master

test:
  stage: test
  script:
    - ./gradlew check

deploy-prod:
  stage: deploy
  script:
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."

staging:
  type: deploy
  stage: staging
  image: ruby:latest
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_APP_STAGING --api-key=$HEROKU_API_KEY
  only:
      - staging

production:
    type: deploy
    stage: production
    image: ruby:latest
    script:
        - dpl --provider=heroku --app=$HEROKU_APP_PRODUCTION --api-key=$HEROKU_API_KEY
    only:
        - master


after_script:
  - echo "End CI"

错误

Running with gitlab-runner 13.8.0 (775dd39d)
  on Coalection Shell runner iMbS43WM
Preparing the "shell" executor
00:00
Using Shell executor...
Preparing environment
00:01
Running on DESKTOP-LJ3K6GB...
Getting source from Git repository
00:04
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in D:/GitLab-Runner/builds/iMbS43WM/0/I437980/Coalection/.git/
Checking out cd5edeb9 as master...
Removing .gradle/
Removing build/
git-lfs/2.13.2 (GitHub; windows amd64; go 1.14.13; git fc664697)
Skipping Git submodules setup
Restoring cache
00:01
Version:      13.8.0
Git revision: 775dd39d
Git branch:   13-8-stable
GO version:   go1.13.8
Built:        2021-01-20T13:32:55+0000
OS/Arch:      windows/amd64
Checking cache for default...
Runtime platform                                    arch=amd64 os=windows pid=14288 revision=775dd39d version=13.8.0
No URL provided, cache will not be downloaded from shared cache server. Instead a local version of cache will be extracted. 
Successfully extracted cache
Executing "step_script" stage of the job script
$ dpl --provider=heroku --app=$HEROKU_APP_PRODUCTION --api-key=$HEROKU_API_KEY
dpl : The term 'dpl' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the 
spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\Windows\TEMP\build_script930211489\script.ps1:221 char:1
+ dpl --provider=heroku --app=$HEROKU_APP_PRODUCTION --api-key=$HEROKU_ ...
+ ~~~
    + CategoryInfo          : ObjectNotFound: (dpl:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
Running after_script
00:01
Running after script...
$ echo "End CI"
End CI
Cleaning up file based variables
00:00
ERROR: Job failed: exit status 1

由于我是 CD 新手,因此我可能错过了其他重要的步骤。我确实在 gitlab 变量中添加了变量,所以我没有忘记这一点。谁能帮我?谢谢!

4

0 回答 0