Github Actions를 이용하여 EC2, Linode 등 ubuntu 서버에 자동배포를 알아보겠습니다.
우선 본인의 서버 pc에 접속하여 기본적인 세팅을 해줍시다.
sudo apt update
# 각자 원하는 버전을 설치하시면 됩니다
sudo apt install openjdk-11-jre-headless
서버에서 사용할 포트도 열어줍니다
EC2 -> 보안탭의 인바운드 규칙 수정
Linode -> firewalld 를 사용하여 포트 개방 (기본적으로 열려있음)
자동배포할 프로젝트 레포지토리로 이동하여 Settings - Actions - Runners - New self-hosted runner로 이동합니다
운영 체제에 맞게 선택해주시고 표시한곳까지 서버 터미널에 명령어들을 차례로 입력해 줍니다.
표시된 곳의 마지막까지 실행을 하면 아래와 같은 모습이 나오는데 특별히 설정하고 싶은 부분이 없다면 모두 Enter 하시면 됩니다.
./config.sh 명령어 실행 중 Must not run with sudo라는 에러메시지가 발생할 경우
아래 명령어를 입력한 뒤 다시 시도하시면 됩니다.
export RUNNER_ALLOW_RUNASROOT="1"
다음으로 아래 명령어를 차례로 입력하여 Github Actions를 수신할 준비를 완료해 줍니다
sudo ./svc.sh install
sudo ./svc.sh start
다시 깃허브 레포지토리에서 상단의 Actions 탭을 클릭하여 본인에게 맞는 빌드 툴을 선택해 줍니다.
(저는 Java with Gradle을 선택했습니다)
빌드 툴을 선택하면 아래와 같은 gradle.yml 파일을 생성해 줍니다.
이 파일에다 Github Actions가 할 일을 입력해 줍니다.
gradle.yml 파일을 아래와 같이 본인의 우분투 서버 경로에 맞게 설정하여 수정 후 커밋 해줍니다.
* `sudo lsof -t -i:8080` <--- 백틱입니다. 느낌표 왼쪽에 있는 부분
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
name: Java CI with Gradle
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: self-hosted # <- 우분투 서버에서 실행하도록 하는 명령어
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build
- name: Execute Jar File # 추가
run: sudo kill -9 `sudo lsof -t -i:8080` & sudo java -jar /home/ubuntu/actions-runner/_work/linode-github-action-test/linode-github-action-test/build/libs/linode-github-action-test-0.0.1-SNAPSHOT.jar &
커밋 후 Actions 탭을 눌러보면 수행되는 부분을 확인할 수 있다
해당 작업이 모두 통과하면 자동 배포에 성공하게 된다
+ 깃허브 레포지토리의 프로젝트 폴더의 위치를 직접 세팅해줘야하는 경우
gradle.yml의 아래 부분을 지우고
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build
아래와 같이 경로를 직접 설정해준다
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
name: Java CI with Gradle
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
- name: Grand execute permission for gradlew # permission 에러가 발생할 경우
run: chmod +x /root/actions-runner/_work/test/test/server/farm/gradlew
- name: build # 경로를 직접 설정하여 빌드 명령을 내려준다.
run: /root/actions-runner/_work/test/test/server/farm/gradlew build
working-directory: ./server/farm
- name: Execute Jar File
run: sudo kill -9 `sudo lsof -t -i:8080` & sudo java -jar /root/actions-runner/_work/test/test/server/farm/build/libs/farm-0.0.1-SNAPSHOT.jar &
'개발일지 > 웹개발' 카테고리의 다른 글
HTTP 3xx - 리다이렉션 (Redirection) (0) | 2023.04.12 |
---|---|
Spring-boot Github Actions 환경변수 설정해주기 (0) | 2023.01.12 |
토큰 기반 자격 증명 방식 (0) | 2022.11.23 |
세션(session)이란? (0) | 2022.11.23 |
Cookie의 옵션들 (0) | 2022.11.22 |