code deploy를 사용하여 배포를 진행할 때 초기 설정 파일 script를 s3에 저장하고 진행하고 있었다.

다음은 github action에서 code deploy를 trigger 시키는 부분이다

      - name: Trigger CodeDeploy Deployment
        id: create_deployment
        run: |
          DEPLOYMENT_ID=$(aws deploy create-deployment \\
            --application-name code-deploy \\
            --deployment-group-name deploy-group-1 \\
            --deployment-config-name CodeDeployDefault.AllAtOnce \\
            --s3-location bucket={BUCKETNAME},key={SCRIPT.zip},bundleType=zip \\
            --auto-rollback-configuration enabled=true,events=DEPLOYMENT_FAILURE,DEPLOYMENT_STOP_ON_REQUEST \\
            --region {REGION} \\
            --query 'deploymentId' \\
            --output text)

s3에서 script.zip을 다운 받아 이를 실행시키는데,

echo "$DOCKER_TOKEN" | docker login --username "$DOCKER_USERNAME" --password-stdin

docker-compose -f /docker-compose.yml up -d || true
echo "$DOCKER_TOKEN" | docker login --username "$DOCKER_USERNAME" --password-stdin

docker-compose -f /deployment/docker-compose.yml down -d || true

각각 after_install, before_install 파일로, 정말 간단해서 문제가 생길 부분 자체가 없다고 생각했다.

하지만 2번이나 삽질을 하게 된다.

먼저 sh 파일 위에 #!/bin/bash 를 반드시 넣어주어야 한다. 이 부분이 없어서 에러가 발생

이 부분이 없으면 os 입장에서 어떤 인터프리터로 실행할지 알 수 없기 때문에 에러가 발생한다.

**#!/bin/bash**
echo "$DOCKER_TOKEN" | docker login --username "$DOCKER_USERNAME" --password-stdin

docker-compose -f /home/ec2-user/deployment/docker-compose.yml up -d || true
**#!/bin/bash**
echo "$DOCKER_TOKEN" | docker login --username "$DOCKER_USERNAME" --password-stdin

docker-compose -f /home/ec2-user/deployment/docker-compose.yml down -d || true

다음으로는, 나는 ide로 인텔리제이를 사용 중이었는데, 내 노트북에서는 우 하단의

image.png

line seperator가 윈도우라 CRLF 로 되어있었다. 이 때문에 오류 발생

이를 LF로 변경해서 저장을 해주어야 한다.