일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- java list 출력
- java알고리즘문제풀이
- 프로그래머스제일작은수
- java map
- java set 저장
- javaJVM
- 격파르타합격후기
- 프로그래머스
- java최솟값구하기
- java기본자료형
- 비전공자sqld
- java참조자료형
- java map 출력
- 작은수제거하기
- java map 저장
- java알고리즘
- sqld자격증합격
- javaJRE
- 격파르타후기
- 인터프린터언어
- 격파르타비전공자
- 격파르타장점
- 노베이스부트캠프
- 컴파일
- java list 저장
- java 자료구조 활용
- java set 출력
- 항해99후기
- 코딩부트캠프후기
- 항해15기
- Today
- Total
코딩과 결혼합니다
Github Actions 로 CD를 구축하기 위한 눈물 나는 노력 본문
해결 시도 1.
Gradle 스크립트 실행 에러는 스크립트 '/home/runner/work/backend/backend/gradlew'가 실행 가능한 권한이 없기 때문에 발생합니다. 이 문제를 해결하려면 스크립트에 실행 권한을 부여합니다.
git bash에 아래 내용 입력
chmod +x /home/runner/work/backend/backend/gradlew
위의 명령을 실행하여 스크립트를 실행 가능하게 만든 후 변경된 스크립트를 레포지토리에 커밋
git add /home/runner/work/backend/backend/gradlew
git commit -m "Make Gradle script executable"
git push
결과 : 똑같음
해결 시도 2.
name: Build and Deploy to EC2
on:
push:
branches: [ main ]
# pull_request:
# branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
shell: bash
- name: Build and Test
run: ./gradlew build test
다른 사람의 코드를 참고해서 아래처럼 바꿔봄.
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build
두 코드 모두 GitHub Actions를 사용하여 프로젝트를 빌드하고 테스트하는 과정을 자동화하려는 것에는 동일하지만, 작성된 설정과 사용한 옵션에 약간의 차이가 있습니다.
1. 첫 번째 코드:
- push 이벤트 시에만 빌드와 테스트 과정을 실행합니다. main 브랜치로 push 될 때 이루어집니다.
- JDK 17을 설정하기 위해 actions/setup-java@v1 버전을 사용합니다.
- gradlew 파일에 실행 권한을 부여하는 과정을 포함합니다 (chmod +x ./gradlew).
- 빌드 및 테스트 과정을 실행하기 위해 './gradlew build test' 명령을 직접 사용합니다.
2. 두 번째 코드:
- pull_request 이벤트 시에만 빌드 과정을 실행합니다. main 브랜치로 pull request가 생성될 때 이루어집니다.
- JDK 17을 설정하기 위해 actions/setup-java@v3 버전을 사용합니다.
- Gradle 빌드를 위해서 gradle/gradle-build-action을 사용합니다. 이는 첫 번째 코드와 달리 내장된 Gradle 빌드액션을 사용하여 명령어를 실행하지 않습니다.
두 코드 모두 목적은 비슷하지만, 사용하는 이벤트, 액션 버전, 빌드와 테스트를 실행하는 방식 등에 약간의 차이가 있습니다. 이들 차이점을 고려하여 전체 작업 프로세스와 선호하는 설정에 따라 사용할 적합한 코드를 선택할 수 있습니다.
결과 : 에러
Error: Error: Gradle script '/home/runner/work/backend/backend/gradlew' is not executable. Error: Gradle script '/home/runner/work/backend/backend/gradlew' is not executable. at verifyIsExecutableScript (/home/runner/work/_actions/gradle/gradle-build-action/67421db6bd0bf253fb4bd25b31ebb98943c375e1/dist/webpack:/gradle-build-action/src/execution.ts:62:1) at Object.<anonymous> (/home/runner/work/_actions/gradle/gradle-build-action/67421db6bd0bf253fb4bd25b31ebb98943c375e1/dist/webpack:/gradle-build-action/src/execution.ts:46:1) at Generator.next (<anonymous>) at /home/runner/work/_actions/gradle/gradle-build-action/67421db6bd0bf253fb4bd25b31ebb98943c375e1/dist/webpack:/gradle-build-action/src/execution.ts:31:1 at new Promise (<anonymous>) at webpack_modules.3584.__awaiter (/home/runner/work/_actions/gradle/gradle-build-action/67421db6bd0bf253fb4bd25b31ebb98943c375e1/dist/webpack:/gradle-build-action/src/execution.ts:27:1) at Object.executeGradleBuild (/home/runner/work/_actions/gradle/gradle-build-action/67421db6bd0bf253fb4bd25b31ebb98943c375e1/dist/webpack:/gradle-build-action/src/execution.ts:44:1) at /home/runner/work/_actions/gradle/gradle-build-action/67421db6bd0bf253fb4bd25b31ebb98943c375e1/dist/webpack:/gradle-build-action/src/main.ts:54:1 at Generator.next (<anonymous>) at fulfilled (/home/runner/work/_actions/gradle/gradle-build-action/67421db6bd0bf253fb4bd25b31ebb98943c375e1/dist/webpack:/gradle-build-action/src/main.ts:28:1)
여전히 실행 권한이 없는 Gradle 스크립트 때문에 오류가 발생
해결책을 시도했다면 이 문제는 GitHub Actions 워크플로에서 스크립트 실행 권한을 변경해야 할 수있다.
해결 시도 3.
Grant execute permission to gradlew 단계를 워크플로에 추가
name: Build and Deploy Spring Boot to AWS EC2
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# 새로 추가된 부분
- name: Grant execute permission to gradlew
run: chmod +x ./backend/gradlew
# 여기까지
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build
결과 : 에러
Run chmod +x ./backend/gradlew chmod +x ./backend/gradlew shell: /usr/bin/bash -e {0} env: JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.7-7/x64 JAVA_HOME_17_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.7-7/x64 chmod: cannot access './backend/gradlew': No such file or directory Error: Process completed with exit code 1.
./backend/gradlew 파일을 찾을 수 없습니다. 이는 경로가 잘못되었거나, 파일이 누락되었거나, 저장소에 커밋되지 않을 수 있습니다. ....^^
해결 시도 4.
깃 배쉬에 아래의 명령어로 경로를 찾음.
find . -name "gradlew"
(이 명령은 현재 디렉토리 구조에서 위치한 모든 gradlew 파일을 리턴)
결과 : 에러
Run chmod +x ./backend/gradlew
2 chmod +x ./backend/gradlew
3 shell: /usr/bin/bash -e {0}
4 env:
5 JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.7-7/x64
6 JAVA_HOME_17_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.7-7/x64
7chmod: cannot access './backend/gradlew': No such file or directory
8Error: Process completed with exit code 1.
해결 시도 5.
다른 조의 팀원분에게 도움 요청.
테스트 코드와 충돌이 있을 수 있으니 주석처리를 해보라고 하심.
주석 처리 후에 커밋하고 push
결과 : 해피엔딩
후기
화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!화이팅!
'2세 > DevOps' 카테고리의 다른 글
230807 - GithubAction으로 CI/CD 오류 해결과 RDS 연결 (0) | 2023.08.07 |
---|---|
230802 - Docker로 Elasticsearch 설치,실행 + WSL2 설치 + Linux 배포 설치 (0) | 2023.08.02 |
230717 - AWS(IAM, MFA) (0) | 2023.07.17 |
230717 - [Jenkins]Publish Over SSH, Pipeline Script 작성 (0) | 2023.07.17 |
230715 - [DevOps] Jenkins, Docker로 Spring Boot CI/CD 구축하기 (0) | 2023.07.15 |