私は一緒に働いています継続的な統合、CDしかし残念ながら、私はシェルスクリプトを台無しにしました。 gitlab-ci.ymlファイルからデプロイするときにbashscriptを呼び出します。しかし、残念ながら、コマンドを使用してプルしようとするたびに応答が失敗します。このbashスクリプトに対する私の反応は次のとおりです。
#!/bin/bash
# Get server list
set -f
string=$DEPLOY_SERVER_IP
array=(${string//,/ })
# Iterate servers for deploy and pull last commit
for i in "${!array[@]}"; do
echo "Deploy project on server ${array[i]}"
ssh bitnami@${array[i]} " ssh-agent bash && ssh-add keys/relation-fe && cd htdocs/relation-fe/ && git pull origin master "
done
私の答えはこれです
Executing "step_script" stage of the job script
$ which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )
/usr/bin/ssh-agent
$ eval $(ssh-agent -s)
Agent pid 21206
$ mkdir -p ~/.ssh
$ echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
$ chmod 600 ~/.ssh/id_rsa
$ [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
$ bash .gitlab-deploy-prod.sh
Deploy project on server 1.2.3.4
Could not open a connection to your authentication agent.
Cleaning up file based variables
ERROR: Job failed: exit status 1
では、このエラーをどのように解決できますか?エラーは、gitlabが私のサーバーに正常にアクセスしたことを示します。ただし、ssh-agentを実行してssh-keyを介してキーを追加すると、スクリプトはコマンドを実行できません。これでここでエラーが発生します。私はbashスクリプトとシェルスクリプトについて混乱しています。だから私のスクリプトでエラーが見つかりません。 git pushでファイルを生成できますが、生成することはできません。SSHキーを使用して認証した後のコンテンツの抽出誰でも助けることができますか?
答え1
Gitlabがあなたのコンピュータに接続されていないようです。走る人、これはあなたのサーバーとは異なります。ランナーが利用可能で、gitlabがランナーに接続できることを確認してください。