This is a template for getting started with iOS development using GitLab and fastlane and firebase app distribution. This report dedicated to CI/CD concepts and how we can automate and simplify the deploy process!
What is CI/CD?
What is Continuous integration?
What is Continuous delivery?
What is Continuous deployment?
A deeper look into the CI/CD workflow
Comparison of deployment cycles
When to use ci/cd processes?
The top benefits of CI/CD for iOS
Best practices to remember for iOS CI/CD
Some Tips
Main advantages/disadvantages of CI/CD
Platform selection
Introducing the Fastlane automation tool
Introducing the basic features of Fastlane
GitLabCI teory/concepts
Pipeline Rules
Gitlab-runner set up
Step-by-step instructions for deploying ios app with gitlab-runner and Fastlane and uploading the app to FirebaseAppDistribution
You'll need a working MacOS development environment with XCode 10 to use this template. You can find instructions to get up and running on the Apple XCode website. You can find instructions to get up gitlab-runner on the report and offitial documentation.
-swift lint scripts
-fastlane scripts for process automation and distribution in firebase builds
-gitlab file containing steps and jobs to run with the local gitlab-runner.
Enjoy! 😄
Install gitlab-runner on mac:
brew install gitlab-runner
Making mac a CI runner:
gitlab-runner register
Launching the runner:
gitlab-runner install
gitlab-runner start
Status::
gitlab-runner status
Rules:
The file name should always be .gitlab-ci.yml with a dot at the beginning.
If you accidentally named the file incorrectly, then this file will not be recognized, and the runner will not execute the script.
This file must be created in the root folder of the project.
Tags are also defined in the .yml file. These tags correspond to the tags that were defined during the setup of the runners.
After calling the yml file, the runner with the same tag as specified in the yml file will take the job and execute it through the pipeline.
A pipeline is a set of tasks/stages defined in a yml file for execution.
Each task/stage defined in the yml file is a job.
A pipeline only succeeds if all the jobs associated with it succeed.
If at least one job fails, the pipeline will not throw an error message in the Gitlab console.
- Hrebinik Artem, CHI Software
- Kosyi Vlad, CHI Software
Copyright 2022 CHI Software.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.