web-dev-qa-db-ja.com

travisデプロイスクリプトでaws configureを実行するにはどうすればよいですか?

awscli を使用してカスタムデプロイスクリプトを実行し、ステージングサーバーにデプロイをプッシュする travis-ci を取得しようとしています。

私の.travis.ymlファイルには次のようになっています:

before_deploy:
  - 'curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.Zip" -o "awscli-bundle.Zip"'
  - 'unzip awscli-bundle.Zip'
  - './awscli-bundle/install -b ~/bin/aws'
  - 'export PATH=~/bin:$PATH'
  - 'aws configure'

そして、私は次の環境変数を設定しました:

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION

travis-ci Webインターフェースで正しい値を使用します。

ただし、aws configureが実行されると、ユーザー入力を停止して待機します。定義した環境変数を使用するように指示するにはどうすればよいですか?

17
Dave Sag

いくつかの方法でこれらを設定できます。

まず、~/.aws/config(または~/.aws/credentials)にファイルを作成します。

例えば:

[default]
aws_access_key_id=foo
aws_secret_access_key=bar
region=us-west-2

次に、設定ごとに環境変数を追加できます。

たとえば、次の環境変数を作成します。

AWS_DEFAULT_REGION
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY

3番目に、リージョンをコマンドライン引数として渡すことができます。例えば:

aws eb deploy --region us-west-2

これらの場合、CLIが構成されているため、aws configureを実行する必要はありません。

このページ には、さらにAWSのドキュメントがあります。

11
Darbio

Darbioのソリューションは正常に機能しますが、最終的にAWS資格情報をリポジトリにプッシュする可能性があることを考慮していません。

これは悪いことです特にdockerがECRリポジトリの1つからプライベートイメージをプルしようとしている場合。それはおそらく、AWSプロダクション認証情報を.travis.ymlファイルに保存する必要があり、それが理想とはほど遠いことを意味します。

幸い、Travisを使用すると、環境変数、通知設定を暗号化し、APIキーをデプロイできます。

gem install travis

まずtravis loginを実行してください。githubの認証情報を要求されます。ログインしたら、プロジェクトのルートフォルダー(.travis.ymlファイルがある場所)にアクセスし、アクセスキーIDとシークレットアクセスキーを暗号化します。

travis encrypt AWS_ACCESS_KEY_ID="HERE_PUT_YOUR_ACCESS_KEY_ID" --add
travis encrypt AWS_SECRET_ACCESS_KEY="HERE_PUT_YOUR_SECRET_ACCESS_KEY" --add

--addオプションのおかげで、構成ファイルに2つの新しい(暗号化された)環境変数が含まれることになります。 .travis.ymlファイルを開くと、次のように表示されます。

env:
    global:
        - secure: encrypted_stuff
        - secure: encrypted_stuff

これで、~/.aws/credentialsファイルを作成するシェルスクリプトをトラビスに実行させることができます。

ecr_credentials.sh

#!/usr/bin/env bash

mkdir -p ~/.aws

cat > ~/.aws/credentials << EOL
[default]
aws_access_key_id = ${AWS_ACCESS_KEY_ID}
aws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}
EOL

次に、ecr_credentials.shファイルから.travis.ymlスクリプトを実行するだけです。

before_install:
    - ./ecr_credentials.sh

できた! :-D

出典:Travis CIの暗号化キー

28