ローカル マシンから実行できるシェル スクリプトを使用して、展開プロセスを自動化しようとしています。プロセスは簡単です。
- リモートサーバーへの SSH
git pull
指定された引数に応じてコマンドを実行します
現在、私はこれを持っています:
#!/bin/sh
SSH_HOST="REMOVED"
SSH_PORT="REMOVED"
SSH_USER="REMOVE"
if [ "$1" = "live" ]
then
DIR="REMOVED"
GIT_BRANCH="REMOVED"
echo "Deploying to live site..."
elif [ "$1" = "test" ]
then
DIR="REMOVED"
GIT_BRANCH="REMOVED"
echo "Deploying to test site..."
else
echo "ERROR: Please specify a target (either live or test)"
exit 1;
fi
# create SSH connection
echo "ssh $SSH_USER@$SSH_HOST -p $SSH_PORT"
ssh $SSH_USER@$SSH_HOST -p $SSH_PORT << END_SSH
sudo -s
cd $DIR
git pull origin $GIT_BRANCH
END_SSH
echo "Site successfully deployed."
exit 0;
しかし、スクリプトを実行すると、次のメッセージが表示されます。
stdin は端末ではないため、疑似端末は割り当てられません。
sudo: 申し訳ありませんが、sudo を実行するには tty が必要です
エラー: .git/FETCH_HEAD を開けません: 許可が拒否されました
どこで間違ったのですか?最後の行は、リモート サーバーで sudo として認証できなかったため、パーミッション エラーのために Git コマンドを実行できなかっただけですが、最初の 2 行の原因は何ですか? 何かを誤って設定したのでしょうか、それともどこかで構文エラーがありますか?