狠狠撸
Submit Search
SCM, CI and Maven Repo
?
Download as PPTX, PDF
?
2 likes
?
2,514 views
Hideaki Ishijima
Follow
Java Casual #2の発表資料です http://java-casual.connpass.com/event/42461/
Read less
Read more
1 of 20
Download now
Download to read offline
More Related Content
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は行わない
11.
CI: Jenkins: groupid_artifactid_PR_branch ? PRを自動でbuild(testまで) ?
GitHub pull request builder pluginを使用
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)
20.
Q&A ? なにかあれば
Download