Desenvolvimento e manutenção de pipelines de integração contínua para aplicativos móveis MAHA ASFOUR Julho de 2020 Development and Maintenance of Continuous Integration pipelines for Mobile Applications MAHA ASFOUR Dissertation to obtain the master’s degree in Computer Engineering, Specialization Area in COMPUTER SYSTEMS Advisor: Prof. Alexandre Bragança Jury: President: [President's Name, Category, School] Vowels: [Name of vowel1, Category, School] [Name of vowel2, Category, School] (up to 4 vowels) Porto, [July] [2020] ii Thanks I would like to pay tribute to the support and great love of my parents and siblings, it would not have been possible to achieve my ambitions without their trust and encouragement. The contribution of ‘The Global Platform for Syrian students’ is truly appreciated, especially, the former President of Portugal DR. Jorge Sampaio, DR. Helena Barroco that facilitated my first two years in Portugal, and all the sponsors. Without their support and funding, I could not have a chance to continue my studies in Portugal. I would also like to express my deep appreciation to my academic supervisor, Professor Alexandre Bragança for his support and the cognitive value that he presented, and to extend my deepest gratitude to COCUS's DevOps team, especially my technical supervisor, the engineer Pedro Coutinho, who was generous, patient, flexible, and supportive within nine months of the internship, and to the scrum master MR. Nuno Alves. Finally, I would like to say, I always felt at home thanks to Portugal, the beautiful and hospitable country, Instituto superior de engenharia do Porto, and COCUS IT company. iii iv Resumo Recentemente, o mercado de TI tornou-se cada vez competitivo, à medida que os produtos de software são desenvolvidos frequentemente a um ritmo notável. Isto deve-se ao facto as empresas automatizarem os seus processos de release dos seus produtos de software tais como compilação, testes e lançamento, utilizando ferramentas de integração e entrega contínuas. Atualmente, existem ferramentas de DevOps capazes de ajudar a acelerar o lançamento dos produtos de software, como aplicativos móveis, através pipelines de CI/CD, tornando o processo de release estável e eficiente. O objetivo desta tese é propor uma ferramenta para CI / CD e fornecer uma solução para implementar e manter as pipelines de CI / CD para os projetos Android e IOS da TUI na COCUS. Keywords: DevOps, CI/CD pipeline, Metrics system, Mobile Applications v vi Abstract Recently, the IT market has become more competitive, as software products are developed and updated daily at a remarkable pace. This forces companies to automate the process of their release life cycle, such as building, testing, and deployment using continuous integration and continuous delivery tools to provide better quality and speed for their products Currently, many DevOps tools are making efforts to accelerate the deployment of software products, like mobile applications, using CI / CD pipelines and make this process constant and reliable. The purpose of this thesis is to propose a CI / CD tool and provide a solution to develop and maintain the CI / CD pipeline for TUI´s Android and IOS projects at COCUS. Keywords: DevOps, CI/CD pipeline, Metrics system, Mobile Applications vii viii Index 1 Introduction .................................................................................. 1 1.1 Background/Context .............................................................................2 1.2 Problem Description ..............................................................................3 1.3 Goals ................................................................................................3 1.4 Work Organization ................................................................................3 1.5 Report Contents ...................................................................................4 2 State of The Art ............................................................................. 7 2.1 Related Work ......................................................................................7 2.2 Existing Technologies ............................................................................9 2.2.1 Jenkins ...........................................................................................9 2.2.2 Buddy........................................................................................... 11 2.2.3 Travis CI ....................................................................................... 14 2.2.4 Teamcity ....................................................................................... 15 2.2.5 CircleCI ........................................................................................ 18 2.2.6 BuddyBuild .................................................................................... 20 2.2.7 Bitrise .......................................................................................... 21 2.2.8 Drone ........................................................................................... 24 2.2.9 Bamboo ........................................................................................ 26 2.2.10 GitLab ........................................................................................ 29 2.3 Comparing the Technologies .................................................................. 31 3 Business Value Analysis .................................................................. 35 3.1 New Concept Deployment ..................................................................... 35 3.1.1 Opportunity Identification .................................................................. 36 3.1.2 Opportunity Analysis ......................................................................... 36 3.1.3 Idea Genesis & Enrichment ................................................................. 39 3.1.4 Idea Selection ................................................................................. 39 3.1.5 Concept and Technology Definition ........................................................ 39 3.2 Value Creation .................................................................................. 40 3.2.1 Value ........................................................................................... 40 3.2.2 Customer Value ............................................................................... 40 3.2.3 Longitude Perspective of Value ............................................................ 41 3.3 Value Proposition ............................................................................... 42 3.4 Quality Function Deployment (QFD) ......................................................... 43 4 Design ....................................................................................... 47 4.1 Non-Functional & Functional Requirements ................................................ 47 4.2 Use-Case Diagram ............................................................................... 48 4.3 Activity Diagram ................................................................................ 49 4.4 CI/CD Pipelines diagrams for Android & IOS Apps .......................................... 50 4.5 Component Diagram ............................................................................ 51 4.6 Alternatives and Selected Solution ........................................................... 52 4.6.1 Shared Runners & Docker image (Android) ............................................... 53 4.6.2 AWS EC2 instance & registering Shell Runner (Android) ................................ 53 4.6.3 Kubernetes cluster & Docker image (Android) ........................................... 54 4.6.4 Mac Servers (IOS) ............................................................................. 56 5 Implementation............................................................................ 59 5.1 Implementation for Android ................................................................... 59 5.1.1 Create Cluster in EKS AWS service ......................................................... 59 5.1.2 Configure the cluster as runner in Gitlab ................................................. 63 5.1.3 Build Docker image........................................................................... 66 5.1.4 Push Docker image to ECR AWS registry .................................................. 67 5.1.5 Use S3 as Cache server ...................................................................... 68 5.1.6 Add Gitlab Pipeline & bash script to Repository ......................................... 68 5.2 Implementation for IOS ........................................................................ 72 5.2.1 Configure the Mac servers as runners in Gitlab .......................................... 72 5.2.2 Use S3 as Cache server ...................................................................... 73 5.2.3 Add Gitlab Pipeline & bash script to Repository ......................................... 74 6 Experimentation & Evaluation .......................................................... 79 6.1 Research Hypothesis Specification ........................................................... 79 6.2 Indicators & Source of Information ........................................................... 79 6.3 Evaluation Methodology ....................................................................... 80 6.4 Evaluation Results .............................................................................. 80 7 Conclusion .................................................................................
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages120 Page
-
File Size-