Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Jenkinsおじさんと楽しい連携ツールたち
Search
toshihirock
January 10, 2015
Technology
1
2.5k
Jenkinsおじさんと楽しい連携ツールたち
Jenkinsユーザーカンファレンス2015東京LT
toshihirock
January 10, 2015
Tweet
Share
More Decks by toshihirock
See All by toshihirock
Lambdaを使ってJawsDaysをHackしてみよう!
toshihirock
2
1.9k
保守、運用で使ってみようLambda!
toshihirock
4
1.8k
CodeDeployを使ったアプリケーションデプロイを考える
toshihirock
0
680
Other Decks in Technology
See All in Technology
AI時代のIssue駆動開発のススメ
moongift
PRO
0
300
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
kaomi_wombat
0
270
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
TUNA Camp 2026 京都Stage ヒューリスティックアルゴリズム入門
terryu16
0
620
Kiro Meetup #7 Kiro アップデート (2025/12/15〜2026/3/20)
katzueno
2
270
OPENLOGI Company Profile for engineer
hr01
1
61k
20260326_AIDD事例紹介_ULSC.pdf
findy_eventslides
0
200
Cursor Subagentsはいいぞ
yug1224
2
120
Physical AI on AWS リファレンスアーキテクチャ / Physical AI on AWS Reference Architecture
aws_shota
1
200
AIエージェント勉強会第3回 エージェンティックAIの時代がやってきた
ymiya55
0
160
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.2k
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
17k
Featured
See All Featured
It's Worth the Effort
3n
188
29k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
91
Building Applications with DynamoDB
mza
96
7k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
240
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
300
Code Review Best Practice
trishagee
74
20k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Documentation Writing (for coders)
carmenintech
77
5.3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
360
Paper Plane (Part 1)
katiecoart
PRO
0
6.1k
Transcript
Jenkins͓͡͞Μͱָ͍͠࿈ ܞπʔϧͨͪ +FOLJOTϢʔβʔΧϯϑΝϨϯε౦ژ !UPTIJIJSPDL
ࣗݾհ ɾ@toshihirock ɾ͓٬༷ઌʹͯAndroid։ൃͷ͓ख͍(ओʹ ։ൃڥվળ)Λ͍ͯ͠Δ ɾ͖ͳϙουΩϟετʮRebuildʯͱ ʮϥΠϜελʔӉଟؙͷΟʔΫΤϯυγϟο ϑϧʯ
͢͜ͱ
❤️ loves
❤️
Slack ɾνϟοτΞϓϦ ɾJenkinsͷϏϧυ݁Ռͷ௨Λߦ͏ ɾJenkins Slack pluginΛར༻ͯ͠࿈ܞ
͜Μͳײ͡Ͱදࣔ͞ΕΔ
Կ͔͞Έ͍ͬͯ͠ݴΘΕͨ
ίʔυม͑ͯΈͨ
EmojiͰΜͩ
❤️
Gitlab ɾGitHubͷΫϩʔϯɻCommunityEditionແྉͰ͑ Δ ɾ࣮ࡍʹར༻ͯ͠΄Ͳܦա͍ͯ͠Δ͕΄΅ͳ ͍͑ͯ͘Δ ɾMergeRequest(PullRequestͱ΄΅ಉ͡)Ͱ࣮ࡍʹ MasterʹϚʔδ͢ΔલʹϏϧυɺ੩తղੳɺςετΛ ߦ͏ ɾGitlab Merge
Request Builder PluginΛར༻ͯ͠࿈ܞ
Gitlab-MergeRequest݁Ռ
❤️
deploygate ɾiOS/AndoridΞϓϦͷςετ൛ΞϓϦͷ৴͕ ग़དྷΔ ɾΞϓϦʹରͯ͠ҙͷϝοηʔδΛ༩Ͱ͖Δ ɾgradle-deploygate-pluginΛར༻ͯ͠࿈ܞ (ProxyରԠͯ͠ͳ͔ͬͨͷͰϓϧϦΫͯ͠Ϛʔδ ͯ͠Βͬͨ)
GradleΛͬͯΞϓϦʹରͯ͠Ϗ ϧυ൪߸ ͱίϛοτใΛՃ
Ϗϧυ൪߸ ί ϛοτϝοηʔδ
࠷େݸͷ όʔδϣϯΛཧ
build.grade ʢ https://gist.github.com/toshihirock/ f4a0c96bc4809152d990ʣ
import groovy.json.* ext { jenkinsUrl = 'http://localhost:8080' buildNumber = System.getenv("BUILD_NUMBER");
jobName = System.getenv("JOB_NAME"); println "build number is ${buildNumber}" println "jobName is ${jobName}" } def getJson(url) { println "start getJson $url" def response = new URL(url).text return new JsonSlurper().parseText(response) } def getJenkinsMessage(msg) { def url = "${jenkinsUrl}/job/${jobName}/${buildNumber}/api/json" def items = getJson(url)['changeSet']['items'] items.eachWithIndex() { obj, i -> msg += obj['msg'] + ' ' } return msg }
deploygate { userName = ownerName token = myToken apks {
example { sourceFile = file(“build/outputs/apk/hoge.apk") //Below is optional if(buildNumber != null) { String msg = "B${buildNumber} " message = getJenkinsMessage(msg) } } } }
·ͱΊ ɾJenkins͓͡͞Μ୯ಠͰศར͚ͩͲଞ ͷ࿈ܞπʔϧͱΈ߹ΘͤΔͱศར ɾͨͩ͏͚ͩͰͳͯ͘ͻͱ͢Δͱͬ ͱศར ɾϙουΩϟετࠓฉ͖͍ͨ