SlideShare ist ein Scribd-Unternehmen logo
1 von 20
HIDEAKI ISHIJIMA
SCM, CI and Maven Repo
自己紹介
• 石島 秀晃
• @hdkshjm
• 開発Toolの運用
• SCM, CI, Maven Repo, Deploy Toolなど
目次
• SCM: GitHub Enterprise
• CI: Jenkins
• Maven Repository: Nexus Repository Pro
まとめ
RELEASE SNAPSHOT Pull Request
SCM:
GitHub Enterprise
master branch develop branch
CI: Jenkins
groupid_artifactid_R_
master
groupid_artifactid_C_d
evelop
groupid_artifactid_PR_
branch
Maven Repo:
Nexus Pro
internal(upload) releas
es(download)
nightly(upload)
snapshots(download)
SCM: GitHub Enterprise
• サービスごとにOrganizationを作成
• Repositoryで1万以上に
• 基本的にPublic Repoで運用
• git flow, GitHub Flowを主に使用
CI: Jenkins
• 1つのJenkinsを共有
• Java App, Android App, iOS App
• build時のJDKはOracle JDKを使っている
CI: Jenkins
• Job Template
• groupid_artifactid_C_develop
• groupid_artifactid_R_master
• groupid_artifactid_PR_branch
• Viewで正規表現でList upできて便利
• (Repositoryが消滅してもJob名から推察できる)
CI: Jenkins:
groupid_artifactid_C_develop
• develop branchにpushされたらbuild開始
• SNAPSHOT Artifactを社内Maven Repoへupload
CI: Jenkins:
groupid_artifactid_C_develop
• 複数の社内libraryに依存している巨大appの場合
Skinny Warを作ることも
• Server deploy時にdependency:copy-dependencies
で、jarを./WEB-INF/libにcopyする
• dependencyがupdateされても
Warを再buildせずにServer deployだけすればよい
CI: Jenkins:
groupid_artifactid_R_master
• 手動でbuild開始
• master branchからbuildし
RELEASE Artifactを社内Maven Repoへupload
• Skinny Warは行わない
CI: Jenkins:
groupid_artifactid_PR_branch
• PRを自動でbuild(testまで)
• GitHub pull request builder pluginを使用
Repo: Nexus Repository Pro:
• 用途により3種類のRepoを管理
• 外部RepoをReverse Proxy
• Upload専用のinternal/nightly
• Download専用のreleases/snapshots
• (名前がAndroidのNexusと同じなので、検索しづらいのが
辛い)
Repo: Nexus Repository Pro:
外部RepoをReverse Proxy
• Reverse ProxyしつつCacheもしてくれる
• 2回目以降のdownloadの速度が上がるのでbuild時
間短縮
• 外部RepoがdownするとReverse Proxyも遅くなる
Repo: Nexus Repository Pro:
外部RepoをReverse Proxy
• 外部RepoがURL変更/消滅になっても、
既存のpom/build.gradleは影響ない
• URL変更: Nexus内でReverse Proxy先を変更する
• 消滅: CacheのみDownload可能なRepoとして暫く
残す
Repo: Nexus Repository Pro
upload専用のinternal Repo
• JenkinsからのみRelease Artifactをupload可能
• Local PCから間違ってuploadする事件を予防
• build方法の一子相伝の口伝継承を予防
• Maven Centralなどに存在しないArtifactについては
管理者にuploadを依頼
Repo: Nexus Repository Pro
upload専用のnightly Repo
• Local PC or JenkinsからSNAPSHOT Artifactをupload可能
• 定期的に古いSNAPSHOT Artifactは削除
• Jenkinsのgroupid_artifactid_C_developより
毎日大量にuploadされるため
• 2週間以上前に作成され
15世代以上古いtimestamped verのみ
Repo: Nexus Repository Pro
download専用のreleases/snapshots
• NexusのGroup Repo機能により
複数のRepoを、1個のRepoに統合する
• 複数のRepoにおいて同名Artifactがあった場合
Repoの優先順位を設定可能
• pomなどに複数Repo書く必要がなくなる
Repo: Nexus Repository Pro
download専用のreleases/snapshots
• 以下のRepoを統合している
• internal/nightly Repo
• 関連会社の社内Maven Repo
• Maven Centralやrepository.apache.orgなど
まとめ
RELEASE SNAPSHOT Pull Request
SCM:
GitHub Enterprise
master branch develop branch
CI: Jenkins
groupid_artifactid_R_
master
groupid_artifactid_C_d
evelop
groupid_artifactid_PR_
branch
Maven Repo:
Nexus Pro
internal(upload) releas
es(download)
nightly(upload)
snapshots(download)
Q&A
• なにかあれば

Weitere ähnliche Inhalte

Was ist angesagt?

AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Toshiaki Maki
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
Amazon Web Services Japan
 
サーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkサーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalk
Hirokazu Ouchi
 

Was ist angesagt? (20)

アプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込みアプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込み
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
 
Ansible night
Ansible nightAnsible night
Ansible night
 
自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話
 
はじめての Elastic Beanstalk
はじめての Elastic Beanstalkはじめての Elastic Beanstalk
はじめての Elastic Beanstalk
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
AWS Black Belt Techシリーズ  AWS  Elastic  BeanstalkAWS Black Belt Techシリーズ  AWS  Elastic  Beanstalk
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
 
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
 
Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)
Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)
Ansibleではじめるサーバー・ネットワークの自動化(2018/08/22)
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのかコンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
 
Ansible 2.10 と Collection
Ansible 2.10 と CollectionAnsible 2.10 と Collection
Ansible 2.10 と Collection
 
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
 
Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
 
サーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalkサーバ構築・デプロイが簡単に!Elastic beanstalk
サーバ構築・デプロイが簡単に!Elastic beanstalk
 

Ähnlich wie SCM, CI and Maven Repo

CIBC workshop by imagire
CIBC workshop by imagireCIBC workshop by imagire
CIBC workshop by imagire
Takashi Imagire
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
 

Ähnlich wie SCM, CI and Maven Repo (20)

Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
 
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Android アプリを Jenkins でビルドして GitHub に “リリース” を作る
Android アプリを Jenkins でビルドして GitHub に “リリース” を作るAndroid アプリを Jenkins でビルドして GitHub に “リリース” を作る
Android アプリを Jenkins でビルドして GitHub に “リリース” を作る
 
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
 
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOpsGitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
 
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
GitHub Codespaces と Azure でつくる、エンタープライズレベルの開発環境
 
恋するJenkins
恋するJenkins恋するJenkins
恋するJenkins
 
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
 
CIBC workshop by imagire
CIBC workshop by imagireCIBC workshop by imagire
CIBC workshop by imagire
 
App Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデートApp Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデート
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 PresentationMicrosoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へ
 

SCM, CI and Maven Repo

  • 1. HIDEAKI ISHIJIMA SCM, CI and Maven Repo
  • 2. 自己紹介 • 石島 秀晃 • @hdkshjm • 開発Toolの運用 • SCM, CI, Maven Repo, Deploy Toolなど
  • 3. 目次 • SCM: GitHub Enterprise • CI: Jenkins • Maven Repository: Nexus Repository Pro
  • 4. まとめ RELEASE SNAPSHOT Pull Request SCM: GitHub Enterprise master branch develop branch CI: Jenkins groupid_artifactid_R_ master groupid_artifactid_C_d evelop groupid_artifactid_PR_ branch Maven Repo: Nexus Pro internal(upload) releas es(download) nightly(upload) snapshots(download)
  • 5. SCM: GitHub Enterprise • サービスごとにOrganizationを作成 • Repositoryで1万以上に • 基本的にPublic Repoで運用 • git flow, GitHub Flowを主に使用
  • 6. CI: Jenkins • 1つのJenkinsを共有 • Java App, Android App, iOS App • build時のJDKはOracle JDKを使っている
  • 7. CI: Jenkins • Job Template • groupid_artifactid_C_develop • groupid_artifactid_R_master • groupid_artifactid_PR_branch • Viewで正規表現でList upできて便利 • (Repositoryが消滅してもJob名から推察できる)
  • 8. CI: Jenkins: groupid_artifactid_C_develop • develop branchにpushされたらbuild開始 • SNAPSHOT Artifactを社内Maven Repoへupload
  • 9. CI: Jenkins: groupid_artifactid_C_develop • 複数の社内libraryに依存している巨大appの場合 Skinny Warを作ることも • Server deploy時にdependency:copy-dependencies で、jarを./WEB-INF/libにcopyする • dependencyがupdateされても Warを再buildせずにServer deployだけすればよい
  • 10. CI: Jenkins: groupid_artifactid_R_master • 手動でbuild開始 • master branchからbuildし RELEASE Artifactを社内Maven Repoへupload • Skinny Warは行わない
  • 12. Repo: Nexus Repository Pro: • 用途により3種類のRepoを管理 • 外部RepoをReverse Proxy • Upload専用のinternal/nightly • Download専用のreleases/snapshots • (名前がAndroidのNexusと同じなので、検索しづらいのが 辛い)
  • 13. Repo: Nexus Repository Pro: 外部RepoをReverse Proxy • Reverse ProxyしつつCacheもしてくれる • 2回目以降のdownloadの速度が上がるのでbuild時 間短縮 • 外部RepoがdownするとReverse Proxyも遅くなる
  • 14. Repo: Nexus Repository Pro: 外部RepoをReverse Proxy • 外部RepoがURL変更/消滅になっても、 既存のpom/build.gradleは影響ない • URL変更: Nexus内でReverse Proxy先を変更する • 消滅: CacheのみDownload可能なRepoとして暫く 残す
  • 15. Repo: Nexus Repository Pro upload専用のinternal Repo • JenkinsからのみRelease Artifactをupload可能 • Local PCから間違ってuploadする事件を予防 • build方法の一子相伝の口伝継承を予防 • Maven Centralなどに存在しないArtifactについては 管理者にuploadを依頼
  • 16. Repo: Nexus Repository Pro upload専用のnightly Repo • Local PC or JenkinsからSNAPSHOT Artifactをupload可能 • 定期的に古いSNAPSHOT Artifactは削除 • Jenkinsのgroupid_artifactid_C_developより 毎日大量にuploadされるため • 2週間以上前に作成され 15世代以上古いtimestamped verのみ
  • 17. Repo: Nexus Repository Pro download専用のreleases/snapshots • NexusのGroup Repo機能により 複数のRepoを、1個のRepoに統合する • 複数のRepoにおいて同名Artifactがあった場合 Repoの優先順位を設定可能 • pomなどに複数Repo書く必要がなくなる
  • 18. Repo: Nexus Repository Pro download専用のreleases/snapshots • 以下のRepoを統合している • internal/nightly Repo • 関連会社の社内Maven Repo • Maven Centralやrepository.apache.orgなど
  • 19. まとめ RELEASE SNAPSHOT Pull Request SCM: GitHub Enterprise master branch develop branch CI: Jenkins groupid_artifactid_R_ master groupid_artifactid_C_d evelop groupid_artifactid_PR_ branch Maven Repo: Nexus Pro internal(upload) releas es(download) nightly(upload) snapshots(download)