CircleCI 运行多行命令

Chr*_*ich 7 unix ssh circleci circleci-2.0

摘自 CircleCI 配置文件:

deploy:
  machine:
    enabled: true
  steps:
    - run:
        name: AWS EC2 deploy
        command: |
          ssh -o "StrictHostKeyChecking no" ubuntu@xxx.xxx.xxx.xxx "cd ~/circleci-aws; git pull; npm i; npm run build; pm2 restart build/server
Run Code Online (Sandbox Code Playgroud)

如何将命令分成多行?尝试了以下语法,但它只运行第一个命令:

deploy:
  machine:
    enabled: true
  steps:
    - run:
        name: Deploy
        command: |
          ssh -o StrictHostKeyChecking=no ubuntu@xxx.xxx.xxx.xxx
          cd ~/circleci-aws
          git pull
          npm i
          npm run build
          pm2 restart build/server
Run Code Online (Sandbox Code Playgroud)

小智 10

这是一个旧的,但它有很多观点,所以我发现的东西似乎值得分享。

在 CircleCI 文档(https://circleci.com/docs/2.0/configuration-reference/#shorthand-syntax)中,他们指出在使用 run 速记语法时,您还可以执行多行。

看起来像下面这样

- run: |
    git add --all
    git commit -am "a commit message"
    git push
Run Code Online (Sandbox Code Playgroud)

问题示例与此示例之间的区别在于命令在“运行”下,而不是“命令”下。

  • 为避免任何混淆:简写语法可用于“command:”和“run:”。可以在这里找到这样的示例 https://circleci.com/docs/2.0/configuration-reference/#example (2认同)

dne*_*hin 3

您需要将其他命令作为参数传递给 shell(例如bash):

ssh -o StrictHostKeyChecking=no ubuntu@xxx.xxx.xxx.xxx bash -c '
      cd ~/circleci-aws
      git pull
      npm i
      npm run build
      pm2 restart build/server'
Run Code Online (Sandbox Code Playgroud)