-
Notifications
You must be signed in to change notification settings - Fork 5
Day 04 개발일지 Web
- 데이터 베이스 2개 연결
- seeder 더미 데이터 구현
- 데이터 베이스 2개의 연결을 위해서 config 파일 수정
개발용 디비는 팀원들과 함께 사용할 외부로부터 접근가능한 User를 생성하여 ID, PW를 공유하기로 하였다. 배포용 디비는 외부로부터 접근이 불가능한 유저와 데이터베이스를 만들어서 초기 셋팅외에는 외부로 부터 접근할 수 없도록 만들었다.
- 사용한 명령어
create user userid@localhost identified by '비밀번호';
create user userid@'%' identified by '비밀번호';
GRANT ALL privileges ON DB명.* TO 계정아이디@locahost IDENTIFIED BY '비밀번호';
GRANT ALL privileges ON DB명.* TO 계정아이디@'%' IDENTIFIED BY '비밀번호';
3주 프로젝트에서 불편했던 점을 보완해서 이번 프로젝트에서 적용해볼 생각을 하던중 Git에 코드가 Merge될 때 마다 매번 ssh로 직접 접근해서 코드를 pull했던 기억이 났다. 긴 시간이 걸리지는 않지만 횟수가 많아질 수록 반복되는 작업이 많이 진행되기 때문에 배포 자동화 작업이 꼭 필요할 것 같다는 생각이 들었다. 때문에 이번 프로젝트에서는 초기에 서버 배포 자동화를 진행하기로 결정 !!
자동화를 진행하기 전 Travis냐 Jenkins냐를 고민했었다. 결과부터 말하면 Travis가 승리하였다. 그 이유는 Jenkins를 사용하려면 Jenkins를 호스팅, 설치 작업이 필요하기 때문에 ncloud의 경우 다시 서버를 빌드해야하기 때문이다😅
문서를 보다보니 push된 브랜치 이름에 따라서 다른 동작을 지정할 수 있다는 걸 알게 되었다. 그래서 release-FE
, release-BE
에 같은 커밋을 push하고 travis에서 다른 동작을 하면 될 것 같았다.
일단 travis로 push된 소스를 가져와서 테스트, 빌드까지 하는 CI 작업을 시도했다. .travis.yml
파일에 설정을 해줬는데 브랜치 이름에 따라서 다른 폴더로 이동하는 설정을 추가했고, 이동한 후 npm run build를 하도록 해주었다. 테스트는 travis에서 기본적으로 npm test를 실행하기 때문에 package.json
에 test 스크립트만 작성하면 될 것 같다.
이렇게 설정을 하고 push해보니 브랜치에 따라서 다르게 빌드,테스트하는 것을 확인할 수 있었다 🎉
before_script:
- if [ "$TRAVIS_BRANCH" = "release-FE" ]; then cd ./WEB/FE; fi
- if [ "$TRAVIS_BRANCH" = "release-BE" ]; then cd ./WEB/BE; fi
- npm install
- npm run build
travis는 CI 도구라서 그런건지 배포 관련한 기능은 조금 불편하다는 생각이 들었다. 작업하기 전에 다른 사람들은 travis로 배포를 어떻게 하는지 찾아봤는데, 빌드한 소스를 서버로 ssh를 통해 복사/전달하는 방법을 많이 쓰고 있는 것 같았다. 그 중에 rsync로 파일을 전달하는 방법이 좋아보여서 이 방법으로 시도해보았다.
먼저 travis에서 ssh 연결하는 방법을 알아보니 travis에서 파일을 암호화/복호화 하는 기능을 제공하고 있었다. 그래서 ssh key를 암호화해서 소스와 같이 커밋하면 travis에서 key를 복호화해서 사용할 수 있었다.
이제 travis 가상환경에서 ssh key를 가지고 있기 때문에 ssh 연결을 할 수 있었다. 연결한 후 rsync로 webpack 빌드 결과물을 전송해봤는데 제대로 전송된 것을 확인할 수 있었다.
before_deploy:
# openssl 라이브러리를 사용해서 암호화된 rsa key를 복호화합니다
- openssl aes-256-cbc -K $encrypted_db2095f63ba3_key -iv $encrypted_db2095f63ba3_iv
-in ../../deploy_rsa.enc -out ./deploy_rsa -d
# ssh-agent를 실행합니다
- eval "$(ssh-agent -s)"
# rsa key의 권한을 조절합니다
- chmod 600 ./deploy_rsa
# ssh-agent에 rsa key를 등록합니다
- ssh-add ./deploy_rsa
# ssh 연결을 하고 pwd 명령을 실행해봅니다
- ssh -i ./deploy_rsa [email protected] pwd
-
.env
와 같이 GitHub에 없는 파일을 배포하는 방법 - 지금은 iOS에 대한 설정이 없는데, 추가한다면 어떻게 해야할지
- before_deploy 부분도 BE,FE 나눠야 하는데 if문으로 가능할지
- CI는 배포랑 별개로 개발하면서 push할 때마다 진행되어야 하는 것 아닌가? 라는 생각이 듦
- dev 브랜치도 CI(테스트,빌드)를 설정하면 좋을 것 같다?
- 기초적인 셋팅에도 많은 시간이 걸린다는 것을 또 한번 깨달았다... Travis는 처음 접해봤지만 친해지기 힘든 친구였다😂 그래도 포기하지 않고 Travis와 꼭 친해져서 CI/CD를 성공해볼 것이다.
- 모델 구현도 데이터 베이스를 2개로 나누려니 고려해야 하는 문제가 너무 많았습니다.
- 아직 문제가 해결되지 않은 찝찝함...
- travis를 계속 공부하고 있는데.. Travis CI라는 이름에 맞게 배포 기능은 약한 것 같음
- 다음주부터는 기능개발해야 되니 이번주까지는 완성할 수 있도록 준비해야겠음
© Boostcamp