EFUB 백엔드 세션 10주차

xyzw·2023년 6월 1일
0

Spring

목록 보기
11/22

[CI/CD & AWS 배포] 오류 해결 과정

Grant execute permission for gradlew

chmod: cannot access 'gradlew': No such file or directory

jobs:
  deploy:
	...
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew

gradlew이 현재 디렉토리가 아닌, blog 디렉토리 아래에 있기 때문에 찾을 수 없다고 떠서 아래와 같이 코드를 수정하였다.

run: chmod +x /blog/gradlew

chmod: cannot access '/blog/gradlew': No such file or directory

그런데도 오류가 나서 아래와 같이 코드를 수정하였다.

run: cd blog && chmod +x ./gradlew

그래도 해결되지 않아서 인텔리제이 터미널에서 아래 명령어를 입력하였더니 해결되었다.

git update-index --chmod=+x ./gradlew

Run touch ./src/main/resources/application.yml

마찬가지로 application.yml이 blog 디렉토리 하위에 있었던 상황이었다.
그리고 yml 파일을 깃허브에 업로드하지 않았으므로 resources 디렉토리가 생성되지 않았다.
따라서 resources 디렉토리를 만들고, 경로에 blog를 추가해서 해결하였다.

- run: mkdir ./blog/src/main/resources/
- run: touch ./blog/src/main/resources/application.yml
- run: echo "${{env.APPLICATION}}" > ./blog/src/main/resources/application.yml

Build with Gradle

기존 코드는 다음과 같았다.

- name: Build with Gradle
  uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee
  with:
    arguments: clean build -x test

- name: init with Gradle
  uses: gradle/gradle-build-action@v2
- run: gradle init
- name: Build with Gradle
  uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee
  with:
    arguments: build

이렇게 코드를 수정하였더니 해결되었다.


Configure AWS credentials

https://github.com/aws-actions/configure-aws-credentials/issues/271
이 글을 참고하여 코드를 다음과 같이 수정했는데도 동일한 오류가 발생하였다.

permissions:
  id-token: write
  contents: read

다시 코드를 살펴보니 repository secrets 중에 AWS_ACCESS_KEY_IDAWS_ACCESS_KYE_ID로 잘못 만들어서 생긴 오류였다.
오타를 정정했더니 해결되었다.


Upload to AWS S3

/home/runner/work/efub3-backend-session/efub3-backend-session/appspec.yml was not found

해당 경로에 appspec.yml 파일이 없다는 것인데, 내가 appspec.yml 파일을 프로젝트의 루트 디렉토리가 아닌, ec2의 루트 디렉토리에 작성했기 때문이었다.

프로젝트의 루트 디렉토리에 appspec.yml 파일을 작성하고, scripts 폴더를 만들어 그 하위에 start.sh, stop.sh 파일을 작성했더니 이 오류는 해결되었다.


Failed to upload '.' to 's3://{버킷명}/{}.zip': An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

Amazon S3 버킷에 접근하는 것이 허용되지 않는다는 메세지가 떴다.

https://zzang9ha.tistory.com/358
이 글을 참고하여 버킷의 권한 설정을 바꿔주었다.

오류 메세지에 PutObject를 요청했을 때 접근이 거부되었다고 나와있어서
버킷 정책을 생성할 때 Actions에 PutObject와 GetObject를 넣어주었다.


성공

Github Actions


AWS CodeDeploy

0개의 댓글