[{"data":1,"prerenderedAt":1580},["ShallowReactive",2],{"/ja-jp/blog/tutorial-automated-release-and-release-notes-with-gitlab":3,"navigation-ja-jp":801,"banner-ja-jp":1230,"footer-ja-jp":1237,"blog-post-authors-ja-jp-Ben Ridley":1477,"blog-related-posts-ja-jp-tutorial-automated-release-and-release-notes-with-gitlab":1492,"blog-promotions-ja-jp":1518,"next-steps-ja-jp":1571},{"id":4,"title":5,"authors":6,"body":8,"category":777,"date":778,"description":779,"extension":599,"externalUrl":780,"faq":780,"featured":781,"heroImage":782,"meta":783,"navigation":320,"path":784,"seo":785,"slug":790,"stem":791,"tags":792,"template":798,"updatedDate":799,"__hash__":800},"blogPosts/ja-jp/blog/tutorial-automated-release-and-release-notes-with-gitlab.md","チュートリアル：GitLabでリリース自動化とリリースノート自動生成",[7],"Ben Ridley",{"type":9,"value":10,"toc":768},"minimark",[11,28,31,34,37,42,45,48,59,62,65,89,96,99,102,105,112,115,118,129,135,138,145,160,169,172,191,198,508,525,582,585,592,595,693,696,703,706,713,720,732,746,752,764],[12,13,14],"p",{},[15,16,17,21,22],"em",{},[18,19,20],"strong",{},"2025年の更新情報","  GitLab Changelog APIは進化を続けており、今回のブログでは取り上げていない優れた新機能も追加されています。たとえば、コミット履歴からテンプレート化された値を使ってカスタムの変更履歴を提供できるようになっています。",[23,24,27],"a",{"href":25,"rel":26},"https://docs.gitlab.com/user/project/changelogs/",[],"詳しくは、変更履歴に関する公式ドキュメントをご覧ください。",[12,29,30],{},"ユーザーが頼りにしているソフトウェアを開発する際には、各リリースでの変更点を効果的に伝えることが不可欠です。新機能や変更点、削除された内容をきちんと伝えることで、ユーザーはソフトウェアを最大限に活用でき、アップグレード時の思わぬトラブルも回避できます。",[12,32,33],{},"これまで、リリースノートの作成や変更履歴の管理は手間のかかる作業でした。デベロッパーが外部ツールで変更を追跡したり、リリースマネージャーがマージ履歴を手作業で確認したりする必要があったためです。GitLabのChangelog APIを使うと、Gitリポジトリに記録された豊富な履歴情報を活用して、リリースノートの作成や変更履歴の管理を簡単に行うことができます。",[12,35,36],{},"このチュートリアルでは、GitLabを使ったリリースの自動化について詳しく説明します。リリースアーティファクトの生成、リリースノートの作成、そしてユーザーに関係する変更点をすべて網羅した包括的な変更履歴の生成方法について取り上げます。",[38,39,41],"h2",{"id":40},"gitlabにおけるリリース","GitLabにおけるリリース",[12,43,44],{},"まずは、GitLabでリリースがどのように機能しているのかを見ていきましょう。",[12,46,47],{},"GitLabにおけるリリースとは、Gitタグで識別される特定のコードバージョンのことを指します。このリリースには、前回のリリース以降に行われた変更内容（およびリリースノート）や、そのバージョンのコードからビルドされた関連アーティファクト（Dockerイメージ、インストールパッケージ、ドキュメントなど）が含まれます。",[12,49,50,51,55,56,58],{},"リリースは、GitLabのUIを使って作成・管理することもできますし、Release APIを呼び出すか、CIパイプラインの中に特別な",[52,53,54],"code",{},"release","ジョブを定義することでも実現できます。このチュートリアルでは、CI/CDパイプライン内の",[52,57,54],{},"ジョブを使用します。これにより、テストやコードスキャンなどに使っている自動化プロセスを、リリースの実行にも拡張できるようになります。",[12,60,61],{},"リリースを自動化するために、まず確認しなければならないことがあります。「リリースノートや変更履歴を作成するための変更情報は、どこから取得するのか？」その答えは、Gitリポジトリです。コミットメッセージやマージコミットの履歴を通じて、豊富な開発履歴が得られます。この情報を活用して、リリースノートや変更履歴を自動生成できるか試してみましょう。",[38,63,64],{"id":64},"コミットトレーラーの導入",[12,66,67,72,73,76,77,80,81,84,85,88],{},[23,68,71],{"href":69,"rel":70},"https://git-scm.com/docs/git-interpret-trailers",[],"コミットトレーラー","とは、Gitのコミットメッセージの末尾に追加する、構造化されたエントリーのことです。書き方はシンプルで、",[52,74,75],{},"\u003CHEADER>:\u003CBODY>","という形式のメッセージをコミットの最後に追加するだけです。これにより、",[52,78,79],{},"git","のコマンドラインインターフェース（CLI）ツールがそれらを解析して、他のシステムで利用できるようになります。たとえば、すでに使ったことがあるかもしれませんが、",[52,82,83],{},"git commit --sign-off","でコミットに署名する機能もこの仕組みを使っています。これは、",[52,86,87],{},"Signed-off-by: \u003Cあなたの名前>","というトレーラーをコミットに追加することで実現されています。このトレーラーには、好きな構造化データを自由に追加できるので、変更履歴に役立つ情報を保存する場所として非常に便利です。",[12,90,91,92,95],{},"実際に、コミットに",[52,93,94],{},"Changelog: \u003Cadded/changed/removed>","というトレーラーを使うと、GitLabのChangelog APIがそれを解析し、自動的に変更履歴を生成してくれます！",[12,97,98],{},"それでは、実際のコードベースに変更を加えてリリースを行い、リリースノートと変更履歴のエントリーを生成する手順を見ていきましょう。",[38,100,101],{"id":101},"サンプルプロジェクトについて",[12,103,104],{},"今回のブログでは、シンプルなPythonのWebアプリのリポジトリを使っています。仮に、このアプリケーションのバージョン1.0.0がちょうどリリースされたばかりで、これが現在のコードのバージョンだとしましょう。また、GitLab上で1.0.0のリリースも作成してありますが、これはまだ自動化されたリリースパイプラインを作っていないため、手動で作成しました。",[12,106,107],{},[108,109],"img",{"alt":110,"src":111},"GitLabのUI上で、バージョン1.0.0のリリースが表示されているスクリーンショット","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397825/blog/Content%20Images/2023-08-22-automated-release-and-release-notes-with-gitlab/1-0-release.png",[38,113,114],{"id":114},"変更の実施",[12,116,117],{},"現在は開発を急ピッチで進めている段階なので、今日はアプリケーションのバージョン2.0.0のリリース作業を進めていきます。2.0.0リリースでは、アプリに新機能の「チャットボット」を追加します。そして、量子ブロックチェーン機能は削除します。これは最初のベンチャーキャピタル向けに必要だっただけなので、もう不要です。さらに、2.0.0リリースに向けて、CI/CDパイプラインに自動リリースジョブも追加する予定です。",[12,119,120,121,124,125,128],{},"まずは不要な機能の削除から始めましょう。不要な部分を削除したマージリクエストを作成しました。ここで重要なのは、コミットメッセージに",[52,122,123],{},"Changelog: removed","トレーラーを含めることです。これを行う方法はいくつかあります。たとえば、最初からコミットに直接含めたり、インタラクティブリベースを使ってCLIで後から追加したりもできます。しかし、今回の状況では、一番簡単な方法は最後にGitLabの",[52,126,127],{},"Edit commit message","ボタンを使って、マージコミットにトレーラーを追加する方法だと思います。",[12,130,131],{},[108,132],{"alt":133,"src":134},"GitLabのUIに表示された、使われていない機能を削除するマージリクエストのスクリーンショット","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397834/blog/Content%20Images/2023-08-22-automated-release-and-release-notes-with-gitlab/remove-unused-features-mr.png",[12,136,137],{},"この方法を使えば、マージコミットのタイトルをもっと簡潔なものに変更することもできます。ここでは、マージコミットのタイトルを'Remove Unused Features'に変更しました。これは変更履歴のエントリに表示されます。",[12,139,140,141,144],{},"次に、2.0.0リリース用の新機能を追加しましょう。ここでも、新機能を含む別のマージリクエストを開き、マージコミットを編集して",[52,142,143],{},"Changelog: added","トレーラーを追加し、コミットのタイトルをより簡潔に編集するだけです。",[12,146,147,151,152,155,156,159],{},[108,148],{"alt":149,"src":150},"GitLabのUIに表示された、新しい機能を追加するマージリクエストのスクリーンショット","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397834/blog/Content%20Images/2023-08-22-automated-release-and-release-notes-with-gitlab/add-chatbot-mr.png","\nこれで、バージョン2.0.0をリリースする準備はほとんど整いました。ただし、今回は手動でリリースを作成したくありません。そのため、リリースの前に",[52,153,154],{},".gitlab-ci.yml","ファイルにいくつかのジョブを追加し、コードに",[52,157,158],{},"2.0.0","のような新しいバージョンのタグを付けた際に、自動でリリース処理を行い、対応するリリースノートや変更履歴のエントリを生成するようにします。",[12,161,162,163,168],{},"**注：**変更履歴のトレーラーを強制したい場合は、",[23,164,167],{"href":165,"rel":166},"https://docs.gitlab.com/ja-jp/development/dangerbot/",[],"Dangerのようなツールを使用して、マージリクエストの規則を自動的にチェックする","方法を検討してください。",[38,170,171],{"id":171},"自動リリースパイプラインの構築",[12,173,174,175,180,181,184,185,190],{},"パイプラインを機能させるには、プロジェクトアクセストークンを作成し、GitLabのAPIを呼び出して変更履歴のエントリーを生成できるようにする必要があります。",[23,176,179],{"href":177,"rel":178},"https://docs.gitlab.com/ja-jp/user/project/settings/project_access_tokens/#create-a-project-access-token",[],"APIスコープを指定してプロジェクトアクセストークンを作成","し、それを",[52,182,183],{},"CI_API_TOKEN","という名前の",[23,186,189],{"href":187,"rel":188},"https://docs.gitlab.com/ja-jp/ci/variables/#define-a-cicd-variable-in-the-ui",[],"CI/CD変数として保存","します。この変数を参照して、APIの認証を行います。",[12,192,193,194,197],{},"次に、",[52,195,196],{},"gitlab-ci.yml","ファイルに以下の2つの新しいジョブを追加します。",[199,200,205],"pre",{"className":201,"code":202,"language":203,"meta":204,"style":204},"language-yaml shiki shiki-themes github-light","prepare_job:\n  stage: prepare\n  image: alpine:latest\n  rules:\n  - if: '$CI_COMMIT_TAG =~ /^v?\\d+\\.\\d+\\.\\d+$/'\n  script:\n    - apk add curl jq\n    - 'curl -H \"PRIVATE-TOKEN: $CI_API_TOKEN\" \"$CI_API_V4_URL/projects/$CI_PROJECT_ID/repository/changelog?version=$CI_COMMIT_TAG\" | jq -r .notes > release_notes.md'\n  artifacts:\n    paths:\n    - release_notes.md\n\nrelease_job:\n  stage: release\n  image: registry.gitlab.com/gitlab-org/release-cli:latest\n  needs:\n    - job: prepare_job\n      artifacts: true\n  rules:\n  - if: '$CI_COMMIT_TAG =~ /^v?\\d+\\.\\d+\\.\\d+$/'\n  script:\n    - echo \"Creating release\"\n  release:\n    name: 'Release $CI_COMMIT_TAG'\n    description: release_notes.md\n    tag_name: '$CI_COMMIT_TAG'\n    ref: '$CI_COMMIT_SHA'\n    assets:\n      links:\n        - name: 'Container Image $CI_COMMIT_TAG'\n          url: \"https://$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA\"\n","yaml","",[52,206,207,220,233,244,252,266,274,283,291,299,307,315,322,330,340,350,358,371,383,390,401,408,416,424,435,445,456,467,475,483,497],{"__ignoreMap":204},[208,209,212,216],"span",{"class":210,"line":211},"line",1,[208,213,215],{"class":214},"shJU0","prepare_job",[208,217,219],{"class":218},"sgsFI",":\n",[208,221,223,226,229],{"class":210,"line":222},2,[208,224,225],{"class":214},"  stage",[208,227,228],{"class":218},": ",[208,230,232],{"class":231},"sYBdl","prepare\n",[208,234,236,239,241],{"class":210,"line":235},3,[208,237,238],{"class":214},"  image",[208,240,228],{"class":218},[208,242,243],{"class":231},"alpine:latest\n",[208,245,247,250],{"class":210,"line":246},4,[208,248,249],{"class":214},"  rules",[208,251,219],{"class":218},[208,253,255,258,261,263],{"class":210,"line":254},5,[208,256,257],{"class":218},"  - ",[208,259,260],{"class":214},"if",[208,262,228],{"class":218},[208,264,265],{"class":231},"'$CI_COMMIT_TAG =~ /^v?\\d+\\.\\d+\\.\\d+$/'\n",[208,267,269,272],{"class":210,"line":268},6,[208,270,271],{"class":214},"  script",[208,273,219],{"class":218},[208,275,277,280],{"class":210,"line":276},7,[208,278,279],{"class":218},"    - ",[208,281,282],{"class":231},"apk add curl jq\n",[208,284,286,288],{"class":210,"line":285},8,[208,287,279],{"class":218},[208,289,290],{"class":231},"'curl -H \"PRIVATE-TOKEN: $CI_API_TOKEN\" \"$CI_API_V4_URL/projects/$CI_PROJECT_ID/repository/changelog?version=$CI_COMMIT_TAG\" | jq -r .notes > release_notes.md'\n",[208,292,294,297],{"class":210,"line":293},9,[208,295,296],{"class":214},"  artifacts",[208,298,219],{"class":218},[208,300,302,305],{"class":210,"line":301},10,[208,303,304],{"class":214},"    paths",[208,306,219],{"class":218},[208,308,310,312],{"class":210,"line":309},11,[208,311,279],{"class":218},[208,313,314],{"class":231},"release_notes.md\n",[208,316,318],{"class":210,"line":317},12,[208,319,321],{"emptyLinePlaceholder":320},true,"\n",[208,323,325,328],{"class":210,"line":324},13,[208,326,327],{"class":214},"release_job",[208,329,219],{"class":218},[208,331,333,335,337],{"class":210,"line":332},14,[208,334,225],{"class":214},[208,336,228],{"class":218},[208,338,339],{"class":231},"release\n",[208,341,343,345,347],{"class":210,"line":342},15,[208,344,238],{"class":214},[208,346,228],{"class":218},[208,348,349],{"class":231},"registry.gitlab.com/gitlab-org/release-cli:latest\n",[208,351,353,356],{"class":210,"line":352},16,[208,354,355],{"class":214},"  needs",[208,357,219],{"class":218},[208,359,361,363,366,368],{"class":210,"line":360},17,[208,362,279],{"class":218},[208,364,365],{"class":214},"job",[208,367,228],{"class":218},[208,369,370],{"class":231},"prepare_job\n",[208,372,374,377,379],{"class":210,"line":373},18,[208,375,376],{"class":214},"      artifacts",[208,378,228],{"class":218},[208,380,382],{"class":381},"sYu0t","true\n",[208,384,386,388],{"class":210,"line":385},19,[208,387,249],{"class":214},[208,389,219],{"class":218},[208,391,393,395,397,399],{"class":210,"line":392},20,[208,394,257],{"class":218},[208,396,260],{"class":214},[208,398,228],{"class":218},[208,400,265],{"class":231},[208,402,404,406],{"class":210,"line":403},21,[208,405,271],{"class":214},[208,407,219],{"class":218},[208,409,411,413],{"class":210,"line":410},22,[208,412,279],{"class":218},[208,414,415],{"class":231},"echo \"Creating release\"\n",[208,417,419,422],{"class":210,"line":418},23,[208,420,421],{"class":214},"  release",[208,423,219],{"class":218},[208,425,427,430,432],{"class":210,"line":426},24,[208,428,429],{"class":214},"    name",[208,431,228],{"class":218},[208,433,434],{"class":231},"'Release $CI_COMMIT_TAG'\n",[208,436,438,441,443],{"class":210,"line":437},25,[208,439,440],{"class":214},"    description",[208,442,228],{"class":218},[208,444,314],{"class":231},[208,446,448,451,453],{"class":210,"line":447},26,[208,449,450],{"class":214},"    tag_name",[208,452,228],{"class":218},[208,454,455],{"class":231},"'$CI_COMMIT_TAG'\n",[208,457,459,462,464],{"class":210,"line":458},27,[208,460,461],{"class":214},"    ref",[208,463,228],{"class":218},[208,465,466],{"class":231},"'$CI_COMMIT_SHA'\n",[208,468,470,473],{"class":210,"line":469},28,[208,471,472],{"class":214},"    assets",[208,474,219],{"class":218},[208,476,478,481],{"class":210,"line":477},29,[208,479,480],{"class":214},"      links",[208,482,219],{"class":218},[208,484,486,489,492,494],{"class":210,"line":485},30,[208,487,488],{"class":218},"        - ",[208,490,491],{"class":214},"name",[208,493,228],{"class":218},[208,495,496],{"class":231},"'Container Image $CI_COMMIT_TAG'\n",[208,498,500,503,505],{"class":210,"line":499},31,[208,501,502],{"class":214},"          url",[208,504,228],{"class":218},[208,506,507],{"class":231},"\"https://$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA\"\n",[12,509,510,511,513,514,517,518,521,522,524],{},"上記の設定では、",[52,512,215],{},"が",[52,515,516],{},"curl","と",[52,519,520],{},"jq","を使ってGitLabのChangelog APIエンドポイントを呼び出し、その結果を",[52,523,327],{},"に渡して、リリースの作成を行います。詳しく見ていきましょう。",[526,527,528,532,551,564,569,579],"ul",{},[529,530,531],"li",{},"まず、先ほど作成したプロジェクトアクセストークンを使ってGitLabのChangelog APIを呼び出し、リリースノートを生成します。そして、その出力をアーティファクトとして保存します。",[529,533,534,535,538,539,541,542,545,546],{},"バージョンには",[52,536,537],{},"$CI_COMMIT_TAG","変数を使用しています。この仕組みが機能するには、タグにセマンティックバージョニング（たとえば",[52,540,158],{},"のような形式）を使用する必要があります。そのため、リリースジョブには、セマンティックバージョンのタグが付いているかどうかを確認する",[52,543,544],{},"rules","セクションを追加しています。\n",[526,547,548],{},[529,549,550],{},"GitLabのChangelog APIを使うには、セマンティックバージョニングが必要です。この形式を用いて、現在のリリースとの比較対象となる最新リリースを特定します。",[529,552,553,554,557,558,560,561,563],{},"GitLabが提供する公式の",[52,555,556],{},"release-cli","イメージを使用しています。ジョブ内で",[52,559,54],{},"キーワードを使うには、この",[52,562,556],{},"が必要です。",[529,565,566,568],{},[52,567,54],{},"キーワードを使用して、GitLab上にリリースを作成します。これは、リリースの作成と必須フィールドの入力のために確保されている特別なジョブキーワードです。",[529,570,571,572,575,576,578],{},"リリースの",[52,573,574],{},"description","には、ファイルを引数として渡すことができます。今回の例では、",[52,577,215],{},"で生成し、アーティファクトとしてこのジョブに渡されたファイルを使っています。",[529,580,581],{},"さらに、パイプラインの早い段階でビルドされているコンテナイメージも、リリースアセットとして追加しています。ビルドプロセスの中で作成したバイナリやドキュメントなども、パイプライン内でアップロード済みのURLを指定することで、リリースアセットとして添付できます。",[38,583,584],{"id":584},"自動リリースの実行",[12,586,587,588],{},"この設定が完了すれば、リリースを実行するために必要なのは、バージョン付けのルールに従ったタグをリポジトリにプッシュすることだけです。CLIからタグをプッシュすることもできますが、ここではGitLabのUIを使って、mainブランチにタグを作成する例をご紹介します。タグを作成するには、サイドバーからコード > タグ > 新しいタグを選択します。\n",[108,589],{"alt":590,"src":591},"タグの作成方法を示すGitLabのUIのスクリーンショット","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397835/blog/Content%20Images/2023-08-22-automated-release-and-release-notes-with-gitlab/create-2-tag.png",[12,593,594],{},"タグの作成が完了すると、パイプラインの実行が開始されます。 GitLabのChangelog APIが、今回のリリースと前回のリリースの間に行われた変更をすべて含むリリースノートをMarkdown形式で自動的に生成します。 以下は、この例で生成されたMarkdownの出力結果です。",[199,596,600],{"className":597,"code":598,"language":599,"meta":204,"style":204},"language-md shiki shiki-themes github-light","## 2.0.0 (2023-08-25)\n\n### added (1 change)\n\n- [Add ChatBot](gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo@0c3601a45af617c5481322bfce4d71db1f911b02) ([merge request](gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo!4))\n\n### removed (1 change)\n\n- [Remove Unused Features](gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo@463d453c5ae0f4fc611ea969e5442e3298bf0d8a) ([merge request](gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo!3))\n","md",[52,601,602,608,612,617,621,655,659,664,668],{"__ignoreMap":204},[208,603,604],{"class":210,"line":211},[208,605,607],{"class":606},"surfw","## 2.0.0 (2023-08-25)\n",[208,609,610],{"class":210,"line":222},[208,611,321],{"emptyLinePlaceholder":320},[208,613,614],{"class":210,"line":235},[208,615,616],{"class":606},"### added (1 change)\n",[208,618,619],{"class":210,"line":246},[208,620,321],{"emptyLinePlaceholder":320},[208,622,623,627,630,634,637,641,644,647,649,652],{"class":210,"line":254},[208,624,626],{"class":625},"sqxcx","-",[208,628,629],{"class":218}," [",[208,631,633],{"class":632},"sEuWB","Add ChatBot",[208,635,636],{"class":218},"](",[208,638,640],{"class":639},"se9n6","gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo@0c3601a45af617c5481322bfce4d71db1f911b02",[208,642,643],{"class":218},") ([",[208,645,646],{"class":632},"merge request",[208,648,636],{"class":218},[208,650,651],{"class":639},"gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo!4",[208,653,654],{"class":218},"))\n",[208,656,657],{"class":210,"line":268},[208,658,321],{"emptyLinePlaceholder":320},[208,660,661],{"class":210,"line":276},[208,662,663],{"class":606},"### removed (1 change)\n",[208,665,666],{"class":210,"line":285},[208,667,321],{"emptyLinePlaceholder":320},[208,669,670,672,674,677,679,682,684,686,688,691],{"class":210,"line":293},[208,671,626],{"class":625},[208,673,629],{"class":218},[208,675,676],{"class":632},"Remove Unused Features",[208,678,636],{"class":218},[208,680,681],{"class":639},"gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo@463d453c5ae0f4fc611ea969e5442e3298bf0d8a",[208,683,643],{"class":218},[208,685,646],{"class":632},[208,687,636],{"class":218},[208,689,690],{"class":639},"gl-demo-ultimate-bridley/super-devsecops-incorporated/simply-notes-release-demo!3",[208,692,654],{"class":218},[12,694,695],{},"ご覧のとおり、GitLabはgitのコミットトレーラーをもとに、リリースノートのエントリを自動で抽出しています。さらに、変更の詳細やディスカッションが確認できるよう、マージリクエストへのリンクも付けられています。",[12,697,698,699],{},"そしてこちらが、最終的に作成されたリリースです。\n",[108,700],{"alt":701,"src":702},"GitLabのリリースUIに表示された、バージョン2.0.0のリリース画面","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397834/blog/Content%20Images/2023-08-22-automated-release-and-release-notes-with-gitlab/2-0-release.png",[38,704,705],{"id":705},"変更履歴の作成",[12,707,708,709,712],{},"次に、変更履歴（すべてのリリースノートをまとめた履歴）を更新します。これを行うには、先ほど使用したChangelog APIエンドポイントに対して、",[52,710,711],{},"POST","リクエストを送ります。",[12,714,715,716,719],{},"必要であれば、この処理をリリースパイプラインの一部として実行することも可能です。たとえば、prepareジョブの",[52,717,718],{},"script","セクションに以下の内容を追加します。",[199,721,725],{"className":722,"code":723,"language":724,"meta":204,"style":204},"language-sh shiki shiki-themes github-light","'curl -H \"PRIVATE-TOKEN: $CI_API_TOKEN\" -X POST \"$CI_API_V4_URL/projects/$CI_PROJECT_ID/repository/changelog?version=$CI_COMMIT_TAG\"\n","sh",[52,726,727],{"__ignoreMap":204},[208,728,729],{"class":210,"line":211},[208,730,723],{"class":731},"s7eDp",[12,733,734,737,738,741,742],{},[18,735,736],{},"この処理は実際にリポジトリを変更する点にご注意ください。"," 具体的には、最新のリリースノートを",[52,739,740],{},"CHANGELOG.md","ファイルに追加するためのコミットが作成されます。\n",[108,743],{"alt":744,"src":745},"変更履歴ファイルを更新するコミットを示すリポジトリのスクリーンショット","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397834/blog/Content%20Images/2023-08-22-automated-release-and-release-notes-with-gitlab/changelog-api-commit.png",[12,747,748,749,751],{},"これですべて完了です！",[52,750,79],{},"が提供する豊富な履歴情報と、便利なコミットトレーラーを活用することで、GitLabの強力なAPIとCI/CDパイプラインを使って、リリースプロセスとリリースノートの生成を自動化できます。",[753,754,755],"blockquote",{},[12,756,757,758,763],{},"この記事で使用したプロジェクトを実際に確認したい場合は、",[23,759,762],{"href":760,"rel":761},"https://gitlab.com/gitlab-learn-labs/sample-projects/release-automation-demo",[],"こちらのリンク","からご覧いただけます。",[765,766,767],"style",{},"html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .surfw, html code.shiki .surfw{--shiki-default:#005CC5;--shiki-default-font-weight:bold}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}html pre.shiki code .sEuWB, html code.shiki .sEuWB{--shiki-default:#032F62;--shiki-default-text-decoration:underline}html pre.shiki code .se9n6, html code.shiki .se9n6{--shiki-default:#24292E;--shiki-default-text-decoration:underline}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}",{"title":204,"searchDepth":222,"depth":222,"links":769},[770,771,772,773,774,775,776],{"id":40,"depth":222,"text":41},{"id":64,"depth":222,"text":64},{"id":101,"depth":222,"text":101},{"id":114,"depth":222,"text":114},{"id":171,"depth":222,"text":171},{"id":584,"depth":222,"text":584},{"id":705,"depth":222,"text":705},"product","2023-11-01","GitLabのChangelog APIを使用すると、リリースアーティファクト、リリースノートなどの変更をまとめた、包括的な変更履歴の生成を自動化できます。",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659978/Blog/Hero%20Images/automation.png",{},"/ja-jp/blog/tutorial-automated-release-and-release-notes-with-gitlab",{"title":786,"description":779,"ogTitle":5,"ogDescription":779,"noIndex":781,"ogImage":782,"ogUrl":787,"ogSiteName":788,"ogType":789,"canonicalUrls":787},"チュートリアル：GitLabでリリースとリリースノートを自動化する","https://about.gitlab.com/blog/tutorial-automated-release-and-release-notes-with-gitlab","https://about.gitlab.com","記事","tutorial-automated-release-and-release-notes-with-gitlab","ja-jp/blog/tutorial-automated-release-and-release-notes-with-gitlab",[793,794,795,796,797,79],"Tutorial","CI","CI/CD","DevOps","DevSecOps","BlogPost","2025-06-05","YCIwyrXMLPU6pOPfh5vcmK7vuBVA6XgbkPUFDeCKyTA",{"logo":802,"freeTrial":807,"sales":812,"login":817,"items":822,"search":1150,"minimal":1183,"duo":1200,"switchNav":1209,"pricingDeployment":1220},{"config":803},{"href":804,"dataGaName":805,"dataGaLocation":806},"/ja-jp/","gitlab logo","header",{"text":808,"config":809},"無料トライアルを開始",{"href":810,"dataGaName":811,"dataGaLocation":806},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":813,"config":814},"デモをリクエスト",{"href":815,"dataGaName":816,"dataGaLocation":806},"/ja-jp/sales/?contact-topic=request-demo","sales",{"text":818,"config":819},"サインイン",{"href":820,"dataGaName":821,"dataGaLocation":806},"https://gitlab.com/users/sign_in/","sign in",[823,852,953,958,1072,1128],{"text":824,"config":825,"menu":827},"プラットフォーム",{"dataNavLevelOne":826},"platform",{"type":828,"columns":829},"cards",[830,836,844],{"title":824,"description":831,"link":832},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":833,"config":834},"プラットフォームの詳細はこちら",{"href":835,"dataGaName":826,"dataGaLocation":806},"/ja-jp/platform/",{"title":837,"description":838,"link":839},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":840,"config":841},"GitLab Duoのご紹介",{"href":842,"dataGaName":843,"dataGaLocation":806},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":845,"description":846,"link":847},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":848,"config":849},"詳細はこちら",{"href":850,"dataGaName":851,"dataGaLocation":806},"/ja-jp/why-gitlab/","why gitlab",{"text":853,"left":320,"config":854,"menu":856},"製品",{"dataNavLevelOne":855},"solutions",{"type":857,"link":858,"columns":862,"feature":932},"lists",{"text":859,"config":860},"すべてのソリューションを表示",{"href":861,"dataGaName":855,"dataGaLocation":806},"/ja-jp/solutions/",[863,887,910],{"title":864,"description":865,"link":866,"items":871},"自動化","CI/CDと自動化でデプロイを加速",{"config":867},{"icon":868,"href":869,"dataGaName":870,"dataGaLocation":806},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[872,875,878,883],{"text":795,"config":873},{"href":874,"dataGaLocation":806,"dataGaName":795},"/ja-jp/solutions/continuous-integration/",{"text":837,"config":876},{"href":842,"dataGaLocation":806,"dataGaName":877},"gitlab duo agent platform - product menu",{"text":879,"config":880},"ソースコード管理",{"href":881,"dataGaLocation":806,"dataGaName":882},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":884,"config":885},"自動化されたソフトウェアデリバリー",{"href":869,"dataGaLocation":806,"dataGaName":886},"Automated software delivery",{"title":888,"description":889,"link":890,"items":895},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":891},{"href":892,"dataGaName":893,"dataGaLocation":806,"icon":894},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[896,900,905],{"text":897,"config":898},"アプリケーションセキュリティテスト",{"href":892,"dataGaName":899,"dataGaLocation":806},"Application security testing",{"text":901,"config":902},"ソフトウェアサプライチェーンセキュリティ",{"href":903,"dataGaLocation":806,"dataGaName":904},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":906,"config":907},"ソフトウェアコンプライアンス",{"href":908,"dataGaName":909,"dataGaLocation":806},"/ja-jp/solutions/software-compliance/","software compliance",{"title":911,"link":912,"items":917},"測定",{"config":913},{"icon":914,"href":915,"dataGaName":916,"dataGaLocation":806},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[918,922,927],{"text":919,"config":920},"可視性と測定",{"href":915,"dataGaLocation":806,"dataGaName":921},"Visibility and Measurement",{"text":923,"config":924},"バリューストリーム管理",{"href":925,"dataGaLocation":806,"dataGaName":926},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":928,"config":929},"分析とインサイト",{"href":930,"dataGaLocation":806,"dataGaName":931},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":933,"type":857,"items":934},"GitLabが活躍する場所",[935,941,947],{"text":936,"config":937},"大企業",{"icon":938,"href":939,"dataGaLocation":806,"dataGaName":940},"Building","/ja-jp/enterprise/","enterprise",{"text":942,"config":943},"スモールビジネス",{"icon":944,"href":945,"dataGaLocation":806,"dataGaName":946},"Work","/ja-jp/small-business/","small business",{"text":948,"config":949},"公共部門",{"icon":950,"href":951,"dataGaLocation":806,"dataGaName":952},"Organization","/ja-jp/solutions/public-sector/","public sector",{"text":954,"config":955},"価格",{"href":956,"dataGaName":957,"dataGaLocation":806,"dataNavLevelOne":957},"/ja-jp/pricing/","pricing",{"text":959,"config":960,"menu":962},"関連リソース",{"dataNavLevelOne":961},"resources",{"type":857,"link":963,"columns":967,"feature":1061},{"text":964,"config":965},"すべてのリソースを表示",{"href":966,"dataGaName":961,"dataGaLocation":806},"/ja-jp/resources/",[968,1001,1028],{"title":969,"items":970},"はじめに",[971,976,981,986,991,996],{"text":972,"config":973},"インストール",{"href":974,"dataGaName":975,"dataGaLocation":806},"/ja-jp/install/","install",{"text":977,"config":978},"クイックスタートガイド",{"href":979,"dataGaName":980,"dataGaLocation":806},"/ja-jp/get-started/","quick setup checklists",{"text":982,"config":983},"学ぶ",{"href":984,"dataGaLocation":806,"dataGaName":985},"https://university.gitlab.com/","learn",{"text":987,"config":988},"製品ドキュメント",{"href":989,"dataGaName":990,"dataGaLocation":806},"https://docs.gitlab.com/ja-jp/","product documentation",{"text":992,"config":993},"ベストプラクティスビデオ",{"href":994,"dataGaName":995,"dataGaLocation":806},"/ja-jp/getting-started-videos/","best practice videos",{"text":997,"config":998},"インテグレーション",{"href":999,"dataGaName":1000,"dataGaLocation":806},"/ja-jp/integrations/","integrations",{"title":1002,"items":1003},"検索する",[1004,1009,1014,1019,1023],{"text":1005,"config":1006},"お客様成功事例",{"href":1007,"dataGaName":1008,"dataGaLocation":806},"/ja-jp/customers/","customer success stories",{"text":1010,"config":1011},"ブログ",{"href":1012,"dataGaName":1013,"dataGaLocation":806},"/ja-jp/blog/","blog",{"text":1015,"config":1016},"Demo Hub",{"href":1017,"dataGaName":1018,"dataGaLocation":806},"/ja-jp/demo-hub/","demo hub",{"text":1020,"config":1021},"The Source",{"href":1022,"dataGaName":1013,"dataGaLocation":806},"/ja-jp/the-source/",{"text":1024,"config":1025},"リモート",{"href":1026,"dataGaName":1027,"dataGaLocation":806},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1029,"items":1030},"つなげる",[1031,1036,1041,1046,1051,1056],{"text":1032,"config":1033},"GitLabサービス",{"href":1034,"dataGaName":1035,"dataGaLocation":806},"/ja-jp/services/","services",{"text":1037,"config":1038},"コントリビュート",{"href":1039,"dataGaName":1040,"dataGaLocation":806},"https://contributors.gitlab.com","contribute",{"text":1042,"config":1043},"コミュニティ",{"href":1044,"dataGaName":1045,"dataGaLocation":806},"/community/","community",{"text":1047,"config":1048},"フォーラム",{"href":1049,"dataGaName":1050,"dataGaLocation":806},"https://forum.gitlab.com/","forum",{"text":1052,"config":1053},"イベント",{"href":1054,"dataGaName":1055,"dataGaLocation":806},"/events/","events",{"text":1057,"config":1058},"パートナー",{"href":1059,"dataGaName":1060,"dataGaLocation":806},"/ja-jp/partners/","partners",{"config":1062,"title":1065,"text":1066,"link":1067},{"background":1063,"textColor":1064},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","GitLabの最新情報","最新の機能と改善点に関する情報をお届けします。",{"text":1068,"config":1069},"最新情報を読む",{"href":1070,"dataGaName":1071,"dataGaLocation":806},"/ja-jp/whats-new/","whats new",{"text":1073,"config":1074,"menu":1076},"企業情報",{"dataNavLevelOne":1075},"company",{"type":857,"columns":1077},[1078],{"items":1079},[1080,1085,1091,1093,1098,1103,1108,1113,1118,1123],{"text":1081,"config":1082},"GitLabについて",{"href":1083,"dataGaName":1084,"dataGaLocation":806},"/ja-jp/company/","about",{"text":1086,"config":1087,"footerGa":1090},"採用情報",{"href":1088,"dataGaName":1089,"dataGaLocation":806},"/jobs/","jobs",{"dataGaName":1089},{"text":1052,"config":1092},{"href":1054,"dataGaName":1055,"dataGaLocation":806},{"text":1094,"config":1095},"経営陣",{"href":1096,"dataGaName":1097,"dataGaLocation":806},"/company/team/e-group/","leadership",{"text":1099,"config":1100},"ハンドブック",{"href":1101,"dataGaName":1102,"dataGaLocation":806},"https://handbook.gitlab.com/","handbook",{"text":1104,"config":1105},"投資家向け情報",{"href":1106,"dataGaName":1107,"dataGaLocation":806},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1109,"config":1110},"トラストセンター",{"href":1111,"dataGaName":1112,"dataGaLocation":806},"/ja-jp/security/","trust center",{"text":1114,"config":1115},"AI Transparency Center",{"href":1116,"dataGaName":1117,"dataGaLocation":806},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":1119,"config":1120},"ニュースレター",{"href":1121,"dataGaName":1122,"dataGaLocation":806},"/company/contact/#contact-forms","newsletter",{"text":1124,"config":1125},"プレス",{"href":1126,"dataGaName":1127,"dataGaLocation":806},"/press/","press",{"text":1129,"config":1130,"menu":1131},"お問い合わせ",{"dataNavLevelOne":1075},{"type":857,"columns":1132},[1133],{"items":1134},[1135,1140,1145],{"text":1136,"config":1137},"お問い合わせはこちら",{"href":1138,"dataGaName":1139,"dataGaLocation":806},"/ja-jp/sales/","talk to sales",{"text":1141,"config":1142},"サポートを受ける",{"href":1143,"dataGaName":1144,"dataGaLocation":806},"https://support.gitlab.com/hc/en-us","support portal",{"text":1146,"config":1147},"カスタマーポータル",{"href":1148,"dataGaName":1149,"dataGaLocation":806},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1151,"login":1152,"suggestions":1159},"閉じる",{"text":1153,"link":1154},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":1155,"config":1156},"GitLab.com",{"href":820,"dataGaName":1157,"dataGaLocation":1158},"search login","search",{"text":1160,"default":1161},"提案",[1162,1164,1169,1171,1175,1179],{"text":837,"config":1163},{"href":842,"dataGaName":837,"dataGaLocation":1158},{"text":1165,"config":1166},"コード提案（AI）",{"href":1167,"dataGaName":1168,"dataGaLocation":1158},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":795,"config":1170},{"href":874,"dataGaName":795,"dataGaLocation":1158},{"text":1172,"config":1173},"GitLab on AWS",{"href":1174,"dataGaName":1172,"dataGaLocation":1158},"/ja-jp/partners/technology-partners/aws/",{"text":1176,"config":1177},"GitLab on Google Cloud",{"href":1178,"dataGaName":1176,"dataGaLocation":1158},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":1180,"config":1181},"GitLabを選ぶ理由",{"href":850,"dataGaName":1182,"dataGaLocation":1158},"Why GitLab?",{"freeTrial":1184,"mobileIcon":1188,"desktopIcon":1193,"secondaryButton":1196},{"text":808,"config":1185},{"href":1186,"dataGaName":811,"dataGaLocation":1187},"https://gitlab.com/-/trials/new/","nav",{"altText":1189,"config":1190},"GitLabアイコン",{"src":1191,"dataGaName":1192,"dataGaLocation":1187},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1189,"config":1194},{"src":1195,"dataGaName":1192,"dataGaLocation":1187},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":969,"config":1197},{"href":1198,"dataGaName":1199,"dataGaLocation":1187},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":1201,"mobileIcon":1205,"desktopIcon":1207},{"text":1202,"config":1203},"GitLab Duoの詳細について",{"href":842,"dataGaName":1204,"dataGaLocation":1187},"gitlab duo",{"altText":1189,"config":1206},{"src":1191,"dataGaName":1192,"dataGaLocation":1187},{"altText":1189,"config":1208},{"src":1195,"dataGaName":1192,"dataGaLocation":1187},{"button":1210,"mobileIcon":1215,"desktopIcon":1217},{"text":1211,"config":1212},"/switch",{"href":1213,"dataGaName":1214,"dataGaLocation":1187},"#contact","switch",{"altText":1189,"config":1216},{"src":1191,"dataGaName":1192,"dataGaLocation":1187},{"altText":1189,"config":1218},{"src":1219,"dataGaName":1192,"dataGaLocation":1187},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1221,"mobileIcon":1226,"desktopIcon":1228},{"text":1222,"config":1223},"料金ページに戻る",{"href":956,"dataGaName":1224,"dataGaLocation":1187,"icon":1225},"back to pricing","GoBack",{"altText":1189,"config":1227},{"src":1191,"dataGaName":1192,"dataGaLocation":1187},{"altText":1189,"config":1229},{"src":1195,"dataGaName":1192,"dataGaLocation":1187},{"title":1231,"button":1232,"config":1236},"GitLab Orbitが登場: AIエージェントのためのコンテキストレイヤー",{"text":848,"config":1233},{"href":1234,"dataGaName":1235,"dataGaLocation":806},"/ja-jp/gitlab-orbit/","orbit",{"layout":54,"disabled":781},{"data":1238},{"text":1239,"source":1240,"edit":1246,"contribute":1251,"config":1256,"items":1261,"minimal":1468},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":1241,"config":1242},"ページのソースを表示",{"href":1243,"dataGaName":1244,"dataGaLocation":1245},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1247,"config":1248},"このページを編集",{"href":1249,"dataGaName":1250,"dataGaLocation":1245},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1252,"config":1253},"ご協力をお願いします",{"href":1254,"dataGaName":1255,"dataGaLocation":1245},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1257,"facebook":1258,"youtube":1259,"linkedin":1260},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1262,1307,1358,1401,1435],{"title":954,"links":1263,"subMenu":1278},[1264,1268,1273],{"text":1265,"config":1266},"プランの表示",{"href":956,"dataGaName":1267,"dataGaLocation":1245},"view plans",{"text":1269,"config":1270},"Premiumを選ぶ理由",{"href":1271,"dataGaName":1272,"dataGaLocation":1245},"/ja-jp/pricing/premium/","why premium",{"text":1274,"config":1275},"Ultimateを選ぶ理由",{"href":1276,"dataGaName":1277,"dataGaLocation":1245},"/ja-jp/pricing/ultimate/","why ultimate",[1279],{"title":1129,"links":1280},[1281,1283,1285,1287,1292,1297,1302],{"text":1129,"config":1282},{"href":1138,"dataGaName":816,"dataGaLocation":1245},{"text":1141,"config":1284},{"href":1143,"dataGaName":1144,"dataGaLocation":1245},{"text":1146,"config":1286},{"href":1148,"dataGaName":1149,"dataGaLocation":1245},{"text":1288,"config":1289},"ステータス",{"href":1290,"dataGaName":1291,"dataGaLocation":1245},"https://status.gitlab.com/","status",{"text":1293,"config":1294},"利用規約",{"href":1295,"dataGaName":1296,"dataGaLocation":1245},"/terms/","terms of use",{"text":1298,"config":1299},"プライバシーに関する声明",{"href":1300,"dataGaName":1301,"dataGaLocation":1245},"/ja-jp/privacy/","privacy statement",{"text":1303,"config":1304},"Cookie 優先設定",{"dataGaName":1305,"dataGaLocation":1245,"id":1306,"isOneTrustButton":320},"cookie preferences","ot-sdk-btn",{"title":853,"links":1308,"subMenu":1317},[1309,1313],{"text":1310,"config":1311},"DevSecOpsプラットフォーム",{"href":835,"dataGaName":1312,"dataGaLocation":1245},"devsecops platform",{"text":1314,"config":1315},"AI支援開発",{"href":842,"dataGaName":1316,"dataGaLocation":1245},"ai-assisted development",[1318],{"title":1319,"links":1320},"トピック",[1321,1325,1330,1334,1339,1343,1348,1353],{"text":795,"config":1322},{"href":1323,"dataGaName":1324,"dataGaLocation":1245},"/ja-jp/topics/ci-cd/","cicd",{"text":1326,"config":1327},"GitOps",{"href":1328,"dataGaName":1329,"dataGaLocation":1245},"/ja-jp/topics/gitops/","gitops",{"text":796,"config":1331},{"href":1332,"dataGaName":1333,"dataGaLocation":1245},"/ja-jp/topics/devops/","devops",{"text":1335,"config":1336},"バージョン管理",{"href":1337,"dataGaName":1338,"dataGaLocation":1245},"/ja-jp/topics/version-control/","version control",{"text":797,"config":1340},{"href":1341,"dataGaName":1342,"dataGaLocation":1245},"/ja-jp/topics/devsecops/","devsecops",{"text":1344,"config":1345},"クラウドネイティブ",{"href":1346,"dataGaName":1347,"dataGaLocation":1245},"/ja-jp/topics/cloud-native/","cloud native",{"text":1349,"config":1350},"コーディングのためのAI",{"href":1351,"dataGaName":1352,"dataGaLocation":1245},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":1354,"config":1355},"エージェント型AI",{"href":1356,"dataGaName":1357,"dataGaLocation":1245},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":1359,"links":1360},"ソリューション",[1361,1364,1366,1371,1375,1378,1381,1384,1386,1388,1391,1396],{"text":897,"config":1362},{"href":892,"dataGaName":1363,"dataGaLocation":1245},"Application Security Testing",{"text":884,"config":1365},{"href":869,"dataGaName":870,"dataGaLocation":1245},{"text":1367,"config":1368},"アジャイル開発",{"href":1369,"dataGaName":1370,"dataGaLocation":1245},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":1372,"config":1373},"SCM",{"href":881,"dataGaName":1374,"dataGaLocation":1245},"source code management",{"text":795,"config":1376},{"href":874,"dataGaName":1377,"dataGaLocation":1245},"continuous integration & delivery",{"text":923,"config":1379},{"href":925,"dataGaName":1380,"dataGaLocation":1245},"value stream management",{"text":1326,"config":1382},{"href":1383,"dataGaName":1329,"dataGaLocation":1245},"/ja-jp/solutions/gitops/",{"text":936,"config":1385},{"href":939,"dataGaName":940,"dataGaLocation":1245},{"text":942,"config":1387},{"href":945,"dataGaName":946,"dataGaLocation":1245},{"text":1389,"config":1390},"公共機関",{"href":951,"dataGaName":952,"dataGaLocation":1245},{"text":1392,"config":1393},"教育",{"href":1394,"dataGaName":1395,"dataGaLocation":1245},"/ja-jp/solutions/education/","education",{"text":1397,"config":1398},"金融サービス",{"href":1399,"dataGaName":1400,"dataGaLocation":1245},"/ja-jp/solutions/finance/","financial services",{"title":1402,"links":1403},"リソース",[1404,1406,1408,1410,1414,1416,1419,1421,1423,1425,1427,1429,1431,1433],{"text":972,"config":1405},{"href":974,"dataGaName":975,"dataGaLocation":1245},{"text":977,"config":1407},{"href":979,"dataGaName":980,"dataGaLocation":1245},{"text":982,"config":1409},{"href":984,"dataGaName":985,"dataGaLocation":1245},{"text":987,"config":1411},{"href":1412,"dataGaName":1413,"dataGaLocation":1245},"https://docs.gitlab.com/ja-jp","docs",{"text":1010,"config":1415},{"href":1012,"dataGaName":1013,"dataGaLocation":1245},{"text":1417,"config":1418},"最新リリース",{"href":1070,"dataGaName":1071,"dataGaLocation":1245},{"text":1005,"config":1420},{"href":1007,"dataGaName":1008,"dataGaLocation":1245},{"text":1024,"config":1422},{"href":1026,"dataGaName":1027,"dataGaLocation":1245},{"text":1032,"config":1424},{"href":1034,"dataGaName":1035,"dataGaLocation":1245},{"text":1037,"config":1426},{"href":1039,"dataGaName":1040,"dataGaLocation":1245},{"text":1042,"config":1428},{"href":1044,"dataGaName":1045,"dataGaLocation":1245},{"text":1047,"config":1430},{"href":1049,"dataGaName":1050,"dataGaLocation":1245},{"text":1052,"config":1432},{"href":1054,"dataGaName":1055,"dataGaLocation":1245},{"text":1057,"config":1434},{"href":1059,"dataGaName":1060,"dataGaLocation":1245},{"title":1436,"links":1437},"会社情報",[1438,1440,1442,1444,1446,1448,1452,1457,1459,1461,1463],{"text":1081,"config":1439},{"href":1083,"dataGaName":1075,"dataGaLocation":1245},{"text":1086,"config":1441},{"href":1088,"dataGaName":1089,"dataGaLocation":1245},{"text":1094,"config":1443},{"href":1096,"dataGaName":1097,"dataGaLocation":1245},{"text":1099,"config":1445},{"href":1101,"dataGaName":1102,"dataGaLocation":1245},{"text":1104,"config":1447},{"href":1106,"dataGaName":1107,"dataGaLocation":1245},{"text":1449,"config":1450},"Sustainability",{"href":1451,"dataGaName":1449,"dataGaLocation":1245},"/sustainability/",{"text":1453,"config":1454},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":1455,"dataGaName":1456,"dataGaLocation":1245},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1109,"config":1458},{"href":1111,"dataGaName":1112,"dataGaLocation":1245},{"text":1119,"config":1460},{"href":1121,"dataGaName":1122,"dataGaLocation":1245},{"text":1124,"config":1462},{"href":1126,"dataGaName":1127,"dataGaLocation":1245},{"text":1464,"config":1465},"現代奴隷制の透明性に関する声明",{"href":1466,"dataGaName":1467,"dataGaLocation":1245},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1469},[1470,1472,1475],{"text":1293,"config":1471},{"href":1295,"dataGaName":1296,"dataGaLocation":1245},{"text":1473,"config":1474},"Cookieの設定",{"dataGaName":1305,"dataGaLocation":1245,"id":1306,"isOneTrustButton":320},{"text":1298,"config":1476},{"href":1300,"dataGaName":1301,"dataGaLocation":1245},[1478],{"id":1479,"title":7,"body":780,"config":1480,"content":1482,"description":780,"extension":1486,"meta":1487,"navigation":320,"path":1488,"seo":1489,"stem":1490,"__hash__":1491},"blogAuthors/en-us/blog/authors/ben-ridley.yml",{"template":1481},"BlogAuthor",{"name":7,"config":1483},{"headshot":1484,"ctfId":1485},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659973/Blog/Author%20Headshots/bridley-headshot.jpg","bridley","yml",{},"/en-us/blog/authors/ben-ridley",{},"en-us/blog/authors/ben-ridley","jzbrM-xtuSS5JZxX-wev-ipXW7XmcYogOOxnbq1GSrs",[1493,1501,1509],{"title":1494,"description":1495,"heroImage":1496,"category":777,"date":1497,"authors":1498,"slug":1500,"externalUrl":780},"「作業アイテム作成」トリガーで割り当てを自動化する方法","作業アイテムの割り当てを手作業なしで瞬時に行うAI機能について、順を追って解説するガイドです。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773866173/vte9qh8rriznvyclhkes.png","2026-07-20",[1499],"Cesar Saavedra","how-to-use-a-work-item-created-trigger",{"title":1502,"description":1503,"heroImage":1504,"category":777,"date":1505,"authors":1506,"slug":1508,"externalUrl":780},"GitLab 19.2リリース","GitLab 19.2でリリースした最新機能を公開します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1783980535/t3gez0gpayfndrhncunf.png","2026-07-16",[1507],"GitLab Japan Team","gitlab-19-2-release",{"title":1510,"description":1511,"heroImage":1512,"category":777,"date":1513,"authors":1514,"slug":1517,"externalUrl":780},"GitLabの制限付きアクセスが進化。シート超過を防ぎ、コストを予測可能に","GitLabの制限付きアクセス機能が、シートの超過を防ぎ、ID プロバイダーと連携し、 ライセンスコストを予測しやすくする仕組みについて解説します。\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774375772/kpaaaiqhokevxxeoxvu0.png","2026-07-06",[1515,1516],"Magdalena Frankiewicz","Priyanka Palanikumar","gitlab-restricted-access-improvements",{"promotions":1519},[1520,1534,1545,1557],{"id":1521,"categories":1522,"header":1524,"text":1525,"button":1526,"image":1531},"ai-modernization",[1523],"ai","AIの真価、組織全体で発揮できていますか？","所要時間は5分以内です",{"text":1527,"config":1528},"AI成熟度スコアを確認する",{"href":1529,"dataGaName":1530,"dataGaLocation":1013},"/ja-jp/assessments/ai-modernization-assessment/","modernization assessment",{"config":1532},{"src":1533},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1535,"categories":1536,"header":1537,"text":1525,"button":1538,"image":1542},"devops-modernization",[777,1342],"単にツールを管理するだけでなく、イノベーションを提供していますか？",{"text":1539,"config":1540},"DevOps成熟度スコアを確認しましょう",{"href":1541,"dataGaName":1530,"dataGaLocation":1013},"/ja-jp/assessments/devops-modernization-assessment/",{"config":1543},{"src":1544},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1546,"categories":1547,"header":1549,"text":1525,"button":1550,"image":1554},"security-modernization",[1548],"security","スピードのためにセキュリティを犠牲にしていませんか？",{"text":1551,"config":1552},"セキュリティ成熟度スコアを確認しましょう",{"href":1553,"dataGaName":1530,"dataGaLocation":1013},"/ja-jp/assessments/security-modernization-assessment/",{"config":1555},{"src":1556},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1558,"paths":1559,"header":1562,"text":1563,"button":1564,"image":1569},"github-azure-migration",[1560,1561],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","チームはGitHubのAzure移行に対応できていますか？","GitHubはすでにAzureを基盤として再構築を進めています。それがあなたのチームにとって何を意味するのか、ご確認ください。",{"text":1565,"config":1566},"GitLabとGitHubの比較を見る",{"href":1567,"dataGaName":1568,"dataGaLocation":1013},"/ja-jp/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1570},{"src":1544},{"header":1572,"blurb":1573,"button":1574,"secondaryButton":1578},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":808,"config":1575},{"href":1576,"dataGaName":811,"dataGaLocation":1577},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":1129,"config":1579},{"href":1138,"dataGaName":816,"dataGaLocation":1577},1786803770666]