Weitere ähnliche Inhalte
Ähnlich wie SCM, CI and Maven Repo (20)
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)
- 7. CI: Jenkins
• Job Template
• groupid_artifactid_C_develop
• groupid_artifactid_R_master
• groupid_artifactid_PR_branch
• Viewで正規表現でList upできて便利
• (Repositoryが消滅してもJob名から推察できる)
- 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)