VO7E
A
익명님이 2022-10-20에 작성

Github Actions (깃허브 액션) 를 이용해 개발 컴퓨터에서 git push 시 자동으로 서비스 서버에 pull 시키는 법

github,actions,commit,push,pull,id_rsa,token

아마존이나 에져 (Azure) 같은 서버리스 업체에 서버를 하나 구매하고 홈페이지를 만드시는 분들이 많이 계십니다.

그럴 때 업로드는 수동으로 하더라도 서버 적용은 자동화를 시키고 싶은 데, 그럴 때는 깃 허브 액션 기능을 사용하시면 됩니다.

github 안내 이미지 1

이곳에 들어간 다음, 좌측 상단에 있는 New workflow를 클릭하고 중간에 set up a workflow yourself 를 클릭해 자신만의 워크플로우를 만들어 주셔야 합니다.

github 액션 안내 이미지 2

이곳에 제가 제공해 드리는 코드들을 붙여 넣어 주세요. 무턱대고 코드를 넣으려고 하시기 보다 어떻게 작성해야 하는 지를 이해하시면서 보시면 좋습니다. name: deploy #원하는 이름으로 바꾸어 주셔도 됩니다. on: push: branches: - main #보통 처음에 리포지토리를 별도 세팅 하지 않았더라면 이름이 main이 되시기 때문에 굳이 변경할 필요가 없습니다. 예외로 master인 분들은 -master로 변경하셔야 합니다. jobs: #작업의 단위 입니다. 만약 2개의 서버에 전부 실행시키려면 jobs가 두개여야 합니다. SSH: runs-on: ubuntu-latest # 우분투 이외의 서버 OS를 사용하신다면 -latest 앞을 해당 명으로 바꾸어주세요. steps: - uses: actions/checkout@v2 #기본으로 깔고가는 것이라 바꿀 필요가 없습니다. - name: Run scripts in server #해당 작업에 대한 이름을 적어 주는 것이라 마음대로 바꾸어 주셔도 됩니다. uses: appleboy/ssh-action@master # 헷갈려 하시는 분들이 많으신데, 이는 애플보이라는 제작자의 ssh 기능을 사용하는 의미입니다. 즉 수정할 필요가 없습니다. with: key: ${{ secrets.SSH_KEY }} # 변수가 사용되었습니다. 이 변수는 리포지토리 settings ->secrets -> action secrets에서 설정할 수 있습니다. host: 1xx.1xx.x3x.x4 # 사용하시는 서버리스의 아이피를 입력해 주세요. username: ubuntu # root를 제외한 해당 서버의 사용자 이름을 적어 주시면 됩니다. 우분투 서버는 기본 로그인 유저 이름이 ubuntu 입니다. `whoami` 명령어로 알수 있습니다. script: | cd /var/www/html sudo git add . sudo git commit -m amazon sudo git pull # script 부터는 줄바꿈에 유의하며 실제 ssh로 해당 서버에 접속했다고 생각하고 작성해 주시면 됩니다. 그리고 반드시 앞에 sudo를 붙여 주시길 권장합니다.

github 액션 안내 이미지 3

start commit 를 누르게 되면 xxx.yml 파일이 리포지토리에 추가 됩니다. 이제 작업할 단계를 순서대로 말씀드리자면.... 1. 개발 하는 컴퓨터에 pull로 받아오면 yml 파일을 IDE 에서 수정할 수 있습니다. 이는 선택사항입니다. 2. 위 코드에서 ssh_key라는 환경 변수를 만들어야 합니다. settings->secrets -> actions -> new repository secrets를 클릭해서 키 값에는 `SSH_KEY` 로, value 값에는 여러분들이 서버에 접속할 때 필요하다면 서 다운 받은 xxx.pem 파일 안의 내용을 그대로 전부다 복사해와서 붙여 넣으시면 됩니다. 3. 인증 없이는 원격으로 ssh를 넣을 수 없습니다. ssh 키를 사용하는 방법과 personal access token을 사용하는 방법 중 후자를 사용해 보겠습니다. (왜냐하면 서버 -> 리포지토리는 둘다 되지만 리포지토리 -> 서버는 id_rsa 방법이 작동하지 않더군요.)

github 액션 안내 이미지 4

4. 깃허브 아이콘을 우클릭하면 settings -> developer settings -> personal access tokens -> 드롭다운 tokens (classic) -> generate new token 으로 임의의 영어 배열 문장을 복사해 두세요. 5. 일반적인 방법으로 서비스 서버에 ssh로 접속한 다음 이미 있는 git 폴더 에서 git remote set-url origin https://복사한토큰@github.com/깃허브사용자이름/리포지토리이름.git 을 입력해 주세요. 6. 이제 해당 폴더는 설정한 url로 토큰을 이용해 파일을 주고 받을 수 있게 되었습니다. 그런 다음 개발 환경에서 git add . & git commit -m 아무태그 & git push 하시면 끝! 7. 액션이 잘 되고 있나를 살펴 보시려면 actions -> all workflows 에서 확인하시면 됩니다. x 표시로 빨갛게 되어 있다면 실패한 것이고 그렇지 않고 초록색 이더라도 pull 명령어 자체는 문제가 있을 수 있으니 클릭 해서 확인해 보셔서 로그를 확인 해 주세요. 따라하다가 문제가 있다면 댓글로 남겨주시고 혹시 권한과 관련된 문제가 발생한다면 아래 링크를 참조해 주시면 됩니다.

https://vo7e.com/post/92
Total 0

작동해요

안되요

댓글
Drag and drop files here or click

익명님, 안녕하세요!

로그인 하시면 작성된 글을 수정할 수 있습니다.

VO7E Recent Post

작성된 최신글을 확인하세요!

사이트 TIP

This site made with Mudblazor!

An error has occurred. This application may no longer respond until reloaded. Reload 🗙