簡體   English   中英

在 gitlab CI 中運行一個帶有交互式提示或腳本的 liner shell 命令

[英]Running one liner shell commands with interactive prompts or script in gitlab CI

我需要將一些靜態站點部署到survey.sh 服務,通過從控制台和腳本遵循在我的本地主機上運行良好的單線。

printf '%s\n' user@abcdefg.com somePassword  | surge --project ./public --domain domain_aka_domain_any_name.surge.sh 

浪涌(npm 包)- 是提示登錄/注冊電子郵件和密碼的交互式命令。

  • --項目點存在的目錄與靜態網站
  • --domain 在空間 *.surge.sh 中創建新的子域

因此,通過使用 printf,它成功地通過了我主機上的浪涌命令提示的 2 個答案。 它的輸出在這里:

歡迎浪涌! (surge.sh) 通過輸入電子郵件和密碼登錄(或創建浪涌帳戶)。

 email: user01@abc.com password:

以 user01@abc.com 身份運行(學生)

 project: ./public domain: ciicicicdciqq.surge.sh upload: [====================] 100% eta: 0.0s (66 files, 1699903 bytes) CDN: [====================] 100% encryption: *.surge.sh, surge.sh (366 days) IP: 138.197.235.000

成功! - 發布到 ciicicicdciqq.surge.sh

但是當我在 .gitlab-ci.yml 中使用相同的單線或 script.sh 時,在舞台上部署如下:

deploy to surge:
  image: node
  stage: deploy
  script:
    - npm install --global surge
    - printf '%s\n' user@abcdefg.com somePassword  | surge --project ./public --domain domain_aka_domain_any_name.surge.sh

它沒有用,它的輸出僅限於:

歡迎浪涌! (surge.sh) 通過輸入電子郵件和密碼登錄(或創建浪涌帳戶)。 電子郵件:密碼:清理項目目錄和基於文件的變量 00:01 作業成功

所以,我假設在 docker 容器中,它就像在第二個提示符下被打斷(或者甚至可能在第一個提示符下)。 它與非交互式外殼有關嗎? 我嘗試了 sh -c方法,但不走運。 需要關於解釋/人的幫助和參考。 謝謝

編輯,澄清我的問題: Giitlab 的/docker shell 行為與我的本地主機不同的原因是什么以及如何通過 shell/unix 方式解決它 因此,無論是浪涌(我知道令牌可能性)命令還是其他任何東西。

Surge 提供了一種令牌機制,用於從 GitLab 等 CI 提供者進行身份驗證並以非交互方式使用 Surge。

首先,您需要創建一個浪涌令牌。 在您的本地系統中,使用命令surge token來生成令牌。 保存此值。

在您的 GitLab 項目中,打開 CI/CD 設置並創建兩個具有各自值的變量:

  • SURGE_LOGIN - 用於浪涌的電子郵件地址(這實際上可能是可選的,基於我對源的閱讀)
  • SURGE_TOKEN - 你剛剛使用surge token

然后您可以運行您的命令(例如, surge --project ./public --domain domain_aka_domain_any_name.surge.sh )並且不會提示您輸入憑據。

  script:
    - npm install --global surge
    - surge --project ./public --domain domain_aka_domain_any_name.surge.sh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM