{"id":20471523,"url":"https://github.com/backbase/variants","last_synced_at":"2025-04-13T11:08:19.552Z","repository":{"id":39866502,"uuid":"267622066","full_name":"Backbase/variants","owner":"Backbase","description":"A command-line tool to setup deployment variants for iOS and Android, alongside a working CI/CD setup.","archived":false,"fork":false,"pushed_at":"2024-05-06T13:23:10.000Z","size":7491,"stargazers_count":32,"open_issues_count":20,"forks_count":7,"subscribers_count":13,"default_branch":"develop","last_synced_at":"2024-11-13T17:03:03.149Z","etag":null,"topics":["android","ci-cd","continuous-delivery","continuous-deployment","developer-tools","ios","mobile"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Backbase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-28T15:09:42.000Z","updated_at":"2024-11-08T09:40:07.000Z","dependencies_parsed_at":"2023-02-19T09:01:33.651Z","dependency_job_id":"75027784-a8cc-4540-b7ac-f312acb6caea","html_url":"https://github.com/Backbase/variants","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fvariants","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fvariants/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fvariants/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fvariants/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Backbase","download_url":"https://codeload.github.com/Backbase/variants/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224792473,"owners_count":17370788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","ci-cd","continuous-delivery","continuous-deployment","developer-tools","ios","mobile"],"created_at":"2024-11-15T14:16:25.441Z","updated_at":"2025-04-13T11:08:19.545Z","avatar_url":"https://github.com/Backbase.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"![CI](https://github.com/Backbase/variants/workflows/develop/badge.svg)\n[![codecov](https://codecov.io/gh/Backbase/variants/branch/develop/graph/badge.svg?token=53TWMUH4KE)](https://codecov.io/gh/Backbase/variants)\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"Assets/Examples/variants_logo.svg\" title=\"variants\"\u003e\n\u003c/p\u003e\n\n## Variants\n\nA command line tool to setup deployment variants and working CI/CD setup for mobile projects.\n\n## Concept\n\nVariants 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`.\n\nVariants 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.\nThis file is responsible for:\n* 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));\n* [Which store](docs/STORE_DESTINATION.md) do you want Fastlane to deploy each variant to;\n* [Signing configuration](docs/ios/WORKING_WITH_FASTLANE_MATCH.md). Both global (applies to all) and variant specific (overrides global);\n* [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.\n\n## Features\n\n- ✅ Setup your mobile project to have multiple variants of the same application.\n    - ➡️ Each variant having it's own:\n        - Name\n        - Identifier\n        - Icon\n        - Version\n        - Specific tasks and configurations\n        - Anything really!\n- ✅ Setup CI/CD using fastlane.\n    - ➡️ Lanes for specific tasks:\n        - Setup CI\n        - Create Keychain\n        - Perform Unit and UI tests\n        - Lint and format\n        - Complexity analisys\n        - Sonar report\n        - Build and sign application\n        - Deploy to AppCenter / PlayStore / AppStore\n        - Many more!\n\n## Installation\n\n### Dependencies\n\nIn order to generate the code from templates, Variants requires Python 3. We recommend configuring the python version using a version management tool such as Pyenv.\n\nFor details on how to install and use it check the [Pyenv repo](https://github.com/pyenv/pyenv).\n\n### On Github Actions CI\n\nSee [Switching Variants on CI](docs/GITHUB_ACTION.md) for a better understanding and examples.\n\n### Homebrew **(recommended)**\n\n```sh\nbrew install backbase/m/variants\n```\n\n### Make\n\n\u003e For **Linux**, make sure you have [Swift installed](https://www.swift.org/getting-started/#installing-swift) by running `swift --version` \n\n```sh\ngit clone https://github.com/backbase/variants.git\ncd variants\nmake install\n```\n\nOnce the installation is completed, the binary will be added to your `~/.local` folder. Make sure to have the folder included in your `PATH` variable. This should be done in the shell configuration file\n\nAdd the following to the `~/.zshrc` or `~/.bashrc` file:\n```sh\nexport PATH=$HOME/.local/bin:/usr/local/bin:$PATH\n```\n\nMake sure to restart your terminal or source the changed file with `source ~/.zshrc` or `source ~/.bashrc`\n\n\n### Swift Package Manager\n\n#### Use as CLI\n\n```sh\ngit clone https://github.com/backbase/variants.git\ncd variants\nswift run variants\n```\n\n## CLI Usage\n\nFor usage and examples see [USAGE](docs/USAGE.md).\n\n## Auto detecting the project's platform\n\nSpecifying your project's platform (`ios` or `android`) isn't always necessary. Variants is able to detect which platform your project is.\nSee our [Platform Auto Detection](docs/PLATFORM_AUTO_DETECTION.md) for a better understanding and examples.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbackbase%2Fvariants","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbackbase%2Fvariants","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbackbase%2Fvariants/lists"}