ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Travis CI] Travis CI application.yml 파일 암호화 복호화 하는 법
    DevOps/Travis CI 2021. 4. 28. 17:01
    728x90
    반응형

    Travis CI에서 File 암호화 복호화 하는 법

    Github에 push를 하면 Github이 Travis CI로 Hook을 날려서 CI가 진행이 됩니다. 진행을 할 때 로그를 보면 위와 같이 Git Project를 clone 받아서 진행하는 것을 볼 수 있습니다.

    스크린샷 2021-04-28 오후 2 21 50

    그러면 여기서 의문점이 생겼습니다. .gitignore 파일에 등록된 파일들은 어떻게 다운 받지? 라는 생각을 했습니다. 그래서 이번 글에서는 그 방법에 대해서 알아보겠습니다.

     

     

     

    Spring Boot 프로젝트 만들기

    먼저 간단한 Spring Boot gradle 프로젝트를 하나 만들겠습니다.

     

    스크린샷 2021-04-28 오후 2 30 01

    그리고 위와 같이 application.properties -> application.yml로 바꾼 후에 .gitignore에 등록하겠습니다. 그리고 간단하게 AWS RDS를 연결하는 세팅을 해보겠습니다. (RDS가 없다면 그냥 진행하셔도 될 거 같습니다. 파일이 암호화, 복호화가 잘 되는지를 중점적으로 보시면 됩니다.)

     

     

     

    build.gradle

    compile 'org.springframework.boot:spring-boot-starter-jdbc'
    compile 'mysql:mysql-connector-java'

    build.gradle에 jdbc, mysql 의존성을 추가하겠습니다.

     

     

     

    application.yml

    spring:
      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 설정

    스크린샷 2021-04-28 오후 2 41 16

     

    https://travis-ci.org/ 여기에 들어간 후에 위와 같이 사용할 Repository에 버튼 활성화를 해주겠습니다.

     

     

    스크린샷 2021-04-28 오후 2 46 29

    그리고 위와 같이 Github에 Webhooks가 등록되어 있는지까지 확인하겠습니다. 혹시라도 등록이 안되어 있다면 여기 를 참고하시면 됩니다.

     

     

     

    .travis.yml 작성

    스크린샷 2021-04-28 오후 2 51 36

    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가 되어 있는 상태에서 정말 에러가 나는지 확인을 먼저 해보겠습니다.

     

     

    스크린샷 2021-04-28 오후 2 58 01

     

    스크린샷 2021-04-28 오후 2 58 18

    그러면 위와 같이 ./gradlew clean build 명령을 수행할 때 에러가 발생했다는 것을 볼 수 있습니다. 즉, 설정파일이 존재하지 않기 때문에 에러가 난 것입니다.

     

    그래서 지금부터 설정 파일을 암호화, 복호화하는 것을 진행해보겠습니다.

     

     

     

    Secret 파일 압축

    tar -cvf 원하는이름.tar 암호화할 파일 이름
    ex) tar -cvf gyunny.tar application.yml

    스크린샷 2021-04-28 오후 3 05 41

    위와 같이 입력하면 tar 파일이 하나 생겼을 것입니다.

     

    스크린샷 2021-04-28 오후 3 28 10

    Secret 파일 암호화

    gem install travis  // travis 설치
    travis login        // travis login

    스크린샷 2021-04-28 오후 3 10 56

    그리고 Travis CI와 연결되어 있는 Github 계정을 입력하면 된다 해서 입력을 했는데 저는 되지 않습니다.. (이것 때매 삽질을 꽤나 한거 같습니다.)

     

    그래서 그냥 Github Token을 사용해서 로그인을 하겠습니다. https://github.com/settings/tokens 로 들어가겠습니다.

     

     

    스크린샷 2021-04-28 오후 3 17 39

    위의 정도만 체크를 한 후에 토큰을 만들겠습니다. 그리고 토큰을 복사하겠습니다.

     

     

    travis login --github-token Github_TOKEN

    스크린샷 2021-04-28 오후 3 25 14

    위와 같이 입력하며 로그인이 되었다는 표시를 볼 수 있습니다.

     

    travis encrypt-file 파일이름.tar --add
    ex) travis encrypt-file gyunny.tar --add

    스크린샷 2021-04-28 오후 3 31 13

    그러면 위와 같이 뭐가 뜨면서 암호화가 된 것을 볼 수 있습니다.

     

     

     

    스크린샷 2021-04-28 오후 3 35 50

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

     

     

    또한 위와 같이 travis Repository Setting을 보면 자동으로 추가된 것을 볼 수 있습니다.

     

     

     

    .gitignore에 .tar 파일 추가

    스크린샷 2021-04-28 오후 3 37 44

    암호화를 하면 위와 같이 gyunny.tar, gyunny.tar.enc 파일이 생긴 것을 볼 수 있습니다. 이 중에서 .tar 파일은 올라가면 안되기 때문에 .gitignore에 등록하겠습니다.

     

    스크린샷 2021-04-28 오후 3 39 43

    암호화를 했을 때 위와 같은 .tar 파일은 절대 올리지 말고, .tar.enc 파일은 올리라고 하는 것을 볼 수 있습니다.

     

     

    스크린샷 2021-04-28 오후 3 42 34

    .gitignore에 등록하면 위와 같이 .tar 파일은 제외가 된 것을 확인할 수 있습니다.

     

     

    스크린샷 2021-04-28 오후 3 49 12

    그리고 Github에 push를 해보니 위와 같이 파일을 찾을 수 없다는 에러가 났습니다.. 그래서 gyunny.tar.env 파일을 루트경로로 옮겨야 하나 해서 아래와 같이 옮겼습니다.

     

     

    스크린샷 2021-04-28 오후 4 44 19

    기존에 ./src/main/resources/ 경로에 존재하던 파일을 위와 같이 프로젝트 루트 경로로 옮겼습니다.

     

     

    스크린샷 2021-04-28 오후 4 47 32

    tar xvf 파일이름.tar
    ex) tar xvf gyunny.tar

    암호화 했던 파일을 Travis CI에서 복호화 하는 코드를 .travis.yml에 적어주겠습니다.

     

     

    스크린샷 2021-04-28 오후 4 44 05

    그러면 위와 같이 빌드에 성공한 것을 볼 수 있습니다.

    반응형

    댓글

Designed by Tistory.