web-dev-qa-db-ja.com

JENKINSでのAWSCLIコマンド

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
6

あなたと話し合った後、これはこの問題がどのように解決されたかです:

まず、コマンドから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のパスを追加します。

6
Rahul Verma