Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/backbase/variants
A command-line tool to setup deployment variants for iOS and Android, alongside a working CI/CD setup.
https://github.com/backbase/variants
android ci-cd continuous-delivery continuous-deployment developer-tools ios mobile
Last synced: about 4 hours ago
JSON representation
A command-line tool to setup deployment variants for iOS and Android, alongside a working CI/CD setup.
- Host: GitHub
- URL: https://github.com/backbase/variants
- Owner: Backbase
- License: apache-2.0
- Created: 2020-05-28T15:09:42.000Z (over 4 years ago)
- Default Branch: develop
- Last Pushed: 2024-05-06T13:23:10.000Z (6 months ago)
- Last Synced: 2024-11-13T17:03:03.149Z (2 days ago)
- Topics: android, ci-cd, continuous-delivery, continuous-deployment, developer-tools, ios, mobile
- Language: Swift
- Homepage:
- Size: 7.14 MB
- Stars: 32
- Watchers: 13
- Forks: 7
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
![CI](https://github.com/Backbase/variants/workflows/develop/badge.svg)
[![codecov](https://codecov.io/gh/Backbase/variants/branch/develop/graph/badge.svg?token=53TWMUH4KE)](https://codecov.io/gh/Backbase/variants)
## Variants
A command line tool to setup deployment variants and working CI/CD setup for mobile projects.
## Concept
Variants aims to *facilitate the setup and usage of multiple deployment variants for a mobile application* (iOS and Android) while also *providing a fully working and rich Fastlane setup, with opt-in features for your pipelines*. While achieving these goals, it also reduces the amount of sources of truth in your configuration, by relying only on the ***Variants Spec*** - a YAML configuration file generated by `variants init`.
Variants spec - by default located at `./variants.yml`, relative to your project's base folder - becomes the sole source of truth and the main configuration file for your needs.
This file is responsible for:
* Specifying how many deployment variants you desire for this project and the differences between these variants (Name, Icon, Identifier, Version, and more with [Custom Properties](docs/CUSTOM_PROPERTY.md));
* [Which store](docs/STORE_DESTINATION.md) do you want Fastlane to deploy each variant to;
* [Signing configuration](docs/ios/WORKING_WITH_FASTLANE_MATCH.md). Both global (applies to all) and variant specific (overrides global);
* [Custom properties](docs/CUSTOM_PROPERTY.md). Both global (applies to all) and variant specific (overrides global). Custom properties have different destinations, so that certain properties aren't available to Fastlane but to Project and vice-versa. These can also be sourced from environment variables, perfect for secrets and tokens.## Features
- ✅ Setup your mobile project to have multiple variants of the same application.
- ➡️ Each variant having it's own:
- Name
- Identifier
- Icon
- Version
- Specific tasks and configurations
- Anything really!
- ✅ Setup CI/CD using fastlane.
- ➡️ Lanes for specific tasks:
- Setup CI
- Create Keychain
- Perform Unit and UI tests
- Lint and format
- Complexity analisys
- Sonar report
- Build and sign application
- Deploy to AppCenter / PlayStore / AppStore
- Many more!## Installation
### On Github Actions CI
See [Switching Variants on CI](docs/GITHUB_ACTION.md) for a better understanding and examples.
### Homebrew (recommended)
```sh
brew install backbase/m/variants
```### Make
> For **Linux**, make sure you have [Swift installed](https://www.swift.org/getting-started/#installing-swift) by running `swift --version`
```sh
git clone https://github.com/backbase/variants.git
cd variants
make install
```### Swift Package Manager
#### Use as CLI
```sh
git clone https://github.com/backbase/variants.git
cd variants
swift run variants
```## CLI Usage
For usage and examples see [USAGE](docs/USAGE.md).
## Auto detecting the project's platform
Specifying your project's platform (`ios` or `android`) isn't always necessary. Variants is able to detect which platform your project is.
See our [Platform Auto Detection](docs/PLATFORM_AUTO_DETECTION.md) for a better understanding and examples.