원격 디버깅 Github 작업 워크플로

4153 단어 devopsgithubtutorial
내 github 리포지토리 중 하나에 대한 새 배포 워크플로를 설정하는 중이었습니다. github 작업 워크플로우 파일(.github/workflow/deployment.yml)에 추가한 모든 스크립트를 로컬에서 테스트했으며 다행히도 모든 스크립트가 예상대로 작동했습니다. 그 긍정적인 측면에서 저는 새 워크플로 파일을 푸시하고 Github 작업의 작은 노란색 점이 녹색으로 바뀌는 것을 간절히 기다리고 있었습니다.



음, 녹색으로 바뀌었지만 배포된 아티팩트의 유효성을 검사한 후 무언가 잘못되었음을 깨달았습니다. (첫 번째 시도에서 일이 예상대로 진행된다면 개발자로서의 우리 직업은 지금 그다지 흥미롭지 않을 것입니다. 그렇죠?)

문제는 일부 필수 자산을 배포된 번들에 포함하기 위해 워크플로가 누락되었다는 것입니다. 문제 없이 로컬에서 작동하는 동일한 스크립트가 파이프라인에서 오작동하고 있었고 한 시간 동안 yaml 파일을 한 줄씩 면밀히 조사했는데 워크플로가 의도한 것에서 벗어나는 것을 볼 수 없었습니다. 그래서 어떻게든 내 설정이 github에서 내 작업 흐름을 실행하는 데 사용하는 작업자와 호환되지 않는다는 결론에 도달했습니다.

버그 문제를 더 쉽게 해결할 수 있도록 워크플로를 실행 중인 작업자에 직접 들어갈 수 있는 옵션을 찾고 있었습니다. 나는 똑같은 작업을 수행하는 도구를 찾고 있었고 매우 짧은 시간의 연구 끝에 완벽하게 적합한 도구를 찾았습니다.

작업: https://github.com/csexton/debugger-action

TL;DR
The above action can be included to the workflow yaml file and it will keep the job hanging from the stage where the action was referred. It will print the SSH details to the console which can be used to remotely login to the github worker that is running the workflow



어떻게 설정하나요?

이 작업을 설정하는 것은 매우 간단합니다. 워크플로 yaml 파일에 다음 코드를 추가하기만 하면 이 작업이 해당 단계부터 작업을 차단합니다.

- name: Setup Debug Session
  uses: csexton/debugger-action@master


다음은 전체 설정이 포함된 샘플 워크플로 파일입니다.

name: New Pipeline

on:
  push:
    branches: [ main ]

  pull_request:
    branches: [ main ]

jobs:
  debug-workflow:
    name: Job to debug the workflow
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Setup Debug Session
        uses: csexton/debugger-action@master


작업이 차단되면 해당 단계의 세부 정보를 확장하면 SSH를 사용하여 작업자에게 원격으로 로그인하기 위한 세부 정보를 얻을 수 있습니다.



SSH를 사용하여 원격 호스트에 로그인할 수 있는 작업 터미널이 있는 경우 실행ssh [email protected]만 하면 작업자로 바로 연결됩니다. 기본 세션 시간 초과는 15분으로 설정되어 있으며 이를 연장하려면 명령touch /tmp/keepalive을 실행하면 됩니다.



github 작업 작업자의 원격 세션


SSH 세션에서 원격 세션과 호스트에 대한 명령을 알고 있으면 문제를 쉽게 해결할 수 있습니다.

필자의 경우 문제는 작업자 내에서 수동으로 명령을 실행하려고 시도한 후 발견한 작업 디렉토리에 상대적인 경로가 잘못 구성되었기 때문입니다.

결론

이것은 새로운 github 작업 워크플로를 설정할 때와 내부가 제대로 설정되고 있는지 확인하려는 경우에 유용한 설정하기 쉬운 작업입니다(배포 당일 놀라움의 여지를 남겨두지 말자).

좋은 웹페이지 즐겨찾기