오픈 소스 프로젝트의 버그 수정 - telescope

5714 단어

기여자로서의 첫 걸음



오픈 소스 여정의 일환으로 이 프로젝트에 직접 기여하기 시작했기 때문에 오랜 시간이 걸렸습니다. 사실Hacktoberfest 2021이 계속 진행되고 있었고 믹스에 더 많은 영감을 더해 주었고 작업할 수 있는 문제를 둘러보기 시작했습니다.

오픈 소스 프로젝트에서 문제 찾기



사실 이게 생각보다 어려웠다. 출발점으로 저는 프로젝트를 처음 접하는 사람들을 대상으로 하는 문제에 집중하고 싶었기 때문에 good-first-issue 또는 hacktoberfest 레이블이 있는 문제에 집중했습니다. 거의 50k 개의 열린 문제가 발생했지만 많은 문제가 오래된 프로젝트에 있었고 새로 생성된 문제에는 이미 작업 중인 사람들이 있는 경우가 많았습니다.

내가 작업하기에 완벽한 문제를 찾기 위해 온/오프 며칠을 보낸 후, 나는 내 전략 자체에 본질적으로 결함이 있음을 깨달았습니다. 저는 신규 사용자를 대상으로 하는 인기 있는 오픈 소스 프로젝트에서 JavaScript/TypeScript를 기반으로 하는 것을 찾고 있었습니다. 이것은 특히 Hacktoberfest를 고려할 때 이러한 문제에 대한 경쟁이 치열하다는 것은 말할 것도 없고 제가 작업할 수 있는 문제를 크게 좁혔습니다.

변화가 필요하다는 것을 알았기 때문에 이상을 찾기를 멈추고 도전할 준비가 된 열린 마음으로 검색을 다시 시작했습니다. 이것은 내가 #2384 에서 telescope 을 우연히 발견했을 때입니다.

Telescope: 자동 배포 서버가 이전 빌드 정보를 기억하지 않음



이 문제는 autodeployment와 관련이 있었고 이것은 내가 익숙하지 않은 것이었습니다. 그러나 이 시점에서 나는 문제를 배우고 해결할 준비가 되었으며 작업하기로 결정했습니다. 문제에 대한 의견을 남겨 내 의도를 밝힌 후 문제를 탐색하기 시작했습니다.


/status 엔드포인트가 previous 빌드 정보를 표시하지 않고 대신 null을 반환했습니다. 버그는 파일에 대한 링크와 버그를 고칠 수 있는 가능한 솔루션과 함께 매우 잘 설명되어 있습니다. 저는 특히 코드의 이 부분을 살펴보고 있었습니다.

  build.proc = shell.exec(
    `./deploy.sh ${build.type} ${build.githubData.after}`,
    { silent: true },
    (code) => {
      build.finish(code);
      builds.current = builds.previous;
      builds.current = null;

      // See if there's another build ready to go
      run();
    }
  );


shelljs 과 함께 작업한 적이 없기 때문에 문서를 살펴보다가 exec()callback 에 대해 3개의 인수, 즉 code, stdout and stderr 를 허용한다는 것을 알았습니다. 그 약간의 지식을 얻은 나는 무슨 일이 일어나고 있는지 아이디어를 얻기 위해 파일로 돌아갔습니다.

문제는 다음 두 줄에 있었습니다.

builds.current = builds.previous;
builds.current = null;

builds.current에 즉시 null이 할당되어 이전 문이 중복되었습니다. 그러나 더 중요한 것은 이전 빌드 정보가 지속되지 않았기 때문에 null 엔드포인트에 /status 있었던 것입니다.
따라서,
나는 그것을 다음과 같이 바꿨다 :

builds.previous= builds.current ;
builds.current = null;


이제는 문제를 해결할 것이라고 확신했지만 아직 테스트하지 않았기 때문에 여전히 확신이 없었습니다. 이것은 자동 배포와 관련이 있기 때문에 이것이 로컬에서 테스트할 수 있는 것인지 실제로 확신할 수 없었기 때문에 관리자에게 조언을 요청했고 풀 요청을 열도록 제안되었습니다.

*풀 리퀘스트 링크: #2392

검토 단계를 거쳐 변경 사항을 처리한 후 마스터의 변경 사항을 병합하여 내 브랜치를 병합할 수 있습니다. 그러나 마스터에서 대신rebase 해야 한다는 지적이 있었습니다. 그래서 결국 커밋을 리베이스하고 스쿼시했습니다(로컬 브랜치가 처음으로 업스트림과 동기화되지 않았기 때문에 두 번!). 하지만 마침내 풀 리퀘스트가 수락되고 병합되었습니다!

오픈 소스 프로젝트에 대한 나의 첫 번째 공헌으로서 이것은 검색에서 시작하여 실제로 복잡한 프로젝트를 설정하고 이전에 한 번도 해본 적이 없는 작업에 이르기까지 확실히 험난한 여행이었습니다! 매우 흥미로운 과정이었고 특히 큰 변화는 아니더라도 제 기여가 실질적인 변화를 가져오는 것을 보았을 때 더욱 그러했습니다. 버그 수정 후 /status 엔드포인트가 previous 빌드 정보를 올바르게 표시했습니다.

좋은 웹페이지 즐겨찾기