SlideShare a Scribd company logo
(CI System) -
Enoch Lee
Github
Social
https://github.com/ChenWeiLee
https://www.facebook.com/profile.php
iOS 2 Objective-C
Swift
Clean Code SVM
Enoch Lee
Build Machine,
1. - CI
2. - Jenkins
3. - Jenkins
4. - Shell Script
5. - Shell Script
- CI
- CI I
• CI Server Continuous Integration Server ( )
Build code ... QA
• CI Server
CI Server Check In
CI Server !
Build
CI Server Check In
CI Server
Routing Deploy
CI Server 02 - CI Server?
- CI II
•CI
1. Build Code Testing code
/ code QA
2. Web QA PM QA
code
3. Unit Testing UI Testing Build Code CI RD
or QA
4. Testing
- CI III
• CI
• Jenkins CI
• Travis CI
• Hudson CI
• Circle CI
Jenkins Jenkins Jenkins
- Jenkins
- Jenkins I
• Java
• Java Jenkins
• OS
- Jenkins II
安裝完成後,使⽤瀏覽器開啟 http://localhost:8080/ ,如果能夠看到以下就表⽰已安裝完成
- Jenkins
- Jenkins I
• 安裝完Jenkins後,Jenkins會⾃動幫你新增⼀個使⽤者,要操作的話建議登入此使⽤者中做操作。
• 進入"管理Jenkins” —> “管理外掛程式” 去下載需要⽤到的外掛,下載完後重啟Jenkins Server。
• 我們會使⽤到的外掛
• Xcode integration
• GIT plugin
- Jenkins II
• -
• Free-Style
•
- Jenkins III
• Git
• Repository Url
•Credentials git gitlab
•Branches to Build
- Jenkins IV
•
•
•
•
- Shell Script
- Shell Script I
•Shell script Command line(terminal ) ”.sh”
Shell script
•Comment line ”cd /bin”
Xcode Command line Build Script
•Xcode
•Xcrun
•XcodeBuild
- Shell Script II
•Shell script 

shell script ”.sh”
Shell script
•Shell script 

command line cd .sh ”sh shell_script .sh” Shell script
•Shell script 

Shell script ”sh shell_script .sh”
Ex ”sh shell_script .sh 1 2 3”
Shell script Shell script “$”
Ex $1 = 1 $2 = 2 $3 = 3
- Shell Script
- Shell Script I
•
• Xcode Shell
• Shell
• ” ”
- Shell Script II
• Jenkins Pull Branch Code Build
• Shell Script Push Git Jenkins
• Shell script
- Shell Script III
• Keychin Shell script
• Key ” ”
• Shell script
security unlock-keychain -p "$ "
- Shell Script IV
• Shell Script “Scheme” Xcode Share
Jenkins Scheme
- Shell Script V
# $1:PROJECT_NAME $2:SDK $3:PROJECT_SCHEMA $4:BuildConfiguration $5:Password
if [ "$(ls -A Xcarchive)" ]
then
echo "Have Xcarchive"
else
mkdir Xcarchive
fi
security unlock-keychain -p "$5"
xcodebuild -archivePath "$WORKSPACE/Xcarchive/${JOB_NAME}_${BUILD_NUMBER}.xcarchive" -project $1.xcodeproj -sdk $2 -scheme $3 -
configuration $4 archive
if [ "$(ls -A Ipa)" ]
then
echo "Have Ipa"
else
mkdir Ipa
fi
# Export Archive project
xcrun -sdk $2 PackageApplication -v "${WORKSPACE}/Xcarchive/${JOB_NAME}_${BUILD_NUMBER}.xcarchive/Products/Applications/$1.app"
-o $WORKSPACE/Ipa/${JOB_NAME}_${BUILD_ID}.ipa
#
#xcodebuild -exportArchive -exportFormat IPA -archivePath "${xcarchive }"/"${xcarchive }".xcarchive -exportPath "${
ipa }"/"${ ipa }".ipa
… 2,678,400 sec
Ci system part i

More Related Content

What's hot

Continuos integration for iOS projects
Continuos integration for iOS projectsContinuos integration for iOS projects
Continuos integration for iOS projects
Aleksandra Gavrilovska
 
Setting up and open fidy dev environment
Setting up and open fidy dev environmentSetting up and open fidy dev environment
Setting up and open fidy dev environment
ianibbo
 
Jenkins and rails app - Le Dinh Vu
Jenkins and rails app - Le Dinh VuJenkins and rails app - Le Dinh Vu
Jenkins and rails app - Le Dinh Vu
Framgia Vietnam
 
Hooking Docker With Selenium
Hooking Docker With SeleniumHooking Docker With Selenium
Hooking Docker With Selenium
Sujith Vakathanam
 

What's hot (20)

Continuos integration for iOS projects
Continuos integration for iOS projectsContinuos integration for iOS projects
Continuos integration for iOS projects
 
Leveraging Ansible for CI/CD
Leveraging Ansible for CI/CDLeveraging Ansible for CI/CD
Leveraging Ansible for CI/CD
 
How to Build & Deploy a HelloWorld API function using Java on OpenShift in...
How to Build & Deploy a HelloWorld API function using Java on OpenShift in...How to Build & Deploy a HelloWorld API function using Java on OpenShift in...
How to Build & Deploy a HelloWorld API function using Java on OpenShift in...
 
CocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPodsCocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPods
 
Kinect Workshop Part 1/2
Kinect Workshop Part 1/2Kinect Workshop Part 1/2
Kinect Workshop Part 1/2
 
DockerDay2015: Docker orchestration for developers
DockerDay2015: Docker orchestration for developersDockerDay2015: Docker orchestration for developers
DockerDay2015: Docker orchestration for developers
 
Welcome to Jenkins
Welcome to JenkinsWelcome to Jenkins
Welcome to Jenkins
 
TYPO3 Surf Introduction
TYPO3 Surf IntroductionTYPO3 Surf Introduction
TYPO3 Surf Introduction
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
 
Setting up and open fidy dev environment
Setting up and open fidy dev environmentSetting up and open fidy dev environment
Setting up and open fidy dev environment
 
Vagrant - the essence of DevOps in a tool
Vagrant - the essence of DevOps in a toolVagrant - the essence of DevOps in a tool
Vagrant - the essence of DevOps in a tool
 
Scaling your jenkins master with docker
Scaling your jenkins master with dockerScaling your jenkins master with docker
Scaling your jenkins master with docker
 
Jenkins and rails app - Le Dinh Vu
Jenkins and rails app - Le Dinh VuJenkins and rails app - Le Dinh Vu
Jenkins and rails app - Le Dinh Vu
 
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS CloudCI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
 
Hooking Docker With Selenium
Hooking Docker With SeleniumHooking Docker With Selenium
Hooking Docker With Selenium
 
Cocoa pods
Cocoa podsCocoa pods
Cocoa pods
 
Drupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The BasicsDrupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The Basics
 
InSpec Workflow for DevOpsDays Riga 2017
InSpec Workflow for DevOpsDays Riga 2017InSpec Workflow for DevOpsDays Riga 2017
InSpec Workflow for DevOpsDays Riga 2017
 
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
 
WinOps 2017 - Docker on Windows, the Beginner's Guide
WinOps 2017 - Docker on Windows, the Beginner's GuideWinOps 2017 - Docker on Windows, the Beginner's Guide
WinOps 2017 - Docker on Windows, the Beginner's Guide
 

Similar to Ci system part i

OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgartOpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
Tobias Schneck
 

Similar to Ci system part i (20)

Building a Solr Continuous Delivery Pipeline with Jenkins: Presented by James...
Building a Solr Continuous Delivery Pipeline with Jenkins: Presented by James...Building a Solr Continuous Delivery Pipeline with Jenkins: Presented by James...
Building a Solr Continuous Delivery Pipeline with Jenkins: Presented by James...
 
Ci for i-os-codemash-01.2013
Ci for i-os-codemash-01.2013Ci for i-os-codemash-01.2013
Ci for i-os-codemash-01.2013
 
Jenkins-CI
Jenkins-CIJenkins-CI
Jenkins-CI
 
InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020InSpec at DevOps ATL Meetup January 22, 2020
InSpec at DevOps ATL Meetup January 22, 2020
 
InSpec For DevOpsDays Amsterdam 2017
InSpec For DevOpsDays Amsterdam 2017InSpec For DevOpsDays Amsterdam 2017
InSpec For DevOpsDays Amsterdam 2017
 
Continuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL Server
 
Using Chef InSpec for Infrastructure Security
Using Chef InSpec for Infrastructure SecurityUsing Chef InSpec for Infrastructure Security
Using Chef InSpec for Infrastructure Security
 
OpenShift Build Pipelines @ Lightweight Java User Group Meetup
OpenShift Build Pipelines @ Lightweight Java User Group MeetupOpenShift Build Pipelines @ Lightweight Java User Group Meetup
OpenShift Build Pipelines @ Lightweight Java User Group Meetup
 
Adding Security to Your Workflow With InSpec - SCaLE17x
Adding Security to Your Workflow With InSpec - SCaLE17xAdding Security to Your Workflow With InSpec - SCaLE17x
Adding Security to Your Workflow With InSpec - SCaLE17x
 
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgartOpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
 
CI / CD / CS - Continuous Security in Kubernetes
CI / CD / CS - Continuous Security in KubernetesCI / CD / CS - Continuous Security in Kubernetes
CI / CD / CS - Continuous Security in Kubernetes
 
EC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and PackerEC2 AMI Factory with Chef, Berkshelf, and Packer
EC2 AMI Factory with Chef, Berkshelf, and Packer
 
Continuous Deployment with Jenkins and Salt
Continuous Deployment with Jenkins and SaltContinuous Deployment with Jenkins and Salt
Continuous Deployment with Jenkins and Salt
 
Travis, Circle そして Jenkins 2.0
Travis, Circle そして Jenkins 2.0Travis, Circle そして Jenkins 2.0
Travis, Circle そして Jenkins 2.0
 
OSDC 2017 - Mandi Walls - Building security into your workflow with inspec
OSDC 2017 - Mandi Walls - Building security into your workflow with inspecOSDC 2017 - Mandi Walls - Building security into your workflow with inspec
OSDC 2017 - Mandi Walls - Building security into your workflow with inspec
 
Adding Security to Your Workflow with InSpec (MAY 2017)
Adding Security to Your Workflow with InSpec (MAY 2017)Adding Security to Your Workflow with InSpec (MAY 2017)
Adding Security to Your Workflow with InSpec (MAY 2017)
 
OSDC 2017 | Building Security Into Your Workflow with InSpec by Mandi Walls
OSDC 2017 | Building Security Into Your Workflow with InSpec by Mandi WallsOSDC 2017 | Building Security Into Your Workflow with InSpec by Mandi Walls
OSDC 2017 | Building Security Into Your Workflow with InSpec by Mandi Walls
 
Adding Security and Compliance to Your Workflow with InSpec
Adding Security and Compliance to Your Workflow with InSpecAdding Security and Compliance to Your Workflow with InSpec
Adding Security and Compliance to Your Workflow with InSpec
 
Prescriptive System Security with InSpec
Prescriptive System Security with InSpecPrescriptive System Security with InSpec
Prescriptive System Security with InSpec
 
Prescriptive Security with InSpec - All Things Open 2019
Prescriptive Security with InSpec - All Things Open 2019Prescriptive Security with InSpec - All Things Open 2019
Prescriptive Security with InSpec - All Things Open 2019
 

Recently uploaded

AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
Alluxio, Inc.
 

Recently uploaded (20)

Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 

Ci system part i

  • 3. Build Machine, 1. - CI 2. - Jenkins 3. - Jenkins 4. - Shell Script 5. - Shell Script
  • 5. - CI I • CI Server Continuous Integration Server ( ) Build code ... QA • CI Server CI Server Check In CI Server ! Build CI Server Check In CI Server Routing Deploy CI Server 02 - CI Server?
  • 6. - CI II •CI 1. Build Code Testing code / code QA 2. Web QA PM QA code 3. Unit Testing UI Testing Build Code CI RD or QA 4. Testing
  • 7. - CI III • CI • Jenkins CI • Travis CI • Hudson CI • Circle CI Jenkins Jenkins Jenkins
  • 9. - Jenkins I • Java • Java Jenkins • OS
  • 12. - Jenkins I • 安裝完Jenkins後,Jenkins會⾃動幫你新增⼀個使⽤者,要操作的話建議登入此使⽤者中做操作。 • 進入"管理Jenkins” —> “管理外掛程式” 去下載需要⽤到的外掛,下載完後重啟Jenkins Server。 • 我們會使⽤到的外掛 • Xcode integration • GIT plugin
  • 13. - Jenkins II • - • Free-Style •
  • 14. - Jenkins III • Git • Repository Url •Credentials git gitlab •Branches to Build
  • 17. - Shell Script I •Shell script Command line(terminal ) ”.sh” Shell script •Comment line ”cd /bin” Xcode Command line Build Script •Xcode •Xcrun •XcodeBuild
  • 18. - Shell Script II •Shell script 
 shell script ”.sh” Shell script •Shell script 
 command line cd .sh ”sh shell_script .sh” Shell script •Shell script 
 Shell script ”sh shell_script .sh” Ex ”sh shell_script .sh 1 2 3” Shell script Shell script “$” Ex $1 = 1 $2 = 2 $3 = 3
  • 20. - Shell Script I • • Xcode Shell • Shell • ” ”
  • 21. - Shell Script II • Jenkins Pull Branch Code Build • Shell Script Push Git Jenkins • Shell script
  • 22. - Shell Script III • Keychin Shell script • Key ” ” • Shell script security unlock-keychain -p "$ "
  • 23. - Shell Script IV • Shell Script “Scheme” Xcode Share Jenkins Scheme
  • 24. - Shell Script V # $1:PROJECT_NAME $2:SDK $3:PROJECT_SCHEMA $4:BuildConfiguration $5:Password if [ "$(ls -A Xcarchive)" ] then echo "Have Xcarchive" else mkdir Xcarchive fi security unlock-keychain -p "$5" xcodebuild -archivePath "$WORKSPACE/Xcarchive/${JOB_NAME}_${BUILD_NUMBER}.xcarchive" -project $1.xcodeproj -sdk $2 -scheme $3 - configuration $4 archive if [ "$(ls -A Ipa)" ] then echo "Have Ipa" else mkdir Ipa fi # Export Archive project xcrun -sdk $2 PackageApplication -v "${WORKSPACE}/Xcarchive/${JOB_NAME}_${BUILD_NUMBER}.xcarchive/Products/Applications/$1.app" -o $WORKSPACE/Ipa/${JOB_NAME}_${BUILD_ID}.ipa # #xcodebuild -exportArchive -exportFormat IPA -archivePath "${xcarchive }"/"${xcarchive }".xcarchive -exportPath "${ ipa }"/"${ ipa }".ipa