How to run aws configure in a travis deploy script?

后端 未结 2 511
一生所求
一生所求 2021-01-01 14:48

I am trying to get travis-ci to run a custom deploy script that uses awscli to push a deployment up to my staging server.

In my .travis.yml file I have

2条回答
  •  -上瘾入骨i
    2021-01-01 15:25

    Darbio's solution works fine but it's not taking into consideration that you may end up pushing your AWS credentials in your repository.

    That is a bad thing especially if docker is trying to pull a private image from one of your ECR repositories. It would mean that you probably had to store your AWS production credentials in the .travis.yml file and that is far from ideal.

    Fortunately Travis gives you the possibility to encrypt environment variables, notification settings, and deploy api keys.

    gem install travis
    

    Do a travis login first of all, it will ask you for your github credentials. Once you're logged in get in your project root folder (where your .travis.yml file is) and encrypt your access key id and secret access key.

    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
    

    Thanks to the --add option you'll end up with two new (encrypted) environment variables in your configuration file. Now just open your .travis.yml file and you should see something like this:

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

    Now you can make travis run a shell script that creates the ~/.aws/credentials file for you.

    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
    

    Then you just need to run the ecr_credentials.sh script from your .travis.yml file:

    before_install:
        - ./ecr_credentials.sh
    

    Done! :-D

    Source: Encription keys on Travis CI

提交回复
热议问题