GitLabにはPackage Registryという機能があり、様々な言語のパッケージをホストできます。
- Maven packages in the Package Repository | GitLab
- npm packages in the Package Registry | GitLab
- PyPI packages in the Package Registry | GitLab
一方で、言語のパッケージに限らず、例えばGitLab CI/CDのジョブで作成したテキストファイルやCSVファイルなどもホストしたいというニーズもあります。そして、それに応える機能が、GitLab Generic Packages Repository | GitLabです。
このGeneric Packages Repositoryには、任意のファイルをアップロード可能です。 もちろんGUIからでも可能ですが。GitLab Generic Packages Repository | GitLab に記述があるように以下のAPIで実行できます。
PUT /projects/:id/packages/generic/:package_name/:package_version/:file_name?status=:status
そして、この操作はGitLab CI/CD job tokenで可能です。つまり、個人のアクセストークンなしにアップロードができるという素敵仕様です。 具体的には、GitLab CI/CDの中で以下のように実行すればRepositoryへのアップロードが可能です。
$ curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file path/to/file.txt "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/my_package/0.0.1/file.txt"'