<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=GitHub_-_Packages</id>
	<title>GitHub - Packages - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=GitHub_-_Packages"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=GitHub_-_Packages&amp;action=history"/>
	<updated>2026-05-28T12:05:44Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=GitHub_-_Packages&amp;diff=14580&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == GitHub Packagesは、GitHubが提供するソフトウェアパッケージホスティングサービスである。&lt;br&gt; ソースコードと同じリポジトリでパッケージを管理・公開・インストールできる。&lt;br&gt; &lt;br&gt; GitHub Packagesが対応しているレジストリは以下の通りである。&lt;br&gt; &lt;br&gt; &lt;center&gt; {| class=&quot;wikitable&quot; |+ GitHub Packagesの対応レジストリ一覧 |- ! レジストリ !! 説明 |- | Containe…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=GitHub_-_Packages&amp;diff=14580&amp;oldid=prev"/>
		<updated>2026-03-23T21:46:46Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == GitHub Packagesは、GitHubが提供するソフトウェアパッケージホスティングサービスである。&amp;lt;br&amp;gt; ソースコードと同じリポジトリでパッケージを管理・公開・インストールできる。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; GitHub Packagesが対応しているレジストリは以下の通りである。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &amp;lt;center&amp;gt; {| class=&amp;quot;wikitable&amp;quot; |+ GitHub Packagesの対応レジストリ一覧 |- ! レジストリ !! 説明 |- | Containe…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
GitHub Packagesは、GitHubが提供するソフトウェアパッケージホスティングサービスである。&amp;lt;br&amp;gt;&lt;br /&gt;
ソースコードと同じリポジトリでパッケージを管理・公開・インストールできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
GitHub Packagesが対応しているレジストリは以下の通りである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ GitHub Packagesの対応レジストリ一覧&lt;br /&gt;
|-&lt;br /&gt;
! レジストリ !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| Container Registry(ghcr.io) || Dockerコンテナイメージ および OCIイメージをホスティングする。&lt;br /&gt;
|-&lt;br /&gt;
| npm || JavaScriptパッケージをホスティングする。&lt;br /&gt;
|-&lt;br /&gt;
| Maven / Gradle || Javaパッケージをホスティングする。&lt;br /&gt;
|-&lt;br /&gt;
| NuGet || .NETパッケージをホスティングする。&lt;br /&gt;
|-&lt;br /&gt;
| RubyGems || Rubyパッケージをホスティングする。&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
GitHub Packagesを利用するメリットを以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ソースコードとパッケージを同一リポジトリで管理できる。&lt;br /&gt;
* GitHubのアクセス制御と統合されており、チームの権限管理が一元化できる。&lt;br /&gt;
* GitHub Actionsとの連携により、CI/CDパイプラインにパッケージ公開を組み込める。&lt;br /&gt;
* プライベートパッケージをリポジトリのアクセス権限に基づいて保護できる。&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Container Registry (ghcr.io) ==&lt;br /&gt;
ghcr.ioはGitHubが提供するコンテナレジストリであり、DockerイメージおよびOCIイメージの管理に使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 認証 ====&lt;br /&gt;
ghcr.ioへの認証には個人アクセストークン (Personal Access Token) を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下表に、必要なスコープを示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ パーソナルアクセストークンのスコープ一覧&lt;br /&gt;
|-&lt;br /&gt;
! スコープ !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;read:packages&amp;lt;/code&amp;gt; || パッケージのダウンロードとメタデータの読み取りに必要なスコープ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;write:packages&amp;lt;/code&amp;gt; || パッケージのアップロードと公開に必要なスコープ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;delete:packages&amp;lt;/code&amp;gt; || パッケージの削除に必要なスコープ&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
個人アクセストークンは、GitHubの[Settings] - [Developer settings] - [Personal access tokens]から作成できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Dockerログイン ====&lt;br /&gt;
ghcr.ioにログインする。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 echo $CR_PAT | docker login ghcr.io -u &amp;lt;ユーザ名&amp;gt; --password-stdin&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;CR_PAT&amp;lt;/code&amp;gt; には個人アクセストークン、&amp;lt;code&amp;gt;&amp;lt;ユーザ名&amp;gt;&amp;lt;/code&amp;gt; にはGitHubのユーザ名を指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
パスワードを標準入力から渡すことにより、コマンド履歴にトークンが残らないようにする。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== イメージのプッシュとプル ====&lt;br /&gt;
ビルド済みのイメージにghcr.ioのタグを付けてプッシュする手順を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 # イメージにタグを付ける&lt;br /&gt;
 docker tag &amp;lt;イメージ名&amp;gt; ghcr.io/NAMESPACE/&amp;lt;イメージ名&amp;gt;:TAG&lt;br /&gt;
 &lt;br /&gt;
 # イメージをプッシュする&lt;br /&gt;
 docker push ghcr.io/NAMESPACE/&amp;lt;イメージ名&amp;gt;:TAG&lt;br /&gt;
 &lt;br /&gt;
 # イメージをプルする&lt;br /&gt;
 docker pull ghcr.io/NAMESPACE/&amp;lt;イメージ名&amp;gt;:TAG&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;NAMESPACE&amp;lt;/code&amp;gt; にはGitHubのユーザ名 または Organization名を指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;TAG&amp;lt;/code&amp;gt; には &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; や バージョン番号を指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
レイヤーの最大サイズは10[GB]、タイムアウトは10分である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== リポジトリの関連付け ====&lt;br /&gt;
コンテナイメージを特定のGitHubリポジトリに関連付けるには、Dockerfile内に以下のラベルを追加する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 LABEL org.opencontainers.image.source=https://github.com/OWNER/REPO&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
このラベルを追加すると、ghcr.io上のパッケージページから対象リポジトリへのリンクが表示される。&amp;lt;br&amp;gt;&lt;br /&gt;
また、リポジトリの可視性設定がパッケージに継承される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 可視性設定 ====&lt;br /&gt;
コンテナイメージの可視性は、GitHubのPackage settingsから設定できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ パッケージの公開範囲一覧&lt;br /&gt;
|-&lt;br /&gt;
! 公開範囲 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| Public || 誰でもプルできる状態&lt;br /&gt;
|-&lt;br /&gt;
| Private || アクセス権限を持つユーザのみプルできる状態&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
可視性をPublicからPrivateに変更することは、不可逆な操作であることに注意する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== npm レジストリ ==&lt;br /&gt;
GitHub Packagesのnpmレジストリを使用すると、スコープ付きnpmパッケージを公開・インストールできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 認証と.npmrc設定 ====&lt;br /&gt;
npmレジストリへの認証には、&amp;lt;u&amp;gt;.npmrc&amp;lt;/u&amp;gt; ファイルを使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
プロジェクトルートに &amp;lt;u&amp;gt;.npmrc&amp;lt;/u&amp;gt; ファイルを作成して、以下に示す内容を記述する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 @NAMESPACE:registry=https://npm.pkg.github.com&lt;br /&gt;
 //npm.pkg.github.com/:_authToken=TOKEN&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;NAMESPACE&amp;lt;/code&amp;gt; にはGitHubのユーザ名 または Organization名を指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt; には &amp;lt;code&amp;gt;read:packages&amp;lt;/code&amp;gt; スコープを持つ個人アクセストークンを指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== パッケージの公開 ====&lt;br /&gt;
GitHub Packagesのnpmレジストリでは、スコープ付きパッケージ名が必須である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;package.json&amp;lt;/u&amp;gt; ファイル内の &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; フィールドを以下に示すように設定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;@NAMESPACE/PACKAGE-NAME&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;1.0.0&amp;quot;,&lt;br /&gt;
    &amp;quot;publishConfig&amp;quot;: {&lt;br /&gt;
       &amp;quot;registry&amp;quot;: &amp;quot;https://npm.pkg.github.com&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
設定後、コマンドでパッケージを公開する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 npm publish&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== パッケージのインストール ====&lt;br /&gt;
&amp;lt;u&amp;gt;.npmrc&amp;lt;/u&amp;gt; ファイルにレジストリ設定を追加した後、以下のコマンドでパッケージをインストールする。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 npm install @NAMESPACE/PACKAGE-NAME&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maven レジストリ ==&lt;br /&gt;
GitHub PackagesのMavenレジストリを使用すると、JavaのMavenパッケージを公開・インストールできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 認証設定 ====&lt;br /&gt;
Mavenの認証情報は &amp;lt;u&amp;gt;~/.m2/settings.xml&amp;lt;/u&amp;gt; ファイルに設定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;settings xmlns=&amp;quot;http://maven.apache.org/SETTINGS/1.0.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;servers&amp;gt;&lt;br /&gt;
       &amp;lt;server&amp;gt;&lt;br /&gt;
          &amp;lt;id&amp;gt;github&amp;lt;/id&amp;gt;&lt;br /&gt;
          &amp;lt;username&amp;gt;USERNAME&amp;lt;/username&amp;gt;&lt;br /&gt;
          &amp;lt;password&amp;gt;TOKEN&amp;lt;/password&amp;gt;&lt;br /&gt;
       &amp;lt;/server&amp;gt;&lt;br /&gt;
    &amp;lt;/servers&amp;gt;&lt;br /&gt;
 &amp;lt;/settings&amp;gt;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt; には GitHubのユーザ名、&amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt; には &amp;lt;code&amp;gt;read:packages&amp;lt;/code&amp;gt; または &amp;lt;code&amp;gt;write:packages&amp;lt;/code&amp;gt; スコープを持つ個人アクセストークンを指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== パッケージの公開 ====&lt;br /&gt;
&amp;lt;u&amp;gt;pom.xml&amp;lt;/u&amp;gt; ファイルの &amp;lt;code&amp;gt;distributionManagement&amp;lt;/code&amp;gt; セクションにリポジトリURLを設定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;distributionManagement&amp;gt;&lt;br /&gt;
    &amp;lt;repository&amp;gt;&lt;br /&gt;
       &amp;lt;id&amp;gt;github&amp;lt;/id&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;GitHub OWNER Apache Maven Packages&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;url&amp;gt;https://maven.pkg.github.com/OWNER/REPO&amp;lt;/url&amp;gt;&lt;br /&gt;
    &amp;lt;/repository&amp;gt;&lt;br /&gt;
 &amp;lt;/distributionManagement&amp;gt;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
設定後、パッケージをデプロイするため、以下に示すコマンドを実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 mvn deploy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;アーティファクトIDは、小文字のみが使用できることに注意する。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== Gradleでの使用 ====&lt;br /&gt;
Gradleを使用する場合は、&amp;lt;u&amp;gt;build.gradle&amp;lt;/u&amp;gt; ファイルにリポジトリと認証情報を設定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;groovy&amp;quot;&amp;gt;&lt;br /&gt;
 repositories {&lt;br /&gt;
    maven {&lt;br /&gt;
       url = uri(&amp;quot;https://maven.pkg.github.com/OWNER/REPO&amp;quot;)&lt;br /&gt;
       credentials {&lt;br /&gt;
          username = project.findProperty(&amp;quot;gpr.user&amp;quot;) ?: System.getenv(&amp;quot;USERNAME&amp;quot;)&lt;br /&gt;
          password = project.findProperty(&amp;quot;gpr.key&amp;quot;) ?: System.getenv(&amp;quot;TOKEN&amp;quot;)&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NuGetレジストリ ==&lt;br /&gt;
GitHub PackagesのNuGetレジストリを使用すると、.NETのNuGetパッケージを公開・インストールできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== パッケージの公開 ====&lt;br /&gt;
NuGetパッケージを公開するため、以下に示すコマンドを実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 dotnet nuget push PACKAGE_NAME.nupkg \&lt;br /&gt;
    --api-key &amp;lt;TOKEN&amp;gt; \&lt;br /&gt;
    --source &amp;quot;https://nuget.pkg.github.com/OWNER/index.json&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt; には &amp;lt;code&amp;gt;write:packages&amp;lt;/code&amp;gt; スコープを持つ個人アクセストークンを指定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== パッケージのインストール ====&lt;br /&gt;
&amp;lt;u&amp;gt;nuget.config&amp;lt;/u&amp;gt; ファイルにGitHub Packagesのソースを追加する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;configuration&amp;gt;&lt;br /&gt;
    &amp;lt;packageSources&amp;gt;&lt;br /&gt;
       &amp;lt;add key=&amp;quot;github&amp;quot; value=&amp;quot;https://nuget.pkg.github.com/OWNER/index.json&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/packageSources&amp;gt;&lt;br /&gt;
    &amp;lt;packageSourceCredentials&amp;gt;&lt;br /&gt;
       &amp;lt;github&amp;gt;&lt;br /&gt;
          &amp;lt;add key=&amp;quot;Username&amp;quot; value=&amp;quot;USERNAME&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;add key=&amp;quot;ClearTextPassword&amp;quot; value=&amp;quot;TOKEN&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/github&amp;gt;&lt;br /&gt;
    &amp;lt;/packageSourceCredentials&amp;gt;&lt;br /&gt;
 &amp;lt;/configuration&amp;gt;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
設定後、dotnetコマンドでパッケージをインストールできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 dotnet add package &amp;lt;パッケージ名&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RubyGemsレジストリ ==&lt;br /&gt;
GitHub PackagesのRubyGemsレジストリを使用すると、RubyのGemパッケージを公開・インストールできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== パッケージの公開 ====&lt;br /&gt;
まず &amp;lt;u&amp;gt;~/.gem/credentials&amp;lt;/u&amp;gt; ファイルに認証情報を設定する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
 :github: Bearer TOKEN&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
次に、Gemをビルドして公開するため、以下に示すコマンドを実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 # Gemのビルド&lt;br /&gt;
 gem build PACKAGE_NAME.gemspec&lt;br /&gt;
 &lt;br /&gt;
 # GitHub Packagesへのプッシュ&lt;br /&gt;
 gem push --key github \&lt;br /&gt;
    --host https://rubygems.pkg.github.com/NAMESPACE \&lt;br /&gt;
    PACKAGE_NAME-VERSION.gem&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== パッケージのインストール ====&lt;br /&gt;
Bundlerを使用してインストールする場合は、&amp;lt;u&amp;gt;Gemfile&amp;lt;/u&amp;gt; ファイルに以下の設定を追加する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
 source &amp;quot;https://rubygems.pkg.github.com/NAMESPACE&amp;quot; do&lt;br /&gt;
    gem &amp;quot;PACKAGE_NAME&amp;quot;&lt;br /&gt;
 end&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
設定後、以下に示すコマンドを実行して、インストールする。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 bundle install&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GitHub Actionsとの連携 ==&lt;br /&gt;
GitHub ActionsからGitHub Packagesへのアクセスには &amp;lt;code&amp;gt;GITHUB_TOKEN&amp;lt;/code&amp;gt; を使用できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;GITHUB_TOKEN&amp;lt;/code&amp;gt; を使用することにより、個人アクセストークンを別途作成せずにパッケージを公開できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Dockerイメージの自動公開 ====&lt;br /&gt;
Dockerイメージを自動的にghcr.ioに公開するワークフローの例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
 name: Publish Docker Image&lt;br /&gt;
 &lt;br /&gt;
 on:&lt;br /&gt;
    push:&lt;br /&gt;
       branches:&lt;br /&gt;
          - main&lt;br /&gt;
 &lt;br /&gt;
 jobs:&lt;br /&gt;
    publish:&lt;br /&gt;
       runs-on: ubuntu-latest&lt;br /&gt;
       permissions:&lt;br /&gt;
          contents: read&lt;br /&gt;
          packages: write&lt;br /&gt;
 &lt;br /&gt;
       steps:&lt;br /&gt;
          - name: Checkout repository&lt;br /&gt;
            uses: actions/checkout@v4&lt;br /&gt;
 &lt;br /&gt;
          - name: Log in to the Container registry&lt;br /&gt;
            uses: docker/login-action@v3&lt;br /&gt;
            with:&lt;br /&gt;
               registry: ghcr.io&lt;br /&gt;
               username: ${{ github.actor }}&lt;br /&gt;
               password: ${{ secrets.GITHUB_TOKEN }}&lt;br /&gt;
 &lt;br /&gt;
          - name: Build and push Docker image&lt;br /&gt;
            uses: docker/build-push-action@v5&lt;br /&gt;
            with:&lt;br /&gt;
               context: .&lt;br /&gt;
               push: true&lt;br /&gt;
               tags: ghcr.io/${{ github.repository }}:latest&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
下表に、主なアクションを示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Docker関連アクション一覧&lt;br /&gt;
|-&lt;br /&gt;
! アクション !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;docker/login-action&amp;lt;/code&amp;gt; || コンテナレジストリへのログインを行うアクション&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;docker/build-push-action&amp;lt;/code&amp;gt; || Dockerイメージのビルドとプッシュを行うアクション&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== npmパッケージの自動公開 ====&lt;br /&gt;
npmパッケージを自動的に公開するワークフローの例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
 name: Publish npm Package&lt;br /&gt;
 &lt;br /&gt;
 on:&lt;br /&gt;
    release:&lt;br /&gt;
       types: [created]&lt;br /&gt;
 &lt;br /&gt;
 jobs:&lt;br /&gt;
    publish:&lt;br /&gt;
       runs-on: ubuntu-latest&lt;br /&gt;
       permissions:&lt;br /&gt;
          contents: read&lt;br /&gt;
          packages: write&lt;br /&gt;
 &lt;br /&gt;
       steps:&lt;br /&gt;
          - name: Checkout repository&lt;br /&gt;
            uses: actions/checkout@v4&lt;br /&gt;
 &lt;br /&gt;
          - name: Setup Node.js&lt;br /&gt;
            uses: actions/setup-node@v4&lt;br /&gt;
            with:&lt;br /&gt;
               node-version: &amp;#039;20&amp;#039;&lt;br /&gt;
               registry-url: &amp;#039;https://npm.pkg.github.com&amp;#039;&lt;br /&gt;
               scope: &amp;#039;@NAMESPACE&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
          - name: Install dependencies&lt;br /&gt;
            run: npm ci&lt;br /&gt;
 &lt;br /&gt;
          - name: Publish package&lt;br /&gt;
            run: npm publish&lt;br /&gt;
            env:&lt;br /&gt;
               NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
環境変数 &amp;lt;code&amp;gt;NODE_AUTH_TOKEN&amp;lt;/code&amp;gt; に &amp;lt;code&amp;gt;GITHUB_TOKEN&amp;lt;/code&amp;gt; を設定することにより、認証を行う。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== パッケージの管理 ==&lt;br /&gt;
GitHub Packagesのパッケージは、[リポジトリ]ページ または [Organization]ページから管理できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== バージョン管理 ====&lt;br /&gt;
公開したパッケージは複数バージョンを保持できる。&amp;lt;br&amp;gt;&lt;br /&gt;
各バージョンは個別に管理・削除が可能である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
バージョン一覧は、[リポジトリ]ページの[Packages]セクション または [Organization]ページの[Packages]ページから確認できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== アクセス権限 ====&lt;br /&gt;
パッケージのアクセス権限は以下に示す3段階で設定できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ パッケージのアクセス権限&lt;br /&gt;
! 権限 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| Read || パッケージのダウンロードとメタデータの閲覧が可能&lt;br /&gt;
|-&lt;br /&gt;
| Write || パッケージの公開と新バージョンのアップロードが可能&lt;br /&gt;
|-&lt;br /&gt;
| Admin || 権限設定の変更、パッケージの削除、可視性の変更が可能&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
デフォルトでは、リポジトリのアクセス権限がパッケージに継承される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
リポジトリ権限の継承は、パッケージの設定から無効化することもできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== パッケージの削除と復元 ====&lt;br /&gt;
パッケージのバージョンは、GitHubのWeb UI または GraphQL APIを使用して削除できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
削除したパッケージは30日以内であれば復元できる。&amp;lt;br&amp;gt;&lt;br /&gt;
復元には以下の条件が必要である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 同じ名前空間とバージョン番号が現在使用されていないこと。&lt;br /&gt;
* 削除から30日以内であること。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 可視性の変更 ====&lt;br /&gt;
パッケージの可視性変更に関して、以下に示す重要な制限がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* PublicからPrivateへの変更は不可逆である。&lt;br /&gt;
*: 1度Privateに変更すると、同じパッケージ名でPublicに戻すことはできない。&lt;br /&gt;
* PrivateからPublicへの変更は可能である。&lt;br /&gt;
*: ただし、Publicにした場合は全員がアクセスできる状態になることに注意する。&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 課金 ==&lt;br /&gt;
GitHub Packagesの利用には、ストレージ容量とデータ転送量に応じた課金が発生する場合がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 無料枠 ====&lt;br /&gt;
下表に、各プランの無料枠を示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ GitHub Packages の無料枠&lt;br /&gt;
! プラン !! ストレージ !! データ転送 (月間)&lt;br /&gt;
|-&lt;br /&gt;
| Free || 500[MB] || 1[GB]&lt;br /&gt;
|-&lt;br /&gt;
| Pro || 2[GB] || 10[GB]&lt;br /&gt;
|-&lt;br /&gt;
| Team || 2[GB] || 10[GB]&lt;br /&gt;
|-&lt;br /&gt;
| Enterprise || 50[GB] || 100[GB]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
無料枠を超えた場合は追加費用が発生する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== GITHUB_TOKENでのデータ転送 ====&lt;br /&gt;
GitHub Actionsワークフロー内で &amp;lt;code&amp;gt;GITHUB_TOKEN&amp;lt;/code&amp;gt; を使用して GitHub Packages にアクセスする場合、データ転送量は無料枠の割当を消費しない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
これは、以下のケースに該当する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ワークフロー内での &amp;lt;code&amp;gt;GITHUB_TOKEN&amp;lt;/code&amp;gt; を使用したパッケージのプッシュ&lt;br /&gt;
* ワークフロー内での &amp;lt;code&amp;gt;GITHUB_TOKEN&amp;lt;/code&amp;gt; を使用したパッケージのプル&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;個人アクセストークンを使用した場合は、通常通り割当が消費されることに注意する。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [https://docs.github.com/ja/packages GitHub Packages 公式ドキュメント]&lt;br /&gt;
* [https://docs.github.com/ja/packages/working-with-a-github-packages-registry/working-with-the-container-registry Container Registry のドキュメント]&lt;br /&gt;
* [https://docs.github.com/ja/packages/working-with-a-github-packages-registry/working-with-the-npm-registry npm レジストリのドキュメント]&lt;br /&gt;
* [https://docs.github.com/ja/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry Maven レジストリのドキュメント]&lt;br /&gt;
* [https://docs.github.com/ja/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry NuGet レジストリのドキュメント]&lt;br /&gt;
* [https://docs.github.com/ja/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry RubyGems レジストリのドキュメント]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:Git]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>