문제 발생
GitHub Actions와 CodeDeploy로 CI/CD를 구현하고 있었다.
GitHub Actions 워크 플로우는 아래와 같다.
name: CI/CD with S3 and CodeDeploy
on:
pull_request:
branches: [ "main" ]
env:
AWS_REGION: ap-northeast-2
S3_BUCKET_NAME: midcondria-cicd
CODE_DEPLOY_APPLICATION_NAME: midcon-codedeploy-app
CODE_DEPLOY_DEPLOYMENT_GROUP_NAME: midcon-codedeploy-deploy-group
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
## application.yml 파일 생성
- name: make application.yml
run: |
echo ">> mkdir & touch"
mkdir -p ./src/main/resources
cd ./src/main/resources
touch ./application.yml
echo ">> copy application.yml"
echo "${{ secrets.PROPERTIES }}" >> ./application.yml
- name: Grant execute permission for gradlew
run: chmod +x gradlew
shell: bash
- name: Build with Gradle Wrapper
run: ./gradlew build -x test
shell: bash
- name: Make zip file
run: zip -r ./myapplication.zip appspec.yml scripts/* ./build/libs/team-0.0.1-SNAPSHOT.jar
shell: bash
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Upload to AWS S3
run: |
aws s3 cp \
--region $AWS_REGION ./myapplication.zip s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip
- name: Deploy to AWS EC2 from S3
run: |
aws deploy create-deployment \
--application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \
--deployment-group-name ${{ env.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \
--deployment-config-name CodeDeployDefault.AllAtOnce \
--s3-location bucket=$S3_BUCKET_NAME,key=$GITHUB_SHA.zip,bundleType=zip \
--region $AWS_REGION
위 워크플로우에서 Upload to AWS S3 까지는 성공했으나, 아래와 같은 에러가 발생했다.
GitHub Actions 로그
EC2 CodeDeploy Agent 로그
문제 해결
appspec.yml was not found 라는 에러 메시지에서도 알 수 있듯 appspec.yml 이라는 파일이 없어서 생긴 문제였다.
결국 나도 오타로 인한 에러이긴 했는데 검색 결과들은 확실한 오타들이 있었다.
appsec.yml 이라던가 appsepc.yml 이라던가...
나는 AppSpec.yml 이라고 의도적으로 대문자로 작성했던거라 설마 이거 문제겠나 싶었다.
하지만 로그는 정확한가보다.
CodeDeploy를 사용할 때는 꼭 파일명을 appspec.yml 으로 사용하자.
'백엔드 > 트러블 슈팅' 카테고리의 다른 글
jar 파일로 실행 시 Swagger UI가 openapi3.yaml 파일을 읽지 못하는 문제 (0) | 2024.06.13 |
---|---|
Spring Boot Actuator의 health check 오류 (0) | 2024.06.04 |
MySQL 연결 시 "Public Key Retrieval is not allowed" (0) | 2024.05.21 |
CORS 트러블슈팅 - PUT, DELETE 요청 (0) | 2024.05.07 |
배포 서버에 HTTPS적용 시 스웨거 CORS 에러 (0) | 2024.05.04 |