초보 질문이라 죄송합니다.
저는 GitHub 및 DevOps 환경을 처음 접했고 무언가를 자동화하는 임무를 맡았습니다. GitHub에서 아직 유지 관리 중이고 향후 새 버전을 받을 예정인 프로젝트를 찾았습니다.
내 특정 환경에 맞게 GitHub에서 최신 exe 버전을 다운로드해야 하는 파이프라인을 구축하고 싶습니다.
현재 /releases/vX.yz(여기서 X, y 및 z는 릴리스 버전) 아래의 git 저장소에 다음 이름을 가진 여러 패키지가 포함된 릴리스가 있습니다.
- package.v1.2.3.linux-amd64.tar.gz (https://github.com/some-example-repo/download/v1.2.3/package.v1.2.3-linux-arm64.tar.gz)
- package.v1.2.3.linux-arm64.tar.gz (https://github.com/some-example-repo/download/v1.2.3/package.v1.2.3-linux-arm64.tar.gz)
- package.v1.2.3.windows-amd64.zip(https://github.com/some-example-repo/download/v1.2.3/package.v1.2.3-windows-amd64.zip)
등.
버전이 시간에 따라 변경된다는 점을 고려하면 어떤 패턴을 사용하여 특정 패키지를 얻을 수 있는 방법이 있습니까?
다행히 링크는 다음과 같습니다.https://github.com/some-example-repo/releases/latest최신 릴리스 버전으로 리디렉션되므로 다음과 같은 생각이 듭니다.
wget https://github.com/some-example-repo/download/*????/package.V???*-linux-arm64.tar.gz
생각해보면, 이제 이것을 질문으로 게시했으니, wget이 URL을 자동 완성하는 것이 가능하지 않을 것 같습니다...
답변1
항상 최신 버전을 다운로드하고 싶다면 다음을 사용해야 합니다.이 목적을 위한 GitHub API:
curl https://api.github.com/repos/$USER/$REPO/releases/latest
그러면 모든 아티팩트를 포함하여 최신 버전을 설명하는 JSON 문서가 반환됩니다 jq
.예를 들어
| jq -r '.assets[].browser_download_url'
모든 리소스 다운로드 URL을 추출합니다.
그러나 실제로는 변경 사항이 변경되면 CI가 손상될 수 있으므로 항상 최신 버전을 다운로드하는 것은 일반적으로 좋지 않은 생각입니다. 특정 버전을 다운로드하고 필요한 경우 수동으로 업그레이드해야 합니다(새 버전을 자동으로 테스트하고 해당 PR을 제안할 수도 있음).