☘️ GitHub Actions 를 통한 CI
1. 로컬 환경 IDE 에서 코드 작업 후 연결된 Github 저장소로 Commit & Push
2. GitHub Actions 를 통해 갱신된 코드가 자동으로 빌드 및 테스트 진행 후
3. 도커 이미지로 생성, 도커 이미지 저장소에 배포하는 과정 수행
✏️ Dockerfile 코드
FROM openjdk:11
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
- COPY ${JAR_FILE} app.jar
- COPY A B : A에서 B로. build/libs/*.jar를 컨테이너에 복사하되 app.jar라는 이름으로 복사하라는 명령어
✏️ cannot access 'gradlew': no such file or directory
현재 내 레포지토리는 client 와 server 파일을 같이 가지고 있음.
상위 .github 에 workflows > deploy.yml 을 해 주어야 해당 레포지토리의 push 를 트리거 할 수 있음.
단, 현재 server 내 코드 변동 시 Actions 되도록 해야 함.
📚 문제 발생
처음 코드
- name: Build with Gradle
run: ./gradlew build
- name: Docker build
chmod +x gradlew
Unix 계열 시스템(Linux, macOS 등)이나 CI 환경에서 Gradle Wrapper 스크립트(gradlew)를 실행 가능하도록 권한을 설정
원인
[Android] Github Action 으로 CI 구축 하기(Feat : cannot access gradlew)
ktlint를 적용하여 코틀린 컨벤션을 맞추는 과정에서 코드를 작성한 후에 늘 ktlint를 실행하여 확인해야 하는 걸까? 라는 의문을 가지게 되었습니다. 이를 해결하기 위해 CI라는 개념을 알게 되었
velog.io
프로젝트의 스크립트(gradlew)와 Gradle 빌드 파일이
./server 디렉토리에 있는데, 경로를 찾지 못했기 때문.
:: working-directory: ./server 를 추가해 주어야 함.
🔎 문제해결
- name: Initialize Gradle Wrapper
working-directory: ./server
run: |
chmod +x gradlew
./gradlew wrapper
- name: Build with Gradle
working-directory: ./server
run: ./gradlew build
Gradle Wrapper
프로젝트 개발 시에 개발자 별로 각기 다른 버전의 gradle 을 사용할 수 있는데,
wrapper 를 사용해서 각기 다른 개발 환경에서도 기본으로 설치된 gradle 버전과 상관없이
해당 프로젝트에 종속된 gradle 버전으로 사용할 수 있도록 해줌.
Gradle의 버전 관리와 스크립트 실행 가능성을 보장하기 위해 추가함.
gradle wrapper 는 왜 필요 하나?
1. gradle wrapper 는 무엇 일까? 프로젝트 개발을 할 때 개발자 별 로 각기 다른 버전의 gradle 를 사용 하고 있을 수가 있다. 예를 보자 " A 개발자는 gradle 5.6 버전을 사용하고, B 개발자가 gradle 3.0 을 사
oya150.tistory.com
'Cloud' 카테고리의 다른 글
[MSA] 멀티 모듈과 MSA (0) | 2025.05.30 |
---|---|
[Cloud] CD(지속적 배포 : Continuous Deployment) (0) | 2024.12.04 |
[Cloud] CI(지속적 통합 : Continuous Integration) (1) | 2024.12.01 |
[Cloud] S3 - 정적 웹 사이트 호스팅 (1) | 2024.11.25 |
[Cloud] AWS 진행 순서 (1) | 2024.07.17 |