인프런 커뮤니티 질문&답변

현석오님의 프로필 이미지
현석오

작성한 질문수

AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)

배포용 Workflow 만들기

[배포용 Workflow 만들기] 에러 해결과 아직 남은 에러

작성

·

294

·

수정됨

0

에러 해결 info

github secres 에 SSH_PRIVATE_KEY 저장할때 로컬에서
$ cat ~/.ssh/github_id_rsa (뒤에 pub 없는거 )

이렇게 조회 한걸 저장 해야 deploy.yml 에서 ssh 연결시에 인증 정보 틀림에 의한 에러가 발생하지 않았습니다

              run: |

                ssh ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_PUBLIC_IP }} "

                  cd sample_express

                  git pull || exit 1

                  npm install || exit 1

                  npm run build

                  sudo pkill node || exit 1

                  sudo npm run start & npx wait-on http://localhost

                  exit

                "


그런데 아직 에러가 남아 있는데 코드가 반영된 이후에 에러가 발생 합니다.

ex)

에러가 발생한 코드
name: deploy


on:

  push:

    branches:

      - main


jobs:

  deploy:

    runs-on: ubuntu-latest

    steps:

      - name: Set up SSH

        run: |

          mkdir -p ~/.ssh

          echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa

          chmod 600 ~/.ssh/id_rsa


      - name: Set up known hosts

        run: |

          echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts

          chmod 644 ~/.ssh/known_hosts


      - name: SSH and deploy

        run: |

          ssh ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_PUBLIC_IP }} "

            cd sample-express2

            sudo chown ubuntu:root .git/FETCH_HEAD

            sudo chmod +w .git/FETCH_HEAD

            chmod +w .git/FETCH_HEAD

            git pull || exit 1

            npm install || exit 1

            npm audit fix

            npm run build

            sudo pkill node || exit 1

            sudo npm run start & npx wait-on http://localhost

            exit

          "


답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

GitHub Actions 워크플로우 실행 중 발생하는 에러는 다양한 원인에 의해 나타날 수 있습니다. 제공해주신 로그 내용에 따르면, “Broken pipe” 에러가 발생했다고 합니다. 이 에러는 네트워크 연결 문제, 서버의 연결 처리 방식에 문제가 있을 때, 혹은 SSH 세션 끊어짐으로 인해 발생하는 경우가 많습니다.

SSH 연결 과정에서 문제가 생긴 것으로 보이며 다음 단계를 통해 문제를 해결해볼 수 있습니다:

  1. SSH Key의 권한과 형식을 확인하세요. id_rsa 파일의 권한은 600이어야 하며, known_hosts 파일의 권한은 644여야 합니다. 로그에 따르면 이 부분은 정상적으로 설정된 것 같습니다.

  2. SSH 연결이 제대로 설정되었는지, 세션 타임아웃 설정이 너무 짧게 설정되지 않았는지 확인하세요.

  3. 사용 중인 서버의 SSHD 설정을 확인하여 세션이 제대로 유지될 수 있도록 해야 합니다. 예를 들어, ClientAliveInterval, TCPKeepAlive 같은 설정을 확인해보십시오.

  4. SSH 명령 실행 중에 오랜 시간 대기하는 과정이 있다면, nohup과 같은 방법을 사용하여 백그라운드에서 프로세스가 중단되지 않고 지속되도록 해야 할 수도 있습니다.

  5. 만약 서버에 연결 후 다른 명령을 실행하지 않고 즉시 끊어져야 한다면 ssh -o "ExitOnForwardFailure yes" ... 옵션을 사용하는 방법도 있습니다.

위 단계들을 검토하여 문제를 해결해보시고, 문제가 지속될 경우 좀 더 상세한 로그 정보를 통해 에러를 분석해볼 필요가 있습니다. 추가적으로, 실행 중인 npm 스크립트가 백그라운드에서 비동기적으로 실행될 때, 이를 적절히 관리하지 않으면 연결이 되었을 때 대기하는 npx wait-on 명령이 예상치 못한 종료를 유발할 수도 있습니다. 이 경우, 스크립트 실행 방식을 조정하여 배포 과정이 순차적으로 올바르게 진행될 수 있도록 해야 합니다.

현석오님의 프로필 이미지
현석오

작성한 질문수

질문하기