理系学生日記

おまえはいつまで学生気分なのか

GitLab CI/CDで生成したファイルをGeneric Packages Repositoryに配置する

GitLabにはPackage Registryという機能があり、様々な言語のパッケージをホストできます。

一方で、言語のパッケージに限らず、例えば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"'