- 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.
- 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
- 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.