2016-09-18 1 views
1

Heroku Toolbelt의 로그인 프롬프트를 스크립트로 작성하거나 무시할 수있는 승인 된 방법이 있습니까? 나는 솔루션 (기대, 환경 변수, .netrc의 환경 변수를 보간하는 것 등)을 제공한다고 주장하는 많은 해킹을 보았지만 안정적인 해결책을 찾고 싶다.CI 환경에서 "heroku login"스크립트

답변

4

문서에서 볼 수 있듯이 세 가지 방법으로이 문제를 해결할 수 있습니다.

첫 번째 것은 authenticate via Login&Password (bleh)입니다. 입력 형식을 알고 - 다른 한편으로, 한 줄에 암호를 로그인 - 우리가 cat 또는 echo 데이터 수 있습니다 보안 ENV 통해

을 바르 :

(
    echo "$HEROKU_CREDENTIALS_EMAIL" # or you can plaintext it, if you're feeling adventurous 
    echo "$HEROKU_CREDENTIALS_PASSWORD" 
) | heroku login 

Travis CI settings screen showing secure env vars

이 중요한 부분을 강조 (변수 이름 및 보안).

되찾기 루트에 .heroku_cred라는 이름의 파일 준비 :

[email protected] 
IAmPdohertyAndThisIsMyPasswordIWorkHereWithMyOldMan 

이 그 다음 암호화 :

또는 암호화 된 파일을 통해

travis encrypt-file .heroku_cred 

그것은 당신에게 두 가지를 줄 것이다 : 레포 루트에 .heroku_cred.enc이라는 파일과 Travis에서 파일의 암호를 해독하는 명령. git add 암호화 된 파일 (우연히 이 아닌은 암호화되지 않은 파일을 가져 오지 마십시오!)를 입력하고 before_install에 명령을 추가하십시오. 그런 다음 Heroku가 인증 할 장소에 추가 :

cat .heroku_cred | heroku login 

자,이 방법은 짜증 두 가지 이유 : 첫째, 당신이 '당신을 누설하는 경우 때문에, 끔찍한 당신의 문자 암호를 사용하고 다시 100 % 망했어. 만약 당신이 그것을 바꾼다면 당신의 빌드는 거짓으로 시작될 것이다.

다음 방법은 the HEROKU_API_KEY env var입니다.이 방법은 "인증 명령의 정상적인 작동을 방해 할 수 있습니다."하지만 다른 방법으로 인증하지 않기 때문에 문제가되지 않습니다. 이렇게

.travis.yml에 대한 변경이 필요하지 않습니다, (당신은 아마 인증하고) 당신의 컴퓨터에

heroku auth:token 

란에서 출력을 포함 HEROKU_API_KEY 이름 만 안전한 환경 변수.

Travis CI settings screen showing secure env var

은 중요한 부분 (변수 이름과 보안)를 강조했다.

이 방법은 보안 (폐기 된 OAuth 토큰)과 설정의 단순성을 결합합니다.

세 번째 방법은 using ~/.netrc입니다. 사용자 이름과 비밀번호를 사용하여 CLI를 통해 인증 한 것처럼 전체 생태계와 협업합니다 (대신 OAuth 토큰을 사용하는 것이 더 낫습니다).이것에 따르지

단계는 1.2 유사합니다

machine api.heroku.com 
    login [email protected] 
    password c4cd94da15ea0544802c2cfd5ec4ead324327430 
machine git.heroku.com 
    login [email protected] 
    password c4cd94da15ea0544802c2cfd5ec4ead324327430 
:

먼저이 같은 Heroku가 (details)로 인증을 위해 ~/.netrc 책임의 부분을 포함 .heroku-netrc라는 이름의 파일을 생성

그런 다음,이를 암호화하는, 실행

travis encrypt .heroku-netrc 

당신은 암호 해독 명령을 얻을 수 (0으로 추가 할 것) 및 .heroku-netrc.enc이어야하며 git add이어야합니다 (암호화되지 않은 .heroku-netrc을 추가하지 않도록주의하십시오). 그 후, install 단계로이 추가 : "감사합니다"난 그냥 참조 할 수 있도록이를 끌어 올려 내가 말할 두번째을해야한다고 생각

cat .heroku-netrc >> $HOME/.netrc 
+0

유용하고 상세한 답변을 정리하는 시간을 가졌기 때문입니다. – pdoherty926