-
[Travis CI] Travis CI application.yml 파일 암호화 복호화 하는 법DevOps/Travis CI 2021. 4. 28. 17:01728x90반응형
Travis CI에서 File 암호화 복호화 하는 법Github에 push를 하면 Github이 Travis CI로 Hook을 날려서 CI가 진행이 됩니다. 진행을 할 때 로그를 보면 위와 같이
Git Project를 clone 받아서 진행하는 것을 볼 수 있습니다.
그러면 여기서 의문점이 생겼습니다.
.gitignore파일에 등록된 파일들은 어떻게 다운 받지? 라는 생각을 했습니다. 그래서 이번 글에서는 그 방법에 대해서 알아보겠습니다.Spring Boot 프로젝트 만들기먼저 간단한 Spring Boot gradle 프로젝트를 하나 만들겠습니다.

그리고 위와 같이
application.properties -> application.yml로 바꾼 후에.gitignore에 등록하겠습니다. 그리고 간단하게AWS RDS를 연결하는 세팅을 해보겠습니다. (RDS가 없다면 그냥 진행하셔도 될 거 같습니다. 파일이 암호화, 복호화가 잘 되는지를 중점적으로 보시면 됩니다.)build.gradlecompile 'org.springframework.boot:spring-boot-starter-jdbc' compile 'mysql:mysql-connector-java'build.gradle에
jdbc,mysql의존성을 추가하겠습니다.application.ymlspring: datasource: url: jdbc:mysql://엔드포인트/스키마이름?allowPublicKeyRetrieval=true&autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8&mysqlEncoding=utf8&serverTimezone=UTC username: 유저이름 password: 비밀번호 driver-class-name: com.mysql.cj.jdbc.Driver위와 같은 형태로 설정 값에 맞게 작성하겠습니다.
Travis CI 설정
https://travis-ci.org/ 여기에 들어간 후에 위와 같이 사용할 Repository에 버튼 활성화를 해주겠습니다.

그리고 위와 같이 Github에
Webhooks가 등록되어 있는지까지 확인하겠습니다. 혹시라도 등록이 안되어 있다면 여기 를 참고하시면 됩니다..travis.yml 작성
language: java jdk: - openjdk11 brances: only: - master # master 브랜치에 push 가 되었을 때 Travis CI 반응 cache: directories: - '$HOME/.m2/repository' - '$HOME/.gradle' script: - "./gradlew clean build" # jar 만들기위와 같이 간단하게
.travis.yml파일에 작성을 하겠습니다. 그냥 정말 간단하게빌드만 수행하도록 작성하였습니다.먼저 일단
application.yml이.gitignore가 되어 있는 상태에서 정말 에러가 나는지 확인을 먼저 해보겠습니다.

그러면 위와 같이
./gradlew clean build명령을 수행할 때 에러가 발생했다는 것을 볼 수 있습니다. 즉, 설정파일이 존재하지 않기 때문에 에러가 난 것입니다.그래서 지금부터 설정 파일을
암호화,복호화하는 것을 진행해보겠습니다.Secret 파일 압축tar -cvf 원하는이름.tar 암호화할 파일 이름 ex) tar -cvf gyunny.tar application.yml
위와 같이 입력하면 tar 파일이 하나 생겼을 것입니다.

Secret 파일 암호화gem install travis // travis 설치 travis login // travis login
그리고
Travis CI와 연결되어 있는 Github 계정을 입력하면 된다 해서 입력을 했는데 저는 되지 않습니다.. (이것 때매 삽질을 꽤나 한거 같습니다.)그래서 그냥 Github Token을 사용해서 로그인을 하겠습니다. https://github.com/settings/tokens 로 들어가겠습니다.

위의 정도만 체크를 한 후에 토큰을 만들겠습니다. 그리고
토큰을 복사하겠습니다.travis login --github-token Github_TOKEN
위와 같이 입력하며 로그인이 되었다는 표시를 볼 수 있습니다.
travis encrypt-file 파일이름.tar --add ex) travis encrypt-file gyunny.tar --add
그러면 위와 같이 뭐가 뜨면서 암호화가 된 것을 볼 수 있습니다.

그리고 위와 같이 .travis.yml에도 자동으로 어떤 것이 추가된 것을 볼 수 있습니다.

또한 위와 같이 travis Repository Setting을 보면 자동으로 추가된 것을 볼 수 있습니다.
.gitignore에 .tar 파일 추가
암호화를 하면 위와 같이
gyunny.tar,gyunny.tar.enc파일이 생긴 것을 볼 수 있습니다. 이 중에서.tar파일은 올라가면 안되기 때문에.gitignore에 등록하겠습니다.
암호화를 했을 때 위와 같은 .tar 파일은 절대 올리지 말고, .tar.enc 파일은 올리라고 하는 것을 볼 수 있습니다.

.gitignore에 등록하면 위와 같이.tar파일은 제외가 된 것을 확인할 수 있습니다.
그리고 Github에 push를 해보니 위와 같이 파일을 찾을 수 없다는 에러가 났습니다.. 그래서
gyunny.tar.env파일을 루트경로로 옮겨야 하나 해서 아래와 같이 옮겼습니다.
기존에
./src/main/resources/경로에 존재하던 파일을 위와 같이 프로젝트 루트 경로로 옮겼습니다.
tar xvf 파일이름.tar ex) tar xvf gyunny.tar암호화 했던 파일을 Travis CI에서 복호화 하는 코드를
.travis.yml에 적어주겠습니다.
그러면 위와 같이
빌드에 성공한 것을 볼 수 있습니다.반응형'DevOps > Travis CI' 카테고리의 다른 글
[Travis CI] Travis CI가 작동하지 않을 때 Github hooks 수동 설정하기 (0) 2021.04.26