GitHub Actions를 사용하여 Launchpad에 연결하는 방법
우리의 메인 리포지토리는 GitHub 에서 호스팅되지만
yaru-theme
패키지를 처리하는 Launchpad 페이지도 있습니다.TLDR
Whiththis python script 및 GitHub 작업을 통해 한 버그 추적 시스템에서 다른 버그 추적 시스템으로 버그를 미러링했습니다.
전체 이야기
문제, 요구, 아이디어를 보고하는 데 시간을 할애하는 사용자에게 얼마나 감사한지 이루 말할 수 없지만 실제로 Launchpad에 대한 응답은 지금까지 최고가 아니었으며 이러한 보고서를 처리한 Ubuntu Desktop 팀에 감사드립니다. .
몇 주 전에 GitHub 리포지토리에서 Launchpad 버그를 자동으로 미러링하는 것이 해결책이 될 수 있다고 생각했고 CI로 이를 처리하기로 결정했습니다.
이상적으로 우리의 솔루션에는 다음이 포함됩니다.
문제, 요구, 아이디어를 보고하는 데 시간을 할애하는 사용자에게 얼마나 감사한지 이루 말할 수 없지만 실제로 Launchpad에 대한 응답은 지금까지 최고가 아니었으며 이러한 보고서를 처리한 Ubuntu Desktop 팀에 감사드립니다. .
몇 주 전에 GitHub 리포지토리에서 Launchpad 버그를 자동으로 미러링하는 것이 해결책이 될 수 있다고 생각했고 CI로 이를 처리하기로 결정했습니다.
이상적으로 우리의 솔루션에는 다음이 포함됩니다.
업스트림을 추적할 몇 가지 GitHub 작업이 이미 있습니다. 주기적으로 실행되고 우리가 처리할 새로운 콘텐츠가 있을 때 PR을 생성하도록 구성됩니다. 이 구성은 첫 번째 점에서 유망해 보였습니다.
launchpad는 서버와 상호 작용할 수 있는 멋진 Python 라이브러리인 Launchpadlib을 제공합니다.
launchpadlib is an open-source Python library that lets you treat the HTTP resources published by Launchpad's web service as Python objects responding to a standard set of commands. With launchpadlib you can integrate your applications into Launchpad without knowing a lot about HTTP client programming.
이 라이브러리를 가지고 노는 것은 꽤 재미있었고 그것을 배우는 가장 좋은 방법은 listed examples 을 통해서였습니다. 예를 들어, Bughugger 주어진 응용 프로그램의 버그 목록을 가져오는 방법을 알려준 것에 감사드립니다.
import os
from launchpadlib.launchpad import Launchpad
HOME = os.path.expanduser("~")
CACHEDIR = os.path.join(HOME, ".launchpadlib", "cache")
lp = Launchpad.login_anonymously(
"Yaru LP bug checker", "production", CACHEDIR, version="devel"
)
ubuntu = lp.distributions["ubuntu"]
archive = ubuntu.main_archive
packages = archive.getPublishedSources(source_name="yaru")
package = ubuntu.getSourcePackage(name=packages[0].source_package_name)
bug_tasks = package.searchTasks()
for task in bug_tasks:
print(task)
그런 다음 작업에서 세 개의 필드를 추출합니다.
task.id
task.title
"https://bugs.launchpad.net/ubuntu/+source/yaru-theme/+bug/" + str(task.id)
세 번째 요점은 실제로 두 가지 다른 단계로 구성됩니다.
두 점 모두 HUB 을 사용하여 해결되었습니다.
hub is a command line tool that wraps git in order to extend it with extra features and commands that make working with GitHub easier.
GitHub는 매일 사용하는 자체 CLI tool를 제공하지만 HUB를 사용하게 된 점은 다음과 같습니다.
hub can also be used to make shell scripts that directly interact with the GitHub API.
문제 만들기
마지막 단계부터 시작하겠습니다. HUB로 문제를 만드는 것은 간단합니다.
hub issue create -m <title> -m <message> -l Launchpad
여기에서
-m
플래그를 두 번 사용하여 제목을 설정했습니다.LP#[ID] [TITLE]
문제의 본문:
Reported first on Launchpad at https://bugs.launchpad.net/ubuntu/+source/yaru-theme/+bug/[ID]
그런 다음 버그 관리를 더 쉽게 해주는 Launchpad 레이블(
-l
)을 추가했으며 다음 단계에 매우 유용했습니다.새로운 버그만 생성
HUB는 저장소의 모든 버그를 나열할 수 있지만 - 작성 당시 Yaru에는 1,000개 이상의 버그가 있습니다(44개만 열려 있음 😀). 그런 다음 모든 버그를 한 번에 가져오려면 시간이 걸립니다. 다행히도 HUB는 레이블로 필터링할 수 있습니다!
hub issue --state all --label Launchpad
출력을 구문 분석하는 것은 Python으로 쉽습니다. 나머지는 모두 합치기 위한 약간의 접착제 논리입니다.
결과
나는 최종 결과에 만족한다. 이제 사용자 기반 요청에 더 잘 응답할 수 있으며 python script 작성하는 것이 즐거웠고 GitHub Action에 대해 새로운 것을 배웠습니다.
Reference
이 문제에 관하여(GitHub Actions를 사용하여 Launchpad에 연결하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/clobrano/how-to-use-github-actions-to-connect-with-launchpad-3320
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(GitHub Actions를 사용하여 Launchpad에 연결하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/clobrano/how-to-use-github-actions-to-connect-with-launchpad-3320텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)