[{"data":1,"prerenderedAt":2385},["ShallowReactive",2],{"/ja-jp/blog/jenkins-to-gitlab-migration-made-easy":3,"navigation-ja-jp":1607,"banner-ja-jp":2036,"footer-ja-jp":2044,"blog-post-authors-ja-jp-Fernando Diaz":2284,"blog-related-posts-ja-jp-jenkins-to-gitlab-migration-made-easy":2299,"blog-promotions-ja-jp":2322,"next-steps-ja-jp":2376},{"id":4,"title":5,"authors":6,"body":8,"category":1586,"date":1587,"description":1588,"extension":1589,"externalUrl":1590,"faq":1590,"featured":697,"heroImage":1591,"meta":1592,"navigation":697,"path":1593,"seo":1594,"slug":1599,"stem":1600,"tags":1601,"template":1604,"updatedDate":1605,"__hash__":1606},"blogPosts/ja-jp/blog/jenkins-to-gitlab-migration-made-easy.md","JenkinsからGitLabへのスムーズな移行",[7],"Fernando Diaz",{"type":9,"value":10,"toc":1574},"minimark",[11,15,18,43,51,61,64,78,82,85,102,105,108,111,114,141,144,182,185,188,191,241,244,247,250,290,299,303,306,309,374,381,396,419,422,431,463,479,546,549,562,565,572,575,584,588,591,594,597,600,640,649,652,1229,1232,1240,1249,1252,1257,1269,1279,1287,1294,1302,1309,1318,1323,1330,1335,1342,1347,1354,1358,1369,1376,1401,1408,1411,1418,1421,1428,1435,1442,1445,1447,1450,1483,1491,1494,1503,1506,1549,1552,1554,1570],[12,13,14],"p",{},"GitLabは、最も包括的なAI搭載のDevSecOpsプラットフォームです。GitLabには、ソフトウェアの計画、開発、セキュリティ確保、迅速なリリースに必要な機能がすべて揃っています。",[12,16,17],{},"プラットフォームを活用することで、さまざまなツールの統合（DIY DevOps）に苦労することなく、ソフトウェア開発ライフサイクル（SDLC）を実現できます。一方、Jenkinsはプラットフォームではないため、SDLCを実現させるには他のツールと組み合わせる必要があります。このようなDIY DevOpsのアプローチではツールチェーンの複雑さが増し、以下のようなデメリットが生じます。",[19,20,21,25,28,31,34,37,40],"ul",{},[22,23,24],"li",{},"ツールの統合やオーケストレーションに特別なサポートが必要",[22,26,27],{},"個々のツールの保守、アップグレード、セキュリティ対策の負担が大きい",[22,29,30],{},"組織における変革の進捗を正確に把握しづらい",[22,32,33],{},"デベロッパーエクスペリエンスが悪化する",[22,35,36],{},"管理コスト、時間、予算がかかる",[22,38,39],{},"生産性が低下する",[22,41,42],{},"頭の切り替えが必要となり、コラボレーションの効率が下がる",[12,44,45],{},[46,47],"img",{"alt":48,"src":49,"title":50},"Import project selection","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752175993/Blog/ikr97sr9jclddeqdg7ew.png","DIY DevOpsとDevSecOpsプラットフォームの比較",[12,52,53,54,60],{},"こうした理由から、Jenkinsを使用する多くのチームがDevSecOpsプラットフォームへの移行を検討しています。より強力で、信頼性と安全性の高いソリューションを求めているなら、GitLabが最適です。GitLabは無料で使い始められ、組織のニーズに応じたさまざまなサブスクリプションプランが用意されています。GitLab のプランや機能の詳細については、",[55,56,59],"a",{"href":57,"rel":58},"https://about.gitlab.com/ja-jp/pricing/",[],"価格ページ","をご覧ください。",[12,62,63],{},"このブログ記事では、以下について学べます。",[19,65,66,69,72,75],{},[22,67,68],{},"移行計画の立て方",[22,70,71],{},"他のソースコード管理（SCM）ツールからGitLabへリポジトリを移行する方法",[22,73,74],{},"JenkinsからGitLabへCI/CDパイプラインを移行する方法",[22,76,77],{},"移行に関するその他の考慮事項",[79,80,81],"h3",{"id":81},"移行計画を立てる",[12,83,84],{},"他のツールからGitLab CI/CDへ移行を開始する前に、まず移行計画を立てる必要があります。移行計画は、期待値を明確にするための重要な技術的ステップです。CI/CDツールは、それぞれアプローチや構造、技術的な仕様が異なるため、単純にデータを1対1でマッピングできるわけではありません。適切な移行計画を立てることでもたらされるメリットを次に挙げます。",[19,86,87,90,93,96,99],{},[22,88,89],{},"移行の目的を明確にして共有することで、なぜ移行が価値のある取り組みなのかをユーザーに理解してもらいやすくなります。作業が完了すればその価値は明らかになりますが、移行中の段階においても認識してもらうことが重要です。",[22,91,92],{},"関係する経営陣の支援や合意が得られ、移行の重要性や目的が全員に伝わりやすくなります。",[22,94,95],{},"移行後の環境の違いについて、ユーザーが理解を深める時間を確保できます。",[22,97,98],{},"移行の順序を決めたり、一部の移行を後回しにしたりすることで、未移行や部分的な移行状態が長引くのを防ぎます。",[22,100,101],{},"GitLab CI/CDにより得られる改善点やメリットを文書化し、移行の一環として既存の実装を更新できます。",[12,103,104],{},"適切な移行計画を策定することで、業務への影響を最小限に抑えながら、GitLabへ徐々に移行できます。具体的には、JenkinsとGitLabを併用しつつ、一部のプロジェクトをGitLabに移し、Jenkinsの利用を徐々に減らしていくといった計画が考えられます。",[79,106,107],{"id":107},"変更管理プロセスを定める",[12,109,110],{},"移行計画では、効果的な変更管理プロセスを定める必要があります。デベロッパー、IT運用担当者、クラウド管理者、セキュリティ担当者、品質エンジニアなどの関係者は、GitLabの使用経験がなく、なぜあなたや経営陣がこの移行を決定したのかを理解していないかもしれません。",[12,112,113],{},"この移行によって影響を受ける人々に、以下の点を理解してもらう必要があります。",[19,115,116,123,129,135],{},[22,117,118,122],{},[119,120,121],"strong",{},"なぜ","：この変更が行われるのか",[22,124,125,128],{},[119,126,127],{},"何が","：移行後の状態として想定されているのか",[22,130,131,134],{},[119,132,133],{},"どのように","：現在の状況から移行後の状態にするのか",[22,136,137,140],{},[119,138,139],{},"どこで","：追加の情報やサポートを得られるのか",[12,142,143],{},"移行の影響を受ける各部門のへの影響を理解し、その変化を管理するには、以下の手順が必要です。",[19,145,146,152,158,176],{},[22,147,148,151],{},[119,149,150],{},"現在の状況を分析する","：まず、現在のプロセスを文書化し、基準となる指標を収集します。次に、主要なチームメンバーへのインタビューを通じて、CI/CDにおいてうまく機能している点と機能していない点を特定します。課題を特定したら、定量的、定性的の両面から記録します。移行のビジョンと変更の理由を関係者に理解してもらう必要があるため、課題は明確に定義すればするほど、社内の合意を得やすくなります。",[22,153,154,157],{},[119,155,156],{},"ビジョンを確立する","：現在の課題を、定量的な基準値と定性的なチームメンバーのフィードバックで明確にしたら、次に将来のビジョンを共有します。ビジネスの成功指標と結びつけて、なぜこの移行が重要なのかを説明します。また、望ましい状態の具体的な例をライブデモや録画を通じて示し、現在の状況と比較します。さらに、このメッセージを定着させるために、チャットグループ、全社ミーティング、メール通知、GitLab上のバナーメッセージなど、複数のチャネルやメディアを活用して発信します。",[22,159,160,163,164,169,170,175],{},[119,161,162],{},"従業員を教育する","：GitLabの専門家が実施する",[55,165,168],{"href":166,"rel":167},"https://university.gitlab.com/pages/ci-cd-training/",[],"GitLab CI/CDトレーニング","に投資し、",[55,171,174],{"href":172,"rel":173},"https://levelup.edcast.com/pages/certifications",[],"GitLab認定","を活用して、知識の習得度や定着度を測定します。",[22,177,178,181],{},[119,179,180],{},"ロードマップとリソースを共有する","：チームメンバーに対し、移行の予定タイムラインや、移行に役立つリソースを案内します。また、チャットグループ、Q&Aボード、GitLabインフルエンサーによるオフィスアワーなど、コミュニティのリソースも案内し、質問に対する回答やサポートを得られる環境を整えます。さらに、早期に移行したチームを対象とした報酬制度を導入して、移行体験を他のアプリケーショングループと共有してもらうのも効果的です。",[12,183,184],{},"移行の開始時にこれらの要素が揃っていれば、成功へ向けたしっかりとした基盤を築けます。",[79,186,187],{"id":187},"移行目標を設定する",[12,189,190],{},"移行を実施する前に、目標とそれを達成する方法をしっかりと把握しておく必要があります。たとえば、以下のような質問に対する答えを用意しておくことが重要です。",[19,192,193,196,199,202,205,208,211,214,217,220,223,226,229,232,235,238],{},[22,194,195],{},"移行のタイムラインはどのようになっているのか？",[22,197,198],{},"現在のJenkinsサーバーの構成はどうなっているか？",[22,200,201],{},"移行対象のプロジェクトはいくつあるか？",[22,203,204],{},"パイプラインの複雑さはどの程度か？",[22,206,207],{},"外部依存関係、複数のパイプライントリガー、並列ビルドなどが必要か？",[22,209,210],{},"コードのデプロイ方法とデプロイ先は？",[22,212,213],{},"デプロイするコードのリリースやレビューのプロセスはどのようになっているか？",[22,215,216],{},"Jenkinsに統合されているのか、それともJenkinsがトリガーする別のワークフローなのか？",[22,218,219],{},"パイプラインの成功に必要なビルドアーティファクトやバイナリは何か？",[22,221,222],{},"現在Jenkinsのジョブで使用しているプラグインは何か？",[22,224,225],{},"Jenkinsエージェントにインストールされているソフトウェアは何か？",[22,227,228],{},"現在使用しているSCMソリューションは何か？",[22,230,231],{},"Jenkinsのジョブで共有ライブラリを使用しているか？",[22,233,234],{},"Jenkinsで使用している認証方法は何か（Basic認証、LDAP/AD、SSOなど）？",[22,236,237],{},"パイプラインからアクセスする必要がある他のプロジェクトはあるか？",[22,239,240],{},"Jenkinsが外部サービスと連携する際に使用するアクセス用認証情報はあるか？",[12,242,243],{},"これらの質問に答えることで、移行の進め方、所要時間、どこから始めるべきかが明確になります。移行計画を立て、期待値や想定される課題をしっかり把握できたら、いよいよ移行プロセスの開始です。",[79,245,246],{"id":246},"移行の前提要件",[12,248,249],{},"移行計画を作成し、移行に関するすべての期待事項を整理できたら、GitLabのセットアップを開始できます。移行の前に推奨される前提要件をいくつかご紹介します。",[19,251,252,261,276,284,287],{},[22,253,254,255,260],{},"GitLabに慣れる。",[55,256,259],{"href":257,"rel":258},"https://docs.gitlab.com/ja-jp/ci/",[],"GitLab CI/CDの主な機能","を読んで理解を深める。",[22,262,263,264,269,270,275],{},"チュートリアルを活用し、最初の",[55,265,268],{"href":266,"rel":267},"https://docs.gitlab.com/ja-jp/ci/quick_start/",[],"GitLabパイプライン","と、静的サイトをビルド、テスト、デプロイする",[55,271,274],{"href":272,"rel":273},"https://docs.gitlab.com/ja-jp/ci/quick_start/tutorial/",[],"より複雑なパイプライン","を作成する。",[22,277,278,283],{},[55,279,282],{"href":280,"rel":281},"https://docs.gitlab.com/ja-jp/ci/yaml/",[],".gitlab-ci.ymlのキーワード参照","を確認する。",[22,285,286],{},"GitLabをセットアップし、適切に設定する。",[22,288,289],{},"GitLabインスタンスをテストする。",[12,291,292,293,298],{},"GitLabの理解を深め、インスタンスの設定が完了したら、移行計画に沿ってJenkinsからGitLabへのプロジェクト移行を進めることができます。その際、GitLabインスタンスがGitLabのベストプラクティスや",[55,294,297],{"href":295,"rel":296},"https://docs.gitlab.com/ja-jp/administration/reference_architectures/",[],"リファレンスアーキテクチャ","に従って適切に設定されていることを確認してください。",[79,300,302],{"id":301},"リポジトリをgitlabに移行する","リポジトリをGitLabに移行する",[12,304,305],{},"Jenkinsの主な欠点の1つは、SCMソリューションがないことです。Jenkinsを使用している場合、別のSCMソリューションにコードを保存し、そこにJenkinsからアクセスする必要があります。一方、GitLabにはSCMが組み込まれているため、Jenkinsからの移行に伴い、従来使用していたSCMソリューションからも移行でき、さらなるコスト削減につながります。",[12,307,308],{},"GitLabには、リポジトリやそのメタデータを簡単にGitLabへと移行できるツールが用意されています。プロジェクトをGitLabへ移行する際に活用できるインポーターは以下のとおりです。",[19,310,311,318,325,332,339,346,353,360,367],{},[22,312,313],{},[55,314,317],{"href":315,"rel":316},"https://docs.gitlab.com/ja-jp/user/project/import/github/",[],"GitHub",[22,319,320],{},[55,321,324],{"href":322,"rel":323},"https://docs.gitlab.com/ja-jp/user/project/settings/import_export/",[],"別のGitLabインスタンス",[22,326,327],{},[55,328,331],{"href":329,"rel":330},"https://docs.gitlab.com/ja-jp/user/import/bitbucket_cloud/",[],"Bitbucket Cloud",[22,333,334],{},[55,335,338],{"href":336,"rel":337},"https://docs.gitlab.com/ja-jp/user/import/bitbucket_server/",[],"Bitbucket Server",[22,340,341],{},[55,342,345],{"href":343,"rel":344},"https://docs.gitlab.com/ja-jp/user/project/import/fogbugz/",[],"FogBugz",[22,347,348],{},[55,349,352],{"href":350,"rel":351},"https://docs.gitlab.com/ja-jp/user/import/gitea/",[],"Gitea",[22,354,355],{},[55,356,359],{"href":357,"rel":358},"https://docs.gitlab.com/ja-jp/user/project/import/jira/",[],"Jira（イシューのみ）",[22,361,362],{},[55,363,366],{"href":364,"rel":365},"https://docs.gitlab.com/ja-jp/user/project/import/manifest/",[],"manifestファイルによるリポジトリのインポート",[22,368,369],{},[55,370,373],{"href":371,"rel":372},"https://docs.gitlab.com/ja-jp/user/project/import/repo_by_url/",[],"URLによるリポジトリのインポート",[12,375,376],{},[46,377],{"alt":378,"src":379,"title":380},"GitHub to GitLab Repo Exporter","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176002/Blog/ie2xrexhbcoq6m8rnhit.png","GitHubからGitLabへのリポジトリエクスポーター",[12,382,383,384,389,390,395],{},"各インポーターは、プロジェクトから異なる種類のデータをインポートします。インポーターによりGitLabへ移行できるデータの詳細については、",[55,385,388],{"href":386,"rel":387},"https://docs.gitlab.com/ja-jp/user/import/",[],"インポートとプロジェクトの移行に関するるドキュメント","を参照してください。さらに、",[55,391,394],{"href":392,"rel":393},"https://docs.gitlab.com/ja-jp/user/import/#automate-group-and-project-import",[],"グループやプロジェクトのインポートを自動化","したり、組織のニーズに合わせたカスタムソリューションを構築したりすることも可能です。",[19,397,398,405,412],{},[22,399,400],{},[55,401,404],{"href":402,"rel":403},"https://about.gitlab.com/ja-jp/services/",[],"プロフェッショナルサービス",[22,406,407],{},[55,408,411],{"href":409,"rel":410},"https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/-/blob/master/docs/using-congregate.md#quick-start",[],"移行ユーティリティ",[22,413,414],{},[55,415,418],{"href":416,"rel":417},"https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/-/blob/master/customer/famq.md",[],"移行に関するよくある質問",[79,420,421],{"id":421},"リポジトリを移行する方法",[12,423,424,425,430],{},"GitLabには組み込みのインポーターが用意されており、リポジトリの移行は簡単に行えます。例として、GitHubからGitLabへリポジトリをコピーし、",[55,426,429],{"href":427,"rel":428},"https://docs.gitlab.com/ja-jp/user/project/import/github/#imported-data",[],"そのリソース","（イシュー、プルリクエスト、マイルストーンなど）も含めて移行する方法をご紹介します。別のGitHubからGitLabへリポジトリを移行するには、以下の手順に従ってください。",[432,433,434,441,448,458],"ol",{},[22,435,436,437,440],{},"左側のサイドバーの上部で、",[119,438,439],{},"新規作成","（+）を選択します。",[22,442,443,444,447],{},"「GitLab」セクションで",[119,445,446],{},"新規プロジェクト/リポジトリ","を選択します。",[22,449,450,453,454],{},[119,451,452],{},"プロジェクトのインポート","を選択します。\n",[46,455],{"alt":48,"src":456,"title":457},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176017/Blog/boowmmaqhbredxa3g92s.png","インポートするプロジェクトの選択",[22,459,460,462],{},[119,461,317],{},"ボタンをクリックします。",[19,464,465],{},[22,466,467,468,473,474],{},"GitLab Self-Managedを使用している場合は、",[55,469,472],{"href":470,"rel":471},"https://docs.gitlab.com/ja-jp/administration/settings/import_and_export_settings/#configure-allowed-import-sources",[],"GitHubインポーターを有効にする"," 必要があります。\n",[19,475,476],{},[22,477,478],{},"他のインポーターも同様の方法で開始できます。",[432,480,482,529,534,537,540],{"start":481},5,[22,483,484,485],{},"次に、以下のいずれかの方法で認証します。\n",[19,486,487,493],{},[22,488,489,490,447],{},"GitHub OAuthで認証する場合：",[119,491,492],{},"GitHubで認証",[22,494,495,496],{},"GitHubのパーソナルアクセストークンを使う場合：\n",[19,497,498,505,511,514,521,526],{},[22,499,500,504],{},[55,501,502],{"href":502,"rel":503},"https://github.com/settings/tokens/new",[],"にアクセスします。",[22,506,507,510],{},[119,508,509],{},"ノート","フィールドにトークンの説明を入力します。",[22,512,513],{},"リポジトリスコープを選択します。",[22,515,516,517,520],{},"オプションとしてコラボレーターをインポートするには、",[119,518,519],{},"read:org","スコープを選択します。",[22,522,523,462],{},[119,524,525],{},"トークンの生成",[22,527,528],{},"GitLabのインポートページの「パーソナルアクセストークン」フィールドに、GitHubのパーソナルアクセストークンを貼り付けます。",[22,530,531,462],{},[119,532,533],{},"認証",[22,535,536],{},"移行するアイテムを選択します。",[22,538,539],{},"移行するプロジェクトと移行先を選択します。",[22,541,542,545],{},[119,543,544],{},"インポート","ボタンを押します。",[12,547,548],{},"これで、インポートされたプロジェクトがワークスペースに追加されます。GitHubからGitLabへの移行に関する詳しいガイドについては、こちらの動画をご覧ください。",[550,551,554,555],"figure",{"className":552},[553],"video_container","\n  ",[556,557,561],"iframe",{"src":558,"frameBorder":559,"allowFullScreen":560},"https://www.youtube.com/embed/0Id5oMl1Kqs?si=TQ5HI9aMwtzJMiMi","0","true"," ",[12,563,564],{},"リポジトリの移行が完了したら、JenkinsのパイプラインでGitLab内のJenkinsfileを活用できるように設定できます。これは、Jenkinsのパイプライン設定メニューから、新しくインポートしたプロジェクトのリポジトリURLを指定することで実行できます。",[12,566,567],{},[46,568],{"alt":569,"src":570,"title":571},"Jenkins Pipeline SCM settings","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176020/Blog/mu475liw66abcxbu2g6g.png","JenkinsパイプラインのSCM設定",[12,573,574],{},"の方法は、移行の初期段階でもJenkinsの既存の機能を維持しながらGitLabと並行して使用できるため、CI/CD機能の移行作業中にサービスが中断されるのを防げます。",[12,576,577,578,583],{},"さらに、",[55,579,582],{"href":580,"rel":581},"https://plugins.jenkins.io/gitlab-plugin/",[],"GitLab Jenkinsプラグイン","を活用することで、移行をスムーズに進めることができます。このプラグインを使用すると、GitLabからJenkinsのビルドをトリガーしたり、ビルドのステータスを取得したりできるようになります。",[79,585,587],{"id":586},"cicdパイプラインを移行する","CI/CDパイプラインを移行する",[12,589,590],{},"リポジトリの移行が完了したら、今度はJenkinsのパイプラインをGitLabへ移行できます。このプロセスは比較的シンプルですが、JenkinsとGitLabの両方の概念や構文を理解する必要があります。",[12,592,593],{},"Jenkinsには、パイプラインを定義するための構文として宣言型とスクリプト型の2種類があります。今回は、最も一般的に使用されている宣言型パイプラインからの移行方法を解説します。",[79,595,596],{"id":596},"パイプラインを段階的に移行する",[12,598,599],{},"このチュートリアルでは、Jenkinsfile（Groovy）とGitLab CI/CDの設定ファイル（YAML）を比較しながら、Go言語で書かれたマイクロサービスをビルド、テスト、デプロイする方法を分析します。その後、GitLabでパイプラインを有効化し、実際の動作を確認します。このパイプラインは以下の処理を行います。",[19,601,602,608,616,619],{},[22,603,604,607],{},[119,605,606],{},"alpine","タグ付きのGo言語コンテナイメージを使用する",[22,609,610,611],{},"Go言語のコードを実行可能なバイナリにビルドするジョブを実行する\n",[19,612,613],{},[22,614,615],{},"ビルドしたバイナリをアーティファクトとして保存する",[22,617,618],{},"ユニットテストを実行するジョブを実行する",[22,620,621,622],{},"stagingステージにデプロイするジョブを実行する\n",[19,623,624,631,637],{},[22,625,626,627,630],{},"コミットが",[119,628,629],{},"staging","ブランチに向けたものである場合のみ実行される",[22,632,633,636],{},[119,634,635],{},"test","ステージが成功した後に開始される",[22,638,639],{},"以前のジョブで作成された実行可能なバイナリアーティファクトを使用する",[12,641,642,643,648],{},"以下に、JenkinsとGitLabのパイプライン定義とコメントを示します。実際のパイプラインの動作は",[55,644,647],{"href":645,"rel":646},"https://gitlab.com/gitlab-da/projects/blogs/meow-migration",[],"Meow Migrationプロジェクト","で確認できます。",[12,650,651],{},"では、Groovyで記述されたJenkinsfileを見ていきましょう。",[653,654,659],"pre",{"className":655,"code":656,"language":657,"meta":658,"style":658},"language-shell shiki shiki-themes github-light","// 宣言型パイプラインの\n// トップレベルを定義します。\npipeline {\n\n  // ジョブ内で明示的に定義されていない場合に\n  // デフォルトで使用するエージェントを\n  // 指定します。\n    agent any\n\n  // 数値順に実行される\n  // ステージを定義します。各ステージは\n  // 1つのジョブのみを実行します。\n    stages {\n\n    // ステージの名前を定義します。\n        stage('build') {\n      // このジョブで使用する\n      // コンテナイメージを定義し、\n      //デフォルトの'agent any'を上書きします。\n      // 実行にはJenkins Docker\n      // プラグインの設定が\n      // 必要です。\n            agent { docker 'golang:alpine' }\n\n      // ステージが実行される際に\n      // 実行する処理の順序を\n      // 定義します。\n            steps {\n                sh 'go build -o bin/meow-micro'\n                sh 'chmod +x bin/meow-micro'\n            }\n\n      // ステージ完了後に\n      // 実行する処理を定義します。\n            post {\n              always {\n\n        // 他のジョブで使用するために\n        // ステージアーティファクトを\n        // 保存します。\n                archiveArtifacts artifacts: 'bin/meow-micro'\n                onlyIfSuccessful: true\n              }\n            }\n        }\n\n    stage('test') {\n            agent { docker 'golang:alpine' }\n            steps {\n                sh 'go test .'\n            }\n        }\n\n        stage('deploy') {\n      // このジョブを\n      // 実行するための\n      // 条件を定義します。この場合、\n      // stagingブランチでのみ\n      // デプロイジョブが実行されます。\n            when {\n              branch 'staging'\n            }\n            steps {\n                echo 'Deploying meow-micro to staging'\n        // buildステージで保存した\n        // アーティファクトを使用します。\n                sh './bin/meow-micro'\n            }\n        }\n    }\n}\n","shell","",[660,661,662,675,683,692,699,707,715,723,732,737,745,753,761,769,774,783,796,805,813,825,836,844,852,870,875,883,891,899,907,916,924,930,935,943,951,959,967,972,981,989,997,1009,1019,1025,1030,1036,1041,1052,1065,1072,1080,1085,1090,1095,1105,1113,1121,1129,1137,1145,1153,1162,1167,1174,1183,1191,1199,1207,1212,1217,1223],"code",{"__ignoreMap":658},[663,664,667,671],"span",{"class":665,"line":666},"line",1,[663,668,670],{"class":669},"s7eDp","//",[663,672,674],{"class":673},"sYBdl"," 宣言型パイプラインの\n",[663,676,678,680],{"class":665,"line":677},2,[663,679,670],{"class":669},[663,681,682],{"class":673}," トップレベルを定義します。\n",[663,684,686,689],{"class":665,"line":685},3,[663,687,688],{"class":669},"pipeline",[663,690,691],{"class":673}," {\n",[663,693,695],{"class":665,"line":694},4,[663,696,698],{"emptyLinePlaceholder":697},true,"\n",[663,700,701,704],{"class":665,"line":481},[663,702,703],{"class":669},"  //",[663,705,706],{"class":673}," ジョブ内で明示的に定義されていない場合に\n",[663,708,710,712],{"class":665,"line":709},6,[663,711,703],{"class":669},[663,713,714],{"class":673}," デフォルトで使用するエージェントを\n",[663,716,718,720],{"class":665,"line":717},7,[663,719,703],{"class":669},[663,721,722],{"class":673}," 指定します。\n",[663,724,726,729],{"class":665,"line":725},8,[663,727,728],{"class":669},"    agent",[663,730,731],{"class":673}," any\n",[663,733,735],{"class":665,"line":734},9,[663,736,698],{"emptyLinePlaceholder":697},[663,738,740,742],{"class":665,"line":739},10,[663,741,703],{"class":669},[663,743,744],{"class":673}," 数値順に実行される\n",[663,746,748,750],{"class":665,"line":747},11,[663,749,703],{"class":669},[663,751,752],{"class":673}," ステージを定義します。各ステージは\n",[663,754,756,758],{"class":665,"line":755},12,[663,757,703],{"class":669},[663,759,760],{"class":673}," 1つのジョブのみを実行します。\n",[663,762,764,767],{"class":665,"line":763},13,[663,765,766],{"class":669},"    stages",[663,768,691],{"class":673},[663,770,772],{"class":665,"line":771},14,[663,773,698],{"emptyLinePlaceholder":697},[663,775,777,780],{"class":665,"line":776},15,[663,778,779],{"class":669},"    //",[663,781,782],{"class":673}," ステージの名前を定義します。\n",[663,784,786,789,792],{"class":665,"line":785},16,[663,787,788],{"class":669},"        stage(",[663,790,791],{"class":669},"'build'",[663,793,795],{"class":794},"sgsFI",") {\n",[663,797,799,802],{"class":665,"line":798},17,[663,800,801],{"class":669},"      //",[663,803,804],{"class":673}," このジョブで使用する\n",[663,806,808,810],{"class":665,"line":807},18,[663,809,801],{"class":669},[663,811,812],{"class":673}," コンテナイメージを定義し、\n",[663,814,816,819,822],{"class":665,"line":815},19,[663,817,818],{"class":669},"      //デフォルトの",[663,820,821],{"class":669},"'agent any'",[663,823,824],{"class":669},"を上書きします。\n",[663,826,828,830,833],{"class":665,"line":827},20,[663,829,801],{"class":669},[663,831,832],{"class":673}," 実行にはJenkins",[663,834,835],{"class":673}," Docker\n",[663,837,839,841],{"class":665,"line":838},21,[663,840,801],{"class":669},[663,842,843],{"class":673}," プラグインの設定が\n",[663,845,847,849],{"class":665,"line":846},22,[663,848,801],{"class":669},[663,850,851],{"class":673}," 必要です。\n",[663,853,855,858,861,864,867],{"class":665,"line":854},23,[663,856,857],{"class":669},"            agent",[663,859,860],{"class":673}," {",[663,862,863],{"class":673}," docker",[663,865,866],{"class":673}," 'golang:alpine'",[663,868,869],{"class":673}," }\n",[663,871,873],{"class":665,"line":872},24,[663,874,698],{"emptyLinePlaceholder":697},[663,876,878,880],{"class":665,"line":877},25,[663,879,801],{"class":669},[663,881,882],{"class":673}," ステージが実行される際に\n",[663,884,886,888],{"class":665,"line":885},26,[663,887,801],{"class":669},[663,889,890],{"class":673}," 実行する処理の順序を\n",[663,892,894,896],{"class":665,"line":893},27,[663,895,801],{"class":669},[663,897,898],{"class":673}," 定義します。\n",[663,900,902,905],{"class":665,"line":901},28,[663,903,904],{"class":669},"            steps",[663,906,691],{"class":673},[663,908,910,913],{"class":665,"line":909},29,[663,911,912],{"class":669},"                sh",[663,914,915],{"class":673}," 'go build -o bin/meow-micro'\n",[663,917,919,921],{"class":665,"line":918},30,[663,920,912],{"class":669},[663,922,923],{"class":673}," 'chmod +x bin/meow-micro'\n",[663,925,927],{"class":665,"line":926},31,[663,928,929],{"class":794},"            }\n",[663,931,933],{"class":665,"line":932},32,[663,934,698],{"emptyLinePlaceholder":697},[663,936,938,940],{"class":665,"line":937},33,[663,939,801],{"class":669},[663,941,942],{"class":673}," ステージ完了後に\n",[663,944,946,948],{"class":665,"line":945},34,[663,947,801],{"class":669},[663,949,950],{"class":673}," 実行する処理を定義します。\n",[663,952,954,957],{"class":665,"line":953},35,[663,955,956],{"class":669},"            post",[663,958,691],{"class":673},[663,960,962,965],{"class":665,"line":961},36,[663,963,964],{"class":669},"              always",[663,966,691],{"class":673},[663,968,970],{"class":665,"line":969},37,[663,971,698],{"emptyLinePlaceholder":697},[663,973,975,978],{"class":665,"line":974},38,[663,976,977],{"class":669},"        //",[663,979,980],{"class":673}," 他のジョブで使用するために\n",[663,982,984,986],{"class":665,"line":983},39,[663,985,977],{"class":669},[663,987,988],{"class":673}," ステージアーティファクトを\n",[663,990,992,994],{"class":665,"line":991},40,[663,993,977],{"class":669},[663,995,996],{"class":673}," 保存します。\n",[663,998,1000,1003,1006],{"class":665,"line":999},41,[663,1001,1002],{"class":669},"                archiveArtifacts",[663,1004,1005],{"class":673}," artifacts:",[663,1007,1008],{"class":673}," 'bin/meow-micro'\n",[663,1010,1012,1015],{"class":665,"line":1011},42,[663,1013,1014],{"class":669},"                onlyIfSuccessful:",[663,1016,1018],{"class":1017},"sYu0t"," true\n",[663,1020,1022],{"class":665,"line":1021},43,[663,1023,1024],{"class":794},"              }\n",[663,1026,1028],{"class":665,"line":1027},44,[663,1029,929],{"class":794},[663,1031,1033],{"class":665,"line":1032},45,[663,1034,1035],{"class":794},"        }\n",[663,1037,1039],{"class":665,"line":1038},46,[663,1040,698],{"emptyLinePlaceholder":697},[663,1042,1044,1047,1050],{"class":665,"line":1043},47,[663,1045,1046],{"class":669},"    stage(",[663,1048,1049],{"class":669},"'test'",[663,1051,795],{"class":794},[663,1053,1055,1057,1059,1061,1063],{"class":665,"line":1054},48,[663,1056,857],{"class":669},[663,1058,860],{"class":673},[663,1060,863],{"class":673},[663,1062,866],{"class":673},[663,1064,869],{"class":673},[663,1066,1068,1070],{"class":665,"line":1067},49,[663,1069,904],{"class":669},[663,1071,691],{"class":673},[663,1073,1075,1077],{"class":665,"line":1074},50,[663,1076,912],{"class":669},[663,1078,1079],{"class":673}," 'go test .'\n",[663,1081,1083],{"class":665,"line":1082},51,[663,1084,929],{"class":794},[663,1086,1088],{"class":665,"line":1087},52,[663,1089,1035],{"class":794},[663,1091,1093],{"class":665,"line":1092},53,[663,1094,698],{"emptyLinePlaceholder":697},[663,1096,1098,1100,1103],{"class":665,"line":1097},54,[663,1099,788],{"class":669},[663,1101,1102],{"class":669},"'deploy'",[663,1104,795],{"class":794},[663,1106,1108,1110],{"class":665,"line":1107},55,[663,1109,801],{"class":669},[663,1111,1112],{"class":673}," このジョブを\n",[663,1114,1116,1118],{"class":665,"line":1115},56,[663,1117,801],{"class":669},[663,1119,1120],{"class":673}," 実行するための\n",[663,1122,1124,1126],{"class":665,"line":1123},57,[663,1125,801],{"class":669},[663,1127,1128],{"class":673}," 条件を定義します。この場合、\n",[663,1130,1132,1134],{"class":665,"line":1131},58,[663,1133,801],{"class":669},[663,1135,1136],{"class":673}," stagingブランチでのみ\n",[663,1138,1140,1142],{"class":665,"line":1139},59,[663,1141,801],{"class":669},[663,1143,1144],{"class":673}," デプロイジョブが実行されます。\n",[663,1146,1148,1151],{"class":665,"line":1147},60,[663,1149,1150],{"class":669},"            when",[663,1152,691],{"class":673},[663,1154,1156,1159],{"class":665,"line":1155},61,[663,1157,1158],{"class":669},"              branch",[663,1160,1161],{"class":673}," 'staging'\n",[663,1163,1165],{"class":665,"line":1164},62,[663,1166,929],{"class":794},[663,1168,1170,1172],{"class":665,"line":1169},63,[663,1171,904],{"class":669},[663,1173,691],{"class":673},[663,1175,1177,1180],{"class":665,"line":1176},64,[663,1178,1179],{"class":1017},"                echo",[663,1181,1182],{"class":673}," 'Deploying meow-micro to staging'\n",[663,1184,1186,1188],{"class":665,"line":1185},65,[663,1187,977],{"class":669},[663,1189,1190],{"class":673}," buildステージで保存した\n",[663,1192,1194,1196],{"class":665,"line":1193},66,[663,1195,977],{"class":669},[663,1197,1198],{"class":673}," アーティファクトを使用します。\n",[663,1200,1202,1204],{"class":665,"line":1201},67,[663,1203,912],{"class":669},[663,1205,1206],{"class":673}," './bin/meow-micro'\n",[663,1208,1210],{"class":665,"line":1209},68,[663,1211,929],{"class":794},[663,1213,1215],{"class":665,"line":1214},69,[663,1216,1035],{"class":794},[663,1218,1220],{"class":665,"line":1219},70,[663,1221,1222],{"class":794},"    }\n",[663,1224,1226],{"class":665,"line":1225},71,[663,1227,1228],{"class":794},"}\n",[12,1230,1231],{},"では、同じ機能をGitLabで作成する方法について見ていきましょう。",[653,1233,1238],{"className":1234,"code":1236,"language":1237,"meta":658},[1235],"language-text","# ジョブ内で明示的に定義されていない場合に\n# デフォルトで使用するイメージを\n# 指定します。\ndefault:\n  image: alpine:latest\n\n# 実行するステージの順序を定義します。\n# 各ステージには複数のジョブを含めることができます。\nstages:\n  - build\n  - test\n  - deploy\n\n# ジョブ名を定義します。\ncreate-binary:\n # このジョブが実行されるステージを定義します。\n  stage: build\n # このジョブで使用するコンテナイメージを定義し、\n # デフォルトの設定を上書きします。\n  image: golang:alpine\n # ジョブ実行時に実行する\n # 一連の手順を定義します。\n  script:\n    - go build -o bin/meow-micro\n    - chmod +x bin/meow-micro\n # 他のジョブで使用するために\n # ジョブのアーティファクトを保存します。\n  artifacts:\n    paths:\n      - bin/meow-micro\n    expire_in: 1 week\n\nunit-tests:\n  stage: test\n  image: golang:alpine\n  script:\n    - go test .\n # ジョブの実行後に実行するコマンドを\n # 定義します。\n after_script:\n  - echo \"Tests Complete\"\n\nstaging-deploy:\n  stage: deploy\n # ジョブの実行前に実行するコマンドを\n # 定義します。\n  before_script:\n    - apk update\n  script:\n    - echo \"Deploying meow-micro to staging environment\"\n    - ./bin/meow-micro\n # このジョブが実行される\n # 条件を定義します。この\n # 場合、stagingブランチでのみ\n # staging-deployジョブが実行されます。\n  rules:\n    - if: $CI_COMMIT_BRANCH == 'staging'\n # buildジョブで保存されたアーティファクトを\n # このジョブで使用できるようにします。\n  artifacts:\n    paths:\n      - bin/meow-micro\n\n","text",[660,1239,1236],{"__ignoreMap":658},[12,1241,1242,1243,1248],{},"ご覧のとおり、JenkinsとGitLabの構文には多くの共通点があり、パイプラインの移行は比較的簡単です。ここでは基本的な例を紹介しましたが、両ツールの詳しい",[55,1244,1247],{"href":1245,"rel":1246},"https://docs.gitlab.com/ja-jp/ci/migration/jenkins/#comparison-of-features-ad-concepts",[],"機能や概念の比較","もぜひご確認ください。",[12,1250,1251],{},"JenkinsからGitLabへのマッピング方法を理解したところで、GitLabで同じ機能を持つパイプラインの作成を始めましょう。以下の手順でCI/CDを移行できます。",[1253,1254,1256],"h5",{"id":1255},"_1-先程gitlabに移行したリポジトリを開きます","1. 先程GitLabに移行したリポジトリを開きます。",[19,1258,1259,1266],{},[22,1260,1261,1262,1265],{},"左側のサイドバー上部で",[119,1263,1264],{},"検索または移動先…"," を選択します。",[22,1267,1268],{},"プロジェクトを検索し、開きます。",[1253,1270,1272,1273,1278],{"id":1271},"_2-パイプラインエディタを開きます","2. ",[55,1274,1277],{"href":1275,"rel":1276},"https://docs.gitlab.com/ja-jp/ci/pipeline_editor/",[],"パイプラインエディタ","を開きます。",[19,1280,1281],{},[22,1282,1283,1284,447],{},"左側のサイドバーから",[119,1285,1286],{},"ビルド > パイプラインエディタ",[12,1288,1289],{},[46,1290],{"alt":1291,"src":1292,"title":1293},"Pipeline editor menu","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176026/Blog/ecp4jh7epho2oxuegaor.png","パイプラインエディタのメニュー",[19,1295,1296],{},[22,1297,1298,1301],{},[119,1299,1300],{},"パイプラインの設定"," ボタンをクリックします。",[12,1303,1304],{},[46,1305],{"alt":1306,"src":1307,"title":1308},"Configure pipeline selection","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176029/Blog/nypfh01zhwgvzqc0xz3v.png","「パイプラインの設定」を選択",[1253,1310,1312,1313,1317],{"id":1311},"_3-gitlab-ciymlに入力します","3. ",[55,1314,1316],{"href":280,"rel":1315},[],".gitlab-ci.yml","に入力します。",[19,1319,1320],{},[22,1321,1322],{},"GitLab CIのパイプラインコードを追加します。",[12,1324,1325],{},[46,1326],{"alt":1327,"src":1328,"title":1329},"Pipeline editor input","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176031/Blog/nxi6uxxispyyoiiyvxyg.png","パイプラインエディタへの入力",[19,1331,1332],{},[22,1333,1334],{},"構文が正しいか検証します。",[12,1336,1337],{},[46,1338],{"alt":1339,"src":1340,"title":1341},"Pipeline syntax validation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176037/Blog/x3d4utfsnymye0lvphtf.png","パイプライン構文の検証",[19,1343,1344],{},[22,1345,1346],{},"パイプラインの構造を視覚化して確認します。",[12,1348,1349],{},[46,1350],{"alt":1351,"src":1352,"title":1353},"Pipeline visualization","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176043/Blog/hipzofpyywjxf62edzfv.png","パイプラインの視覚化",[1253,1355,1357],{"id":1356},"_4-ファイルをmainブランチにコミットします","4. ファイルをmainブランチにコミットします。",[19,1359,1360,1363,1366],{},[22,1361,1362],{},"コミットメッセージを追加します。",[22,1364,1365],{},"ブランチがmainになっていることを確認します。",[22,1367,1368],{},"「変更をコミットする」ボタンをクリックします。",[12,1370,1371],{},[46,1372],{"alt":1373,"src":1374,"title":1375},"Commit changes dialog","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176048/Blog/nn8bl7rdysabccoycfrk.png","「変更をコミットする」のダイアログ",[12,1377,1378,1379,1382,1383,1388,1389,1392,1393,1396,1397,1400],{},"ファイルがマージされると、定義されたパイプラインが実行されます。プロジェクトページの",[119,1380,1381],{},"ビルド > パイプライン","から、実行中の",[55,1384,1387],{"href":1385,"rel":1386},"https://docs.gitlab.com/ja-jp/ci/pipelines/#view-pipelines",[],"パイプラインを確認","できます。今回は",[119,1390,1391],{},"main","ブランチで実行されているため、",[119,1394,1395],{},"create-binary","とunit-testsのジョブのみが表示されます。",[119,1398,1399],{},"staging-deploy","のジョブは、stagingブランチでのみ実行されます。",[12,1402,1403],{},[46,1404],{"alt":1405,"src":1406,"title":1407},"Pipeline running on main branch","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176051/Blog/wfb4k8nkzpg28kpf2pzz.png","mainブランチで実行中のパイプライン",[12,1409,1410],{},"stagingブランチを作成すると、以下のパイプラインが開始されるのを確認できます。",[12,1412,1413],{},[46,1414],{"alt":1415,"src":1416,"title":1417},"Pipeline running on staging branch","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176053/Blog/e2jxedpolaniotgixpby.png","stagingブランチで実行中のパイプライン",[12,1419,1420],{},"ジョブをクリックすると、その出力を確認できます。",[12,1422,1423],{},[46,1424],{"alt":1425,"src":1426,"title":1427},"create-binary job output","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176056/Blog/fywzwbzkwcvc9zzakilh.png","create-binaryジョブの出力",[12,1429,1430],{},[46,1431],{"alt":1432,"src":1433,"title":1434},"unit-tests job output input","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176061/Blog/ekmpd8ecanwwiena9xi9.png","unit-testsジョブの出力",[12,1436,1437],{},[46,1438],{"alt":1439,"src":1440,"title":1441},"staging-deploy job output","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176065/Blog/h7nqxszy50xdmnvhalfq.png","staging-deployジョブの出力",[12,1443,1444],{},"このように、create-binaryジョブで保存されたアーティファクトが、staging-deployジョブで使用されることが確認できます。これだけの手順で、JenkinsのパイプラインをスムーズにGitLabへ移行できます！",[79,1446,77],{"id":77},[12,1448,1449],{},"デプロイプロセスをよりシンプルにするために役立つポイントとして、以下の点を考慮することをおすすめします。",[19,1451,1452,1455,1462,1471,1474,1477,1480],{},[22,1453,1454],{},"タスクをそのまま1:1でGitLabのジョブに移行しようとしない：既存のパイプラインが何を行っているのか、どのような問題を解決しているのかを整理し、理解する時間を確保することが重要です。",[22,1456,1457,1458,1461],{},"一部のJenkinsジョブは複雑すぎてすぐにGitLabに移行できない場合がある：そのため、",[55,1459,582],{"href":580,"rel":1460},[],"を活用し、JenkinsのパイプラインをGitLabから直接起動し、結果を表示できるようにするとよいでしょう。これにより、一部の処理を徐々にGitLabに移行し、最終的にパイプライン全体をGitLabへ統合できます。",[22,1463,1464,1465,1470],{},"GitLabが提供する組み込みテンプレートを活用し、",[55,1466,1469],{"href":1467,"rel":1468},"https://docs.gitlab.com/ja-jp/user/application_security/",[],"セキュリティスキャナーやコード品質チェック","を最初から導入する：これにより、セキュリティのシフトレフトを行い、漏洩のリスクを低減できます。\nまた、CI/CDの設定を過度に複雑にしないようにし、すべての機能を一度に活用しようとするのではなく、コードをモジュール化し、複数の小さなステップに分けて導入するようにしてください。",[22,1472,1473],{},"モニタリングとガバナンスを最初から実装する。",[22,1475,1476],{},"GitLab Runner（Go）はJenkinsエージェント（Java）とは動作が異なる可能性があることを理解する：CPU使用率やメモリ消費量が異なる可能性があるため、時間をかけて比較しながら調整する必要があります。",[22,1478,1479],{},"自動スケーリングの導入を検討し、週末や業務時間外に不要なリソースをシャットダウンすることを検討する。",[22,1481,1482],{},"ジョブのコンテナ化を進め、アプリケーション開発をモダナイズする：現在ではJenkinsのジョブはコンテナ上ではなく、仮想マシン（VM）として動作するJenkinsエージェント上で実行されます。",[12,1484,1485,1486,1490],{},"このリストはすべての考慮事項を網羅しているわけではありませんが、移行を進めるうえで重要なポイントを押さえています。さらにサポートが必要な場合は、GitLabの",[55,1487,404],{"href":1488,"rel":1489},"https://about.gitlab.com/ja-jp/get-help/",[],"を活用し、移行プロセスをスムーズに進めることも可能です。",[79,1492,1493],{"id":1493},"関連リンク",[12,1495,1496,1497,1502],{},"ここまでお読みいただきありがとうございます！本ガイドが、JenkinsからGitLabへ移行するメリットと手順を理解する助けとなれば幸いです。まだ迷っている方は、ぜひ",[55,1498,1501],{"href":1499,"rel":1500},"https://about.gitlab.com/ja-jp/free-trial/",[],"GitLabの無料トライアル","でDevSecOpsプラットフォームの価値を実感してください！",[12,1504,1505],{},"さらに詳しく知りたい方のために、GitLabの機能やDevSecOpsプラットフォームのメリット、Jenkinsからの移行に関する情報を学べるリソースをいくつかご紹介します。",[19,1507,1508,1515,1522,1528,1535,1542],{},[22,1509,1510],{},[55,1511,1514],{"href":1512,"rel":1513},"https://docs.gitlab.com/ja-jp/ci/migration/jenkins/",[],"Jenkinsからの移行（英語）",[22,1516,1517],{},[55,1518,1521],{"href":1519,"rel":1520},"https://docs.gitlab.com/ja-jp/ci/migration/plan_a_migration/",[],"移行計画の立て方（英語）",[22,1523,1524],{},[55,1525,1527],{"href":386,"rel":1526},[],"GitLabプロジェクトインポーター（英語）",[22,1529,1530],{},[55,1531,1534],{"href":1532,"rel":1533},"https://about.gitlab.com/blog/github-to-gitlab-migration-made-easy/",[],"チュートリアル：簡単にできるGitHubからGitLabへの移行（英語）",[22,1536,1537],{},[55,1538,1541],{"href":1539,"rel":1540},"https://youtu.be/0Id5oMl1Kqs?feature=shared",[],"動画：簡単にできるGitHubからGitLabへの移行（英語）",[22,1543,1544],{},[55,1545,1548],{"href":1546,"rel":1547},"https://about.gitlab.com/blog/jenkins-gitlab-ultimate-guide-to-modernizing-cicd-environment/",[],"JenkinsからGitLabへ: CI/CD環境をモダナイズするための究極ガイド（英語）",[1550,1551],"br",{},[1550,1553],{},[12,1555,1556,1568],{},[1557,1558,1559,1560,1565,1567],"em",{},"監修：小松原 つかさ  ",[55,1561,1564],{"href":1562,"rel":1563},"https://gitlab.com/tkomatsubara",[],"@tkomatsubara",[1550,1566],{},"\n（GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト）",[1550,1569],{},[1571,1572,1573],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}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);}",{"title":658,"searchDepth":677,"depth":677,"links":1575},[1576,1577,1578,1579,1580,1581,1582,1583,1584,1585],{"id":81,"depth":685,"text":81},{"id":107,"depth":685,"text":107},{"id":187,"depth":685,"text":187},{"id":246,"depth":685,"text":246},{"id":301,"depth":685,"text":302},{"id":421,"depth":685,"text":421},{"id":586,"depth":685,"text":587},{"id":596,"depth":685,"text":596},{"id":77,"depth":685,"text":77},{"id":1493,"depth":685,"text":1493},"devsecops","2024-02-01","JenkinsからGitLabへ移行するメリットと簡単に行える移行手順を分かりやすく解説します。","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663019/Blog/Hero%20Images/AdobeStock_519147119.jpg",{},"/ja-jp/blog/jenkins-to-gitlab-migration-made-easy",{"title":5,"description":1588,"ogTitle":5,"ogDescription":1588,"noIndex":1595,"ogImage":1591,"ogUrl":1596,"ogSiteName":1597,"ogType":1598,"canonicalUrls":1596},false,"https://about.gitlab.com/blog/jenkins-to-gitlab-migration-made-easy","https://about.gitlab.com","article","jenkins-to-gitlab-migration-made-easy","ja-jp/blog/jenkins-to-gitlab-migration-made-easy",[1602,1603],"CI/CD","DevSecOps","BlogPost","2025-04-15","u6CcxAAli5qPx6CJobtw9m9E2le8kazCcUh52xbS4i4",{"logo":1608,"freeTrial":1613,"sales":1618,"login":1623,"items":1628,"search":1956,"minimal":1989,"duo":2006,"switchNav":2015,"pricingDeployment":2026},{"config":1609},{"href":1610,"dataGaName":1611,"dataGaLocation":1612},"/ja-jp/","gitlab logo","header",{"text":1614,"config":1615},"無料トライアルを開始",{"href":1616,"dataGaName":1617,"dataGaLocation":1612},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":1619,"config":1620},"デモをリクエスト",{"href":1621,"dataGaName":1622,"dataGaLocation":1612},"/ja-jp/sales/?contact-topic=request-demo","sales",{"text":1624,"config":1625},"サインイン",{"href":1626,"dataGaName":1627,"dataGaLocation":1612},"https://gitlab.com/users/sign_in/","sign in",[1629,1658,1759,1764,1878,1934],{"text":1630,"config":1631,"menu":1633},"プラットフォーム",{"dataNavLevelOne":1632},"platform",{"type":1634,"columns":1635},"cards",[1636,1642,1650],{"title":1630,"description":1637,"link":1638},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":1639,"config":1640},"プラットフォームの詳細はこちら",{"href":1641,"dataGaName":1632,"dataGaLocation":1612},"/ja-jp/platform/",{"title":1643,"description":1644,"link":1645},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":1646,"config":1647},"GitLab Duoのご紹介",{"href":1648,"dataGaName":1649,"dataGaLocation":1612},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1651,"description":1652,"link":1653},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":1654,"config":1655},"詳細はこちら",{"href":1656,"dataGaName":1657,"dataGaLocation":1612},"/ja-jp/why-gitlab/","why gitlab",{"text":1659,"left":697,"config":1660,"menu":1662},"製品",{"dataNavLevelOne":1661},"solutions",{"type":1663,"link":1664,"columns":1668,"feature":1738},"lists",{"text":1665,"config":1666},"すべてのソリューションを表示",{"href":1667,"dataGaName":1661,"dataGaLocation":1612},"/ja-jp/solutions/",[1669,1693,1716],{"title":1670,"description":1671,"link":1672,"items":1677},"自動化","CI/CDと自動化でデプロイを加速",{"config":1673},{"icon":1674,"href":1675,"dataGaName":1676,"dataGaLocation":1612},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[1678,1681,1684,1689],{"text":1602,"config":1679},{"href":1680,"dataGaLocation":1612,"dataGaName":1602},"/ja-jp/solutions/continuous-integration/",{"text":1643,"config":1682},{"href":1648,"dataGaLocation":1612,"dataGaName":1683},"gitlab duo agent platform - product menu",{"text":1685,"config":1686},"ソースコード管理",{"href":1687,"dataGaLocation":1612,"dataGaName":1688},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":1690,"config":1691},"自動化されたソフトウェアデリバリー",{"href":1675,"dataGaLocation":1612,"dataGaName":1692},"Automated software delivery",{"title":1694,"description":1695,"link":1696,"items":1701},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":1697},{"href":1698,"dataGaName":1699,"dataGaLocation":1612,"icon":1700},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1702,1706,1711],{"text":1703,"config":1704},"アプリケーションセキュリティテスト",{"href":1698,"dataGaName":1705,"dataGaLocation":1612},"Application security testing",{"text":1707,"config":1708},"ソフトウェアサプライチェーンセキュリティ",{"href":1709,"dataGaLocation":1612,"dataGaName":1710},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":1712,"config":1713},"ソフトウェアコンプライアンス",{"href":1714,"dataGaName":1715,"dataGaLocation":1612},"/ja-jp/solutions/software-compliance/","software compliance",{"title":1717,"link":1718,"items":1723},"測定",{"config":1719},{"icon":1720,"href":1721,"dataGaName":1722,"dataGaLocation":1612},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[1724,1728,1733],{"text":1725,"config":1726},"可視性と測定",{"href":1721,"dataGaLocation":1612,"dataGaName":1727},"Visibility and Measurement",{"text":1729,"config":1730},"バリューストリーム管理",{"href":1731,"dataGaLocation":1612,"dataGaName":1732},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":1734,"config":1735},"分析とインサイト",{"href":1736,"dataGaLocation":1612,"dataGaName":1737},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":1739,"type":1663,"items":1740},"GitLabが活躍する場所",[1741,1747,1753],{"text":1742,"config":1743},"大企業",{"icon":1744,"href":1745,"dataGaLocation":1612,"dataGaName":1746},"Building","/ja-jp/enterprise/","enterprise",{"text":1748,"config":1749},"スモールビジネス",{"icon":1750,"href":1751,"dataGaLocation":1612,"dataGaName":1752},"Work","/ja-jp/small-business/","small business",{"text":1754,"config":1755},"公共部門",{"icon":1756,"href":1757,"dataGaLocation":1612,"dataGaName":1758},"Organization","/ja-jp/solutions/public-sector/","public sector",{"text":1760,"config":1761},"価格",{"href":1762,"dataGaName":1763,"dataGaLocation":1612,"dataNavLevelOne":1763},"/ja-jp/pricing/","pricing",{"text":1765,"config":1766,"menu":1768},"関連リソース",{"dataNavLevelOne":1767},"resources",{"type":1663,"link":1769,"columns":1773,"feature":1867},{"text":1770,"config":1771},"すべてのリソースを表示",{"href":1772,"dataGaName":1767,"dataGaLocation":1612},"/ja-jp/resources/",[1774,1807,1834],{"title":1775,"items":1776},"はじめに",[1777,1782,1787,1792,1797,1802],{"text":1778,"config":1779},"インストール",{"href":1780,"dataGaName":1781,"dataGaLocation":1612},"/ja-jp/install/","install",{"text":1783,"config":1784},"クイックスタートガイド",{"href":1785,"dataGaName":1786,"dataGaLocation":1612},"/ja-jp/get-started/","quick setup checklists",{"text":1788,"config":1789},"学ぶ",{"href":1790,"dataGaLocation":1612,"dataGaName":1791},"https://university.gitlab.com/","learn",{"text":1793,"config":1794},"製品ドキュメント",{"href":1795,"dataGaName":1796,"dataGaLocation":1612},"https://docs.gitlab.com/ja-jp/","product documentation",{"text":1798,"config":1799},"ベストプラクティスビデオ",{"href":1800,"dataGaName":1801,"dataGaLocation":1612},"/ja-jp/getting-started-videos/","best practice videos",{"text":1803,"config":1804},"インテグレーション",{"href":1805,"dataGaName":1806,"dataGaLocation":1612},"/ja-jp/integrations/","integrations",{"title":1808,"items":1809},"検索する",[1810,1815,1820,1825,1829],{"text":1811,"config":1812},"お客様成功事例",{"href":1813,"dataGaName":1814,"dataGaLocation":1612},"/ja-jp/customers/","customer success stories",{"text":1816,"config":1817},"ブログ",{"href":1818,"dataGaName":1819,"dataGaLocation":1612},"/ja-jp/blog/","blog",{"text":1821,"config":1822},"Demo Hub",{"href":1823,"dataGaName":1824,"dataGaLocation":1612},"/ja-jp/demo-hub/","demo hub",{"text":1826,"config":1827},"The Source",{"href":1828,"dataGaName":1819,"dataGaLocation":1612},"/ja-jp/the-source/",{"text":1830,"config":1831},"リモート",{"href":1832,"dataGaName":1833,"dataGaLocation":1612},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1835,"items":1836},"つなげる",[1837,1842,1847,1852,1857,1862],{"text":1838,"config":1839},"GitLabサービス",{"href":1840,"dataGaName":1841,"dataGaLocation":1612},"/ja-jp/services/","services",{"text":1843,"config":1844},"コントリビュート",{"href":1845,"dataGaName":1846,"dataGaLocation":1612},"https://contributors.gitlab.com","contribute",{"text":1848,"config":1849},"コミュニティ",{"href":1850,"dataGaName":1851,"dataGaLocation":1612},"/community/","community",{"text":1853,"config":1854},"フォーラム",{"href":1855,"dataGaName":1856,"dataGaLocation":1612},"https://forum.gitlab.com/","forum",{"text":1858,"config":1859},"イベント",{"href":1860,"dataGaName":1861,"dataGaLocation":1612},"/events/","events",{"text":1863,"config":1864},"パートナー",{"href":1865,"dataGaName":1866,"dataGaLocation":1612},"/ja-jp/partners/","partners",{"config":1868,"title":1871,"text":1872,"link":1873},{"background":1869,"textColor":1870},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","GitLabの最新情報","最新の機能と改善点に関する情報をお届けします。",{"text":1874,"config":1875},"最新情報を読む",{"href":1876,"dataGaName":1877,"dataGaLocation":1612},"/ja-jp/whats-new/","whats new",{"text":1879,"config":1880,"menu":1882},"企業情報",{"dataNavLevelOne":1881},"company",{"type":1663,"columns":1883},[1884],{"items":1885},[1886,1891,1897,1899,1904,1909,1914,1919,1924,1929],{"text":1887,"config":1888},"GitLabについて",{"href":1889,"dataGaName":1890,"dataGaLocation":1612},"/ja-jp/company/","about",{"text":1892,"config":1893,"footerGa":1896},"採用情報",{"href":1894,"dataGaName":1895,"dataGaLocation":1612},"/jobs/","jobs",{"dataGaName":1895},{"text":1858,"config":1898},{"href":1860,"dataGaName":1861,"dataGaLocation":1612},{"text":1900,"config":1901},"経営陣",{"href":1902,"dataGaName":1903,"dataGaLocation":1612},"/company/team/e-group/","leadership",{"text":1905,"config":1906},"ハンドブック",{"href":1907,"dataGaName":1908,"dataGaLocation":1612},"https://handbook.gitlab.com/","handbook",{"text":1910,"config":1911},"投資家向け情報",{"href":1912,"dataGaName":1913,"dataGaLocation":1612},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1915,"config":1916},"トラストセンター",{"href":1917,"dataGaName":1918,"dataGaLocation":1612},"/ja-jp/security/","trust center",{"text":1920,"config":1921},"AI Transparency Center",{"href":1922,"dataGaName":1923,"dataGaLocation":1612},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":1925,"config":1926},"ニュースレター",{"href":1927,"dataGaName":1928,"dataGaLocation":1612},"/company/contact/#contact-forms","newsletter",{"text":1930,"config":1931},"プレス",{"href":1932,"dataGaName":1933,"dataGaLocation":1612},"/press/","press",{"text":1935,"config":1936,"menu":1937},"お問い合わせ",{"dataNavLevelOne":1881},{"type":1663,"columns":1938},[1939],{"items":1940},[1941,1946,1951],{"text":1942,"config":1943},"お問い合わせはこちら",{"href":1944,"dataGaName":1945,"dataGaLocation":1612},"/ja-jp/sales/","talk to sales",{"text":1947,"config":1948},"サポートを受ける",{"href":1949,"dataGaName":1950,"dataGaLocation":1612},"https://support.gitlab.com/hc/en-us","support portal",{"text":1952,"config":1953},"カスタマーポータル",{"href":1954,"dataGaName":1955,"dataGaLocation":1612},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1957,"login":1958,"suggestions":1965},"閉じる",{"text":1959,"link":1960},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":1961,"config":1962},"GitLab.com",{"href":1626,"dataGaName":1963,"dataGaLocation":1964},"search login","search",{"text":1966,"default":1967},"提案",[1968,1970,1975,1977,1981,1985],{"text":1643,"config":1969},{"href":1648,"dataGaName":1643,"dataGaLocation":1964},{"text":1971,"config":1972},"コード提案（AI）",{"href":1973,"dataGaName":1974,"dataGaLocation":1964},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1602,"config":1976},{"href":1680,"dataGaName":1602,"dataGaLocation":1964},{"text":1978,"config":1979},"GitLab on AWS",{"href":1980,"dataGaName":1978,"dataGaLocation":1964},"/ja-jp/partners/technology-partners/aws/",{"text":1982,"config":1983},"GitLab on Google Cloud",{"href":1984,"dataGaName":1982,"dataGaLocation":1964},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":1986,"config":1987},"GitLabを選ぶ理由",{"href":1656,"dataGaName":1988,"dataGaLocation":1964},"Why GitLab?",{"freeTrial":1990,"mobileIcon":1994,"desktopIcon":1999,"secondaryButton":2002},{"text":1614,"config":1991},{"href":1992,"dataGaName":1617,"dataGaLocation":1993},"https://gitlab.com/-/trials/new/","nav",{"altText":1995,"config":1996},"GitLabアイコン",{"src":1997,"dataGaName":1998,"dataGaLocation":1993},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1995,"config":2000},{"src":2001,"dataGaName":1998,"dataGaLocation":1993},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1775,"config":2003},{"href":2004,"dataGaName":2005,"dataGaLocation":1993},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":2007,"mobileIcon":2011,"desktopIcon":2013},{"text":2008,"config":2009},"GitLab Duoの詳細について",{"href":1648,"dataGaName":2010,"dataGaLocation":1993},"gitlab duo",{"altText":1995,"config":2012},{"src":1997,"dataGaName":1998,"dataGaLocation":1993},{"altText":1995,"config":2014},{"src":2001,"dataGaName":1998,"dataGaLocation":1993},{"button":2016,"mobileIcon":2021,"desktopIcon":2023},{"text":2017,"config":2018},"/switch",{"href":2019,"dataGaName":2020,"dataGaLocation":1993},"#contact","switch",{"altText":1995,"config":2022},{"src":1997,"dataGaName":1998,"dataGaLocation":1993},{"altText":1995,"config":2024},{"src":2025,"dataGaName":1998,"dataGaLocation":1993},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":2027,"mobileIcon":2032,"desktopIcon":2034},{"text":2028,"config":2029},"料金ページに戻る",{"href":1762,"dataGaName":2030,"dataGaLocation":1993,"icon":2031},"back to pricing","GoBack",{"altText":1995,"config":2033},{"src":1997,"dataGaName":1998,"dataGaLocation":1993},{"altText":1995,"config":2035},{"src":2001,"dataGaName":1998,"dataGaLocation":1993},{"title":2037,"button":2038,"config":2042},"GitLab Orbitが登場: AIエージェントのためのコンテキストレイヤー",{"text":1654,"config":2039},{"href":2040,"dataGaName":2041,"dataGaLocation":1612},"/ja-jp/gitlab-orbit/","orbit",{"layout":2043,"disabled":1595},"release",{"data":2045},{"text":2046,"source":2047,"edit":2053,"contribute":2058,"config":2063,"items":2068,"minimal":2275},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":2048,"config":2049},"ページのソースを表示",{"href":2050,"dataGaName":2051,"dataGaLocation":2052},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":2054,"config":2055},"このページを編集",{"href":2056,"dataGaName":2057,"dataGaLocation":2052},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":2059,"config":2060},"ご協力をお願いします",{"href":2061,"dataGaName":2062,"dataGaLocation":2052},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":2064,"facebook":2065,"youtube":2066,"linkedin":2067},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[2069,2114,2165,2208,2242],{"title":1760,"links":2070,"subMenu":2085},[2071,2075,2080],{"text":2072,"config":2073},"プランの表示",{"href":1762,"dataGaName":2074,"dataGaLocation":2052},"view plans",{"text":2076,"config":2077},"Premiumを選ぶ理由",{"href":2078,"dataGaName":2079,"dataGaLocation":2052},"/ja-jp/pricing/premium/","why premium",{"text":2081,"config":2082},"Ultimateを選ぶ理由",{"href":2083,"dataGaName":2084,"dataGaLocation":2052},"/ja-jp/pricing/ultimate/","why ultimate",[2086],{"title":1935,"links":2087},[2088,2090,2092,2094,2099,2104,2109],{"text":1935,"config":2089},{"href":1944,"dataGaName":1622,"dataGaLocation":2052},{"text":1947,"config":2091},{"href":1949,"dataGaName":1950,"dataGaLocation":2052},{"text":1952,"config":2093},{"href":1954,"dataGaName":1955,"dataGaLocation":2052},{"text":2095,"config":2096},"ステータス",{"href":2097,"dataGaName":2098,"dataGaLocation":2052},"https://status.gitlab.com/","status",{"text":2100,"config":2101},"利用規約",{"href":2102,"dataGaName":2103,"dataGaLocation":2052},"/terms/","terms of use",{"text":2105,"config":2106},"プライバシーに関する声明",{"href":2107,"dataGaName":2108,"dataGaLocation":2052},"/ja-jp/privacy/","privacy statement",{"text":2110,"config":2111},"Cookie 優先設定",{"dataGaName":2112,"dataGaLocation":2052,"id":2113,"isOneTrustButton":697},"cookie preferences","ot-sdk-btn",{"title":1659,"links":2115,"subMenu":2124},[2116,2120],{"text":2117,"config":2118},"DevSecOpsプラットフォーム",{"href":1641,"dataGaName":2119,"dataGaLocation":2052},"devsecops platform",{"text":2121,"config":2122},"AI支援開発",{"href":1648,"dataGaName":2123,"dataGaLocation":2052},"ai-assisted development",[2125],{"title":2126,"links":2127},"トピック",[2128,2132,2137,2142,2147,2150,2155,2160],{"text":1602,"config":2129},{"href":2130,"dataGaName":2131,"dataGaLocation":2052},"/ja-jp/topics/ci-cd/","cicd",{"text":2133,"config":2134},"GitOps",{"href":2135,"dataGaName":2136,"dataGaLocation":2052},"/ja-jp/topics/gitops/","gitops",{"text":2138,"config":2139},"DevOps",{"href":2140,"dataGaName":2141,"dataGaLocation":2052},"/ja-jp/topics/devops/","devops",{"text":2143,"config":2144},"バージョン管理",{"href":2145,"dataGaName":2146,"dataGaLocation":2052},"/ja-jp/topics/version-control/","version control",{"text":1603,"config":2148},{"href":2149,"dataGaName":1586,"dataGaLocation":2052},"/ja-jp/topics/devsecops/",{"text":2151,"config":2152},"クラウドネイティブ",{"href":2153,"dataGaName":2154,"dataGaLocation":2052},"/ja-jp/topics/cloud-native/","cloud native",{"text":2156,"config":2157},"コーディングのためのAI",{"href":2158,"dataGaName":2159,"dataGaLocation":2052},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":2161,"config":2162},"エージェント型AI",{"href":2163,"dataGaName":2164,"dataGaLocation":2052},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":2166,"links":2167},"ソリューション",[2168,2171,2173,2178,2182,2185,2188,2191,2193,2195,2198,2203],{"text":1703,"config":2169},{"href":1698,"dataGaName":2170,"dataGaLocation":2052},"Application Security Testing",{"text":1690,"config":2172},{"href":1675,"dataGaName":1676,"dataGaLocation":2052},{"text":2174,"config":2175},"アジャイル開発",{"href":2176,"dataGaName":2177,"dataGaLocation":2052},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":2179,"config":2180},"SCM",{"href":1687,"dataGaName":2181,"dataGaLocation":2052},"source code management",{"text":1602,"config":2183},{"href":1680,"dataGaName":2184,"dataGaLocation":2052},"continuous integration & delivery",{"text":1729,"config":2186},{"href":1731,"dataGaName":2187,"dataGaLocation":2052},"value stream management",{"text":2133,"config":2189},{"href":2190,"dataGaName":2136,"dataGaLocation":2052},"/ja-jp/solutions/gitops/",{"text":1742,"config":2192},{"href":1745,"dataGaName":1746,"dataGaLocation":2052},{"text":1748,"config":2194},{"href":1751,"dataGaName":1752,"dataGaLocation":2052},{"text":2196,"config":2197},"公共機関",{"href":1757,"dataGaName":1758,"dataGaLocation":2052},{"text":2199,"config":2200},"教育",{"href":2201,"dataGaName":2202,"dataGaLocation":2052},"/ja-jp/solutions/education/","education",{"text":2204,"config":2205},"金融サービス",{"href":2206,"dataGaName":2207,"dataGaLocation":2052},"/ja-jp/solutions/finance/","financial services",{"title":2209,"links":2210},"リソース",[2211,2213,2215,2217,2221,2223,2226,2228,2230,2232,2234,2236,2238,2240],{"text":1778,"config":2212},{"href":1780,"dataGaName":1781,"dataGaLocation":2052},{"text":1783,"config":2214},{"href":1785,"dataGaName":1786,"dataGaLocation":2052},{"text":1788,"config":2216},{"href":1790,"dataGaName":1791,"dataGaLocation":2052},{"text":1793,"config":2218},{"href":2219,"dataGaName":2220,"dataGaLocation":2052},"https://docs.gitlab.com/ja-jp","docs",{"text":1816,"config":2222},{"href":1818,"dataGaName":1819,"dataGaLocation":2052},{"text":2224,"config":2225},"最新リリース",{"href":1876,"dataGaName":1877,"dataGaLocation":2052},{"text":1811,"config":2227},{"href":1813,"dataGaName":1814,"dataGaLocation":2052},{"text":1830,"config":2229},{"href":1832,"dataGaName":1833,"dataGaLocation":2052},{"text":1838,"config":2231},{"href":1840,"dataGaName":1841,"dataGaLocation":2052},{"text":1843,"config":2233},{"href":1845,"dataGaName":1846,"dataGaLocation":2052},{"text":1848,"config":2235},{"href":1850,"dataGaName":1851,"dataGaLocation":2052},{"text":1853,"config":2237},{"href":1855,"dataGaName":1856,"dataGaLocation":2052},{"text":1858,"config":2239},{"href":1860,"dataGaName":1861,"dataGaLocation":2052},{"text":1863,"config":2241},{"href":1865,"dataGaName":1866,"dataGaLocation":2052},{"title":2243,"links":2244},"会社情報",[2245,2247,2249,2251,2253,2255,2259,2264,2266,2268,2270],{"text":1887,"config":2246},{"href":1889,"dataGaName":1881,"dataGaLocation":2052},{"text":1892,"config":2248},{"href":1894,"dataGaName":1895,"dataGaLocation":2052},{"text":1900,"config":2250},{"href":1902,"dataGaName":1903,"dataGaLocation":2052},{"text":1905,"config":2252},{"href":1907,"dataGaName":1908,"dataGaLocation":2052},{"text":1910,"config":2254},{"href":1912,"dataGaName":1913,"dataGaLocation":2052},{"text":2256,"config":2257},"Sustainability",{"href":2258,"dataGaName":2256,"dataGaLocation":2052},"/sustainability/",{"text":2260,"config":2261},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":2262,"dataGaName":2263,"dataGaLocation":2052},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1915,"config":2265},{"href":1917,"dataGaName":1918,"dataGaLocation":2052},{"text":1925,"config":2267},{"href":1927,"dataGaName":1928,"dataGaLocation":2052},{"text":1930,"config":2269},{"href":1932,"dataGaName":1933,"dataGaLocation":2052},{"text":2271,"config":2272},"現代奴隷制の透明性に関する声明",{"href":2273,"dataGaName":2274,"dataGaLocation":2052},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":2276},[2277,2279,2282],{"text":2100,"config":2278},{"href":2102,"dataGaName":2103,"dataGaLocation":2052},{"text":2280,"config":2281},"Cookieの設定",{"dataGaName":2112,"dataGaLocation":2052,"id":2113,"isOneTrustButton":697},{"text":2105,"config":2283},{"href":2107,"dataGaName":2108,"dataGaLocation":2052},[2285],{"id":2286,"title":7,"body":1590,"config":2287,"content":2289,"description":1590,"extension":2293,"meta":2294,"navigation":697,"path":2295,"seo":2296,"stem":2297,"__hash__":2298},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":2288},"BlogAuthor",{"name":7,"config":2290},{"headshot":2291,"ctfId":2292},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659556/Blog/Author%20Headshots/fern_diaz.png","fjdiaz","yml",{},"/en-us/blog/authors/fernando-diaz",{},"en-us/blog/authors/fernando-diaz","lxRJIOydP4_yzYZvsPcuQevP9AYAKREF7i8QmmdnOWc",[2300,2308,2315],{"title":2301,"description":2302,"heroImage":2303,"category":1586,"date":2304,"authors":2305,"slug":2307,"externalUrl":1590},"GitLabとKiroで実現する「AI駆動開発基盤」のホントのところ【イベントレポート】","AWS Summit Japan 2026の来場者向けセッションで、GitLab小松原つかさとソニービズネットワークス株式会社濱田一成氏が登壇した模様をお伝えします。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1784079710/ow23ysfsonekilhwnhfp.jpg","2026-07-16",[2306],"GitLab Japan Team","event-report-aws-summit-2026",{"title":2309,"description":2310,"heroImage":2311,"category":1586,"date":2312,"authors":2313,"slug":2314,"externalUrl":1590},"プラットフォーム設計の見直しで、真のAI駆動開発を実現 【イベントレポート】","GitLab藤田がガートナー アプリケーション・イノベーション＆ビジネス・ソリューション サミット 2026で語った、AI駆動開発成功のための3条件をレポート。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1783923028/sh09mb0yasluzqqi5vts.jpg","2026-07-13",[2306],"event-report-gartner-application-innovation-2026",{"title":2316,"description":2317,"heroImage":2318,"category":1586,"date":2319,"authors":2320,"slug":2321,"externalUrl":1590},"開発基盤をGitLabに集約するSBI証券がAI時代に描く展望【GitLab Transcend Japan Fireside Chat】","2026年2月10日にGitLabが開催した「GitLab Transcend Japan」では、株式会社SBI証券 執行役員 IT企画部長 武藤恵慈氏にご登壇いただき、GitLab合同会社Head of Japan 小澤正治とのFireside Chat（対談）を行いました。その模様をレポートします。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776319994/uiregzmtojom32pmlq7y.jpg","2026-04-24",[2306],"fireside-chat-transcend-tokyo-2026",{"promotions":2323},[2324,2338,2350,2362],{"id":2325,"categories":2326,"header":2328,"text":2329,"button":2330,"image":2335},"ai-modernization",[2327],"ai","AIの真価、組織全体で発揮できていますか？","所要時間は5分以内です",{"text":2331,"config":2332},"AI成熟度スコアを確認する",{"href":2333,"dataGaName":2334,"dataGaLocation":1819},"/ja-jp/assessments/ai-modernization-assessment/","modernization assessment",{"config":2336},{"src":2337},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":2339,"categories":2340,"header":2342,"text":2329,"button":2343,"image":2347},"devops-modernization",[2341,1586],"product","単にツールを管理するだけでなく、イノベーションを提供していますか？",{"text":2344,"config":2345},"DevOps成熟度スコアを確認しましょう",{"href":2346,"dataGaName":2334,"dataGaLocation":1819},"/ja-jp/assessments/devops-modernization-assessment/",{"config":2348},{"src":2349},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":2351,"categories":2352,"header":2354,"text":2329,"button":2355,"image":2359},"security-modernization",[2353],"security","スピードのためにセキュリティを犠牲にしていませんか？",{"text":2356,"config":2357},"セキュリティ成熟度スコアを確認しましょう",{"href":2358,"dataGaName":2334,"dataGaLocation":1819},"/ja-jp/assessments/security-modernization-assessment/",{"config":2360},{"src":2361},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":2363,"paths":2364,"header":2367,"text":2368,"button":2369,"image":2374},"github-azure-migration",[2365,2366],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","チームはGitHubのAzure移行に対応できていますか？","GitHubはすでにAzureを基盤として再構築を進めています。それがあなたのチームにとって何を意味するのか、ご確認ください。",{"text":2370,"config":2371},"GitLabとGitHubの比較を見る",{"href":2372,"dataGaName":2373,"dataGaLocation":1819},"/ja-jp/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":2375},{"src":2349},{"header":2377,"blurb":2378,"button":2379,"secondaryButton":2383},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":1614,"config":2380},{"href":2381,"dataGaName":1617,"dataGaLocation":2382},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":1935,"config":2384},{"href":1944,"dataGaName":1622,"dataGaLocation":2382},1786803771329]