[gem편] GitHub Package Registry(beta) 사용

5457 단어 GitHubRubyrubygems
베타가 방문한 invitation을 받았기 때문에 테스트를 해 보세요.

GitHub Package Registry


GitHub 패키지 레지스트리는 패키지 관리 서비스, npmjs입니다.org、rubygems.org、hub.docker.com과 유사합니다. 패키지와 코드를 한 곳에서 위탁 관리할 수 있습니다.소프트웨어 패키지는 개인적일 수도 있고 공적일 수도 있으며 프로젝트에서 의존 관계로 사용할 수 있다.

해당 패키지 클라이언트


*2019년 7월 5일
패키지 클라이언트
패키지 형식
npm (Node)
package.json
gem (Ruby)
Gemfile
mvn (Java)
pom.xml
docker
container
nuget (.NET)
nupkg

GitHub Package Registry에 gem 패키지 게시


GitHub 구성


인원accesstoken에 권한 추가


GitHub Package Registry를 사용하려면 personal access tokenread:packageswrite:packages에 새 scope를 추가해야 합니다.
https://github.com/settings/tokens에서 이 token을 선택하고 다음 내용을 선택하십시오.
* 패키지의 발표 위치가 private repo일 경우 다음 내용 외에 repo의scope가 필요합니다.

gem&bundle 설정


여러 token을 관리하기 위해 설치keycutter.
$ gem install keycutter
방금 scope 설정을 변경한personal access token을 ~/.gem/credentials 로 설정합니다.
---
:github: Bearer ${TOKEN}
bundler를 설정합니다.OWNER는 GitHub 사용자 또는 조직 계정의 이름입니다. 이 사용자는 발표할 gm 패키지의 리포지토리를 실제로 보존합니다.GitHub의 username, personal access token을 계속 입력합니다.
$ bundle config https://rubygems.pkg.github.com/OWNER(or ORG) USERNAME:TOKEN

패키지 게시


주의사항


게시된 패키지를 삭제할 수 없습니다.


현재 GitHub Package Registry에서는 게시된 packge를 삭제할 수 없습니다.
게시된 특정 버전을 삭제하는 것도 지원되지 않습니다.젬 포장만?이렇게 생각하고 다른 포장의 경우에도 확인했지만 문서에서는 대응하지 않는 같은 문장을 모두 삭제했다.
패키지에 의존할 수 있는 항목을 파괴하지 않기 위해 GitHub 패키지 레지스트리는 패키지 삭제 또는 삭제 버전을 지원하지 않습니다.법적 이유 또는 GDPR 기준과 같은 특수한 경우에는 GitHub 지원을 통해 패키지를 삭제할 수 있습니다.연락처 양식을 사용하여 GitHub 패키지 레지스트리의 제목 행으로 GitHub 지원에 연결합니다.

패키지 과정 목표 보고기


기본적으로 GitHub Package Registry는 패키지를gem의 packagename=GitHub repository name로 공개합니다.즉,gemspec 파일에 다음과 같은 설정이 있으면 패키지는push에서 https://github.com/USER(or ORG)/mygem 로 이동합니다.
Gem::Specification.new do |s|
  s.name        = 'mygem'
  ...
음, 이름이 일치하지 않는 경우push 목적지의repository를 다음과 같이 지정할 수 있습니다.
또한 아래 설정을 사용하면 단일한 리포지토리에 이름이 다른 여러 개의gem 패키지를 공개할 수 있습니다.
Gem::Specification.new do |s|
  s.name        = 'mygem'
  ...
  s.metadata = { "github_repo" => "ssh://github.com/USER(or ORG)/reponame" }

push 동작


repository Releases 페이지에서push 패키지를 볼 수 있습니다.
이전ReleaseTags 외에 여기Packages도 있다.

버전 작업


아무것도 원하지 않는다면gem push 기본값은gemspec의version 정보를 바탕으로push 이전의repository에 이version의release/tag가 존재하지 않으면 자동으로 tag를 차단하고 이version으로release를 만듭니다.
이때release의 description은gemspec의 description에 직접 적용되는 것 같습니다.

push 이전의repository에 이 버전의release/tag가 존재하면 상기 이미지와 같이 패키지를 이 Release와 자동으로 연결합니다.

gem push

$ gem push --key github --host https://rubygems.pkg.github.com/USER(or ORG) mygem.gem
Pushing gem to https://rubygems.pkg.github.com/xxxx...
Successfully registered gem: mygem (x.x.x)
push가 발표된 버전을 다시 시도하는 중 오류가 발생했습니다.
$ gem push --key github --host https://rubygems.pkg.github.com/USER(or ORG) mygem.gem
Pushing gem to https://rubygems.pkg.github.com/xxxx...
Error: Version x.x.x of "mygem" has already been pushed.

GitHub Package Registry에서 gem 설치


문서에서 Gemfile 에 새 source "https://rubygems.pkg.github.com/USER(or ORG)" 를 추가하는 예가 공개되었습니다.
https://help.github.com/en/articles/configuring-rubygems-for-use-with-github-package-registry#installing-a-package gem install--source 옵션도 가능합니까, 검증되지 않았습니다.

좋은 웹페이지 즐겨찾기