Repository files navigation
Before starting any practice, it's essential to conduct research and learn the necessary concepts.
Create a GitHub repository for each Practical if one doesn't already exist.
Learn Basic DevOps Principles:
Learn how to use Version Control effectively for your codebase as Git is Fundamental.
Know how to write unit tests and UI tests for your iOS app as these tests are crucial in DevOps.
Start by understanding the core DevOps concepts like continuous integration, continuous deployment, and automation.
Learn some basic scripts to get a basic understanding of scripting language.
Be aware of basic security practices, especially as they relate to your app and data handling.
Some Basic Guidelines for CI/CD:
Understand the CI/CD concepts and their significance with pipeline usage.
Learn how to set up the basic CI/CD pipeline with the GitLab-CI tool.
All lint rules should be passed from the pipeline.
Understand how to manage project dependencies like Cocoapods. And integrate them into the pipeline.
Learn to automate the testing into the CI/CD pipeline.
Learn how to use environment variables effectively in CI/CD pipelines including handling sensitive information like some passwords or keys.
Get detailed knowledge about Signing Certificates and Provision profiles (Code Signing credentials) and learn to manage them with the pipeline.
Understand auto deployments to the Apple App Store and TestFlight.
Understand automatic versioning of the app within the CI/CD distribution pipeline.
Ensure code quality with Linting
Read this quick guide about the Swift API usage guideline
Integrate SwiftLint in Practical 24
Create a GitHub repository for the Practical if one doesn't already exist.
Add the following rules
Enforce Naming conventions for functions, packages, and properties.
Ensure no trailing whitespaces at the end of lines.
Limit the line length to a maximum of 90 characters.
Limit the length of the function to a maximum of 20 lines.
Limit the file length to a maximum of 400 lines and show an error if it increases to 500.
Write GitLab CI script to run lint.
Ensure that the linting process runs on each commit.
Integrate SwiftLint in Practical 23
Write the following rules:
Enforce Naming conventions for functions, packages, and properties.
The line shouldn't be longer than 80
Files shouldn't be longer than 250 lines
Enforce consistent indentation (spaces vs. tabs).
Specify the maximum number of vertical blank lines between 2 classes or functions.
Limit the number of parameters a function can have to 6.
Enforce naming conventions (camelCase) for variable and function names except for fields like - id, and url.
Write GitHub Action to run lint
Create a GitHub Actions workflow file in the project repository.
Configure the workflow to run SwiftLint as a check on each commit.
Ensure that the linting process is triggered automatically.
Integrate SwiftLint in Practical 17
Write the following rules:
Enforce Naming conventions for functions, packages, and properties.
The line shouldn't be longer than 80
Files shouldn't be longer than 250 lines
Enforce consistent indentation (spaces vs. tabs).
Specify the maximum number of vertical blank lines between 2 classes or functions.
Limit the number of parameters a function can have to 6.
Detect unused closure parameters and show a warning for that.
Detect and return warning for the use of force casts and force try.
Enforce whitespace around the operators.
Enforce comments that start with “MARK: -”
Enforce a file header comment at the beginning of the Swift files.
Enforce the ViewModel files to have a ViewModel suffix in their filename with the proper naming convention.
Write GitLab CI script to run the unit test of Practical 24
Create a repository on GitLab
Automate unit testing with GitLab CI
It should run on each commit
Write GitHub Action flow to run the unit test of Practical 25
Create a repository on GitHub
Automate unit testing with GitHub CI
It should run on each commit
Write GitHub Action flow to run the unit test of Practical 17
Create a repository on GitLab
Automate unit testing with GitHub CI
It should run on each commit
Create dev and prod flavors
Use Practical 27
The project will have two flavors - "prod" and "dev," each with distinct configurations:
prod Flavor:
Uses the "prod-db" Firestore database.
Apply a specific theme for the production environment.
dev Flavor:
Uses the "dev-db" Firestore database.
Apply a different theme for the development environment.
Use Practical 26
Create a GitLab repository for the Practical if one doesn't already exist.
Configure the script to:
Lint should run with each commit
Write a script to archive the build on location
Set up the GitLab CI/CD pipeline to run the build script with each commit push
Use Practical 17
Create a GitHub repository for the Practical if one doesn't already exist.
Configure the script to:
Lint should run with each commit
Write a script to archive the build on location
Automate the build generation using a GitLab CI/CD script.
Use Practical 27
Generate signing certificates.
Store the certificate and profile credentials as environment variables for security.
Write a script to install those signing certificates to GitLab CI.
Generate IPA from the archived build.
Upload the IPA to the iTunes Connect account.
The script should run only with merging MR pipeline.
Use Practical 26
Generate signing certificates.
Do all the things the same as the Practical 11, but using GitHub.
Use Practical 17
Generate signing certificates.
Store the certificate and profile credentials as environment variables for security.
Write a script to install those signing certificates to GitLab CI.
Add auto versioning script to increase the version number with each build push.
Generate IPA from the archived build.
Upload the IPA file to the iTunes Connect account.
The script should run only with merging MR pipeline.
About
A comprehensive guide for iOS developers to master DevOps practices in their workflow.
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.