일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 맥북파이썬여러버전
- 파이썬버전여러개
- {'error': {'errorcode': '200'
- 파이썬 경로 수정
- 오블완
- fcm multicast
- ncp 401 authentication failed
- vscode시계아이콘
- codepipeline 오류
- vscode무한로딩
- fcm push
- 'message': 'authentication failed'
- codebuild cliend_error
- command did not exit successfully docker-compose -f docker-compose.yml build exit status 1
- 파이썬 설치경로 변경
- 'details': 'invalid authentication information.'}}
- vscode 소스제어
- 네이버클라우드 authentication failed
- ncp api 응답오류
- 티스토리챌린지
- fcm 멀티푸시
- route53 서브도메인
- 파이썬여러버전변경
- 파이썬버전변경
- rds 파라미터그룹
- rds utf8mb4 변경
- vscode소스제어 무한로딩
- codebuild no matching artifact paths found
- ncp authentication failed
- rds character_set 변경
- Today
- Total
All that I've dreamed of
[Github Actions] tmate 로 디버깅 / 접속 오류해결 본문
Github Actions 를 실행하다보면 절대 오류 한번없이 무사히 넘어가는 법이 없어여..😗
로컬이나 도커컨테이너처럼 직접 디버깅을 할 수 없어
출력되는 오류메시지만 확인하고 수정하고 다시 푸시하고
한참 기다리고 성공할 때까지 반복했어요 😒
tmate 는 직접 github actions 시스템에 접속해서 디버깅을 할 수 있게 해주는 라이브러리입니다!
사용법도 아주 간단쓰
일단 저는 django 프로젝트를 github에 push 하면
github actions 가 실행되도록 스크립트를 만들어 주었어요
.github/workflows/ci.yml
name: Django CI
on:
push:
jobs:
ci:
runs-on: ubuntu-latest
steps:
- name: Check out the codes
uses: actions/checkout@v3
- name: Setup python environment
id: setup-python
uses: actions/setup-python@v3
with:
python-version: 3.11
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python3 -
echo "${HOME}/.local/bin" >> $GITHUB_PATH
- name: Install dependencies
run: |
${HOME}/.local/bin/poetry install
- name: Test python project
run: |
poetry run python manage.py test
그리고 발생한 데이터베이스 오류
File "/home/runner/.cache/pypoetry/virtualenvs/django-advanced-CWbF5W-7-py3.11/lib/python3.11/site-packages/pymysql/connections.py", line 358, in __init__
self.connect()
File "/home/runner/.cache/pypoetry/virtualenvs/django-advanced-CWbF5W-7-py3.11/lib/python3.11/site-packages/pymysql/connections.py", line 711, in connect
raise exc
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")
데이터베이스가 없어서 오류가 나는 듯 싶네요. (당연ㅎ)
자 그러면 tmate로 직접 디버깅을 해보자구요
tmate
Debugging with tmate - GitHub Marketplace
Debug your GitHub Actions Environment interactively by using SSH or a Web shell
github.com
tmate docs
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
사용법은 아주 간단하게 yml 파일 안에 uses: mxschmitt/action-tmate@v3 만 추가해 주면 된대요!
전 Test python project 스텝에서 오류가 발생했으니 그 위에 tmate를 추가해 줬어요
수정된 ci.yml
name: Django CI
on:
push:
jobs:
ci:
runs-on: ubuntu-latest
steps:
- name: Check out the codes
uses: actions/checkout@v3
- name: Setup python environment
id: setup-python
uses: actions/setup-python@v3
with:
python-version: 3.11
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python3 -
echo "${HOME}/.local/bin" >> $GITHUB_PATH
- name: Install dependencies
run: |
${HOME}/.local/bin/poetry install
- name: tmate 세션
uses: mxschmitt/action-tmate@v3
- name: Test python project
run: |
poetry run python manage.py test
이렇게 다시 한번 github actions를 실행하면 tmate 스텝에서 무한루프가 돌게 되는데
SSH: ssh KbAcPqU7tUFhq8dPtUFhq8dP@sfo2.tmate.io
or: ssh -i <path-to-private-SSH-key> KbAcPqU7tUFhq8dPtUFhq8dP@sfo2.tmate.io
SSH: ssh KbAcPqU7tUFhq8dPYtUFhq8dP@sfo2.tmate.io
or: ssh -i <path-to-private-SSH-key> KbAcPqU7tUFhq8dPtUFhq8dP@sfo2.tmate.io
이런식으로 시스템에 접속할 수 있는 주소가 무한반복으로 출력돼요
그러면 ssh ~~.tmate.io 이 부분을 복사해서
터미널에 붙여 넣어줄게요
그런데...?
역시나 한 번에 또 성공할리가요
계속해서 아래와 같이 권한이 없다고 나오는 게 아니겠어요?
KbAcPqU7tUFhq8dPtUFhq8dP@sfo2.tmate.io: Permission denied (publickey).
왠지 ssh key 를 이용해 ssh -i <path-to-private-SSH-key> KbAcPqU7tUFhq8dPtUFhq8dP@sfo2.tmate.io
이 주소로 접속하면 될 것 같은 기분 ..🤔?
* 맥 사용자입니다
cd ~/.ssh
.ssh 폴더로 이동하면 id_rsa (개인키)와 id_rsa.pub (공개키)가 있을 거에요
없으면 ssh-keygen 입력해서 만들어 주면 됩니다
ssh -i id_rsa.pub KbAcPqU7tUFhq8dPtUFhq8dP@sfo2.tmate.io 로 실행을 해봤어요
물론 github 에 ssh 키도 등록해 주었죠...
그래도 안돼요 ㅠㅠ
chmod 777로 공개키에 권한도 줘봤지만 안돼요...
이럴 땐 공식문서를 다시 쭉 읽어 봅니다 흑흑
오 ssh 키 관련 부분이 있네요!

그리고 조금전 실행했던 github actions 로그들을 보니

limit-access-to-actor 부분이 auto 로 되어있네요?
limit-access-to-actor: true 로 하면 ssh 키로 시스템에 접속하게 해준다
-> 내 로그를 보니 limit-access-to-actor가 auto 로 되어있다
-> ssh 주소로 접속하려고 하면 ssh 권한 오류가 발생한다
-> limit-access-to-actor 를 false로 바꿔주면 ssh 없이 접속할 수 있지 않을까?
해서...
ci.yml 의 tmate 스텝 부분을 아래와 같이 변경해 주었습니다
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
with:
limit-access-to-actor: false
그리고 다시한번 실행!

아까와는 접속주소가 다르게 나오네요?
ssh 키를 이용한 접속이 아닌 web 접속과 터미널 접속 두가지 방법이 나와요
그런데 web 접속은... 오류가 많아요 😡
터미널에서 ssh gp872qcbp~~~@sfo2.tmate.io 를 복붙 후 실행해 줍니다!
그러면 오예! 실행이 됩니다
저는 데이터베이스가 없어서 오류가 발생했던 것이기 때문에
mysql 실행 후 데이터베이스 생성해 주고 설정도 settings.py 에 맞게 변경해 주었더니
무사히 잘 동작했어요!
일단 tmate 는 무한루프가 돌고 있는 동안에만 시스템에 접속이 가능하기 때문에
디버깅을 마쳤다면 cancel workflow 를 해주시고
다시 github actions 를 실행할 땐 tmate 스텝 부분은 지우거나 주석처리 해주시면 됩니당!
'ETC' 카테고리의 다른 글
파이썬 경로 설정 / 파이썬 여러 버전 설치 / 파이썬 버전 변경 (0) | 2024.09.04 |
---|---|
[AWS] awscli 명령어 AttributeError: module 'lib' has no attribute 'X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT' 오류 (0) | 2024.01.02 |
[AWS] Codepipeline에 AWS chatbot 알림 추가하기 (0) | 2023.11.13 |
[Docker] toomanyrequests pull rate limit 해결 / 아마존 ECR 이미지 사용하기 (0) | 2023.11.09 |
[RDS] 스냅샷 삭제 / 스냅샷을 삭제할 수 없음 해결 (1) | 2023.11.08 |