Jenkinsの助けを借りてgitの更新されたファイルを見て、ダウンロードし、AWS KMS)を使用して暗号化するスクリプトを作成しようとしています。私はそれをすべて行う作業スクリプトを持っており、ファイルはローカルサーバーのJenkinsリポジトリにダウンロードされます。しかし、私の問題は、Jenkinsリポジトリでこのファイルを暗号化することです。基本的に、ローカルコンピューターでファイルを暗号化するときは、次のコマンドを使用します。
aws kms encrypt --key-id xxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx --plaintext fileb://file.json --output text --query CiphertextBlob | base64 --decode > Encrypted-data.json
すべて問題ありませんが、Jenkinsで実行しようとすると、AWSコマンドが見つからないというエラーが表示されます。
誰かがこの問題を解決する方法と、Jenkinsを介してAWSを実行する方法を知っていますか?これが最後の行で分解する私の作業コードです:
bom_sniffer() {
head -c3 "$1" | LC_ALL=C grep -qP '\xef\xbb\xbf';
if [ $? -eq 0 ]
then
echo "BOM SNIFFER DETECTED BOM CHARACTER IN FILE \"$1\""
exit 1
fi
}
check_rc() {
# exit if passed in value is not = 0
# $1 = return code
# $2 = command / label
if [ $1 -ne 0 ]
then
echo "$2 command failed"
exit 1
fi
}
# finding files that differ from this commit and master
echo 'git fetch'
check_rc $? 'echo git fetch'
git fetch
check_rc $? 'git fetch'
echo 'git diff --name-only Origin/master'
check_rc $? 'echo git diff'
diff_files=`git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT | xargs`
check_rc $? 'git diff'
for x in ${diff_files}
do
echo "${x}"
cat ${x}
bom_sniffer "${x}"
check_rc $? "BOM character detected in ${x},"
aws configure kms encrypt --key-id xxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx --plaintext fileb://${x} --output text --query CiphertextBlob | base64 --decode > Encrypted-data.json
done
あなたと話し合った後、これはこの問題がどのように解決されたかです:
まず、コマンドからconfigure
を削除してコマンドを修正しました。
Jenkinsユーザー用にawscliをインストールしました:pip install awscli --user
スクリプトでaws
の絶対パスを使用しました
たとえば〜/ .local/bin /にある場合は、スクリプトで~/.local/bin/aws kms encrypt --key-id xxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx --plaintext fileb://${x} --output text --query CiphertextBlob | base64 --decode > Encrypted-data.json
を使用します。または、PATHにawsのパスを追加します。