2017-04-09 6 views
1

は、あなたが持っているとしましょう:Gitlab CD内のアプリケーションレポからデプロイメントスクリプト/レポをリンクするには?

  • Repo A汎用アプリケーションで。
  • Repo Bと、展開スクリプトが必要です。

Repo CI/CDランナーの中で、Repo BからAnsibleスクリプトを実行したいと思います。これを行う最も簡単な方法は何ですか?

私が試みているのは、RepoB専用の追加のsshキーを作成し、Secret Variables経由でランナーにフィードすることです。残念ながら、RepoBにしかアクセスできないダミーのユーザーを作成する必要があります。

これを行う方法は他にありますか?それは、配備のための非常に共通のワークフローでなければならないようです。

答えて

3

そうです、それはかなり一般的な使用例です。 Gitlabはこれを達成するためにDeploy Keysと呼ばれるものを使用します(詳細はhere)。

私は同様の質問hereに答えました。

以下は、特定のニーズに合わせたその回答のバージョンです。

最初にSSH鍵ペアを生成します。これにはssh-keygen -t rsaを使用できます。

次に、Repo Bのgitlabページに移動し、Deploy Keysの設定を探します。ここでは、生成したばかりの公開鍵を貼り付ける必要があります。

次にRepoに移動します。Variablesページを探します。たとえば、名前がSSH_PRIVATE_KEYの新しいプライベート変数を作成し、そこに生成した秘密鍵を貼り付けます。その中には、レポB.を引くことができるように

- 'which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)' 
# Run ssh-agent (inside the build environment) 
- eval $(ssh-agent -s) 
# Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store 
- ssh-add <(echo "$SSH_PRIVATE_KEY") 
- mkdir -p ~/.ssh 
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' 

あなたのレポA CI環境は今セットアップする必要があります:あなたの秘密鍵は、あなたのCI環境に使用できるように

最後に、あなたの.gitlab-ci.ymlファイルに次を追加します

+0

私は 'deploy keys'については気づいていなかったと思います。 –

+0

これは、いくつかの(依存している)従属プロジェクトを処理する場合には非常に便利な機能です;) – Jawad

関連する問題