Remocon
remocon is a CLI for Firebase Remote Config via its REST API. Conditions and parameters are managed by YAML files. The goal of this gem is Remote Config as a Code. :)
Now conditions cannot be updated via API so that you can modify only parameters.
If you’d like to use this on CircleCI, you can use https://github.com/jmatsu/remocon-starter-kit .
Usage
Get your access token
Since v0.3.0, remocon is supporting to get an access token.
If this doesn’t work, then please try bin/get_access_token <service-acount.json>
.
“sh token=$(bundle exec remocon –service-json=
Maruku could not parse this XML/HTML:
<path/to/service-account-json>)
“
Get the current configs into your local
“sh bundle exec remocon pull –prefix=projects –id=my_project_dev –token=xyz
“
Then, you can see paremeters.yml, conditions.yml, config.json, etag
files in projects/my_project_dev
directory.
If you don’t specify --prefix
, then the command create the files in the working directory
Environment variables
Some variables can be injected by environment variables.
“sh export REMOCON_FIREBASE_PROJECT_ID=<–id> export REMOCON_FIREBASE_ACCESS_TOKEN=<–token> export REMOCON_PREFIX=<–prefix> # Optional
FIREBASE_PROJECT_ID and REMOTE_CONFIG_ACCESS_TOKEN are supported but they are deprecated now
“
Edit configs on your local
Condition definitions and parameter definitions are separated. You need to modify these files.
parameters.yml
“ml key1: # key name value: 100 # default value conditions: condition1: value: 200 # a value to be used if condition1 is satisfied condition2: file: path_to_file # you can use file content. the file content is used for a value
“
conditions.yml
“ml - name: condition1 # condition name expression: device.os == ‘android’ # expression tagColor: “INDIGO” # color name - name: condition2 expression: device.os == ‘ios’ tagColor: CYAN
“
Update configs on remote
“sh
Create new configs as projects/my_project_dev/config.json
bundle exec remocon create –prefix=projects –id=my_project_dev
Upload projects/my_project_dev/config.json by using projects/my_project_dev/etag
bundle exec remocon push –prefix=projects –id=my_project_dev –token=xyz
You can use custom paths for config.json and etag
bundle exec remocon push –source=</path/to/config json> –etag=</path/to/etag>
Use the fixed etag value
bundle exec remocon push –raw_etag=
Maruku could not parse this XML/HTML:
<raw etag value>
“
Installation
“by gem ‘remocon’
“
Format
Parameters
You can use String, Boolean, Integer, Json validators like below.
“ml key: value: # optional (either of this or file is required). Raw value and hash are allowed. file: # optional (either of this or value is required). File content value. normalizer: # optional. Either of “integer”, “string”, “boolean”, “json”, “void”oid). conditions: # optional. If you want use conditional values, then you need to create this section. condition_name: # must be in condition definitions. value: … file: …
“
Conditions
It seems only three fields are supported by Remote Config. They are name, expression and tagColor.
Supported Ruby Version
Not EOL versions. ref https://www.ruby-lang.org/en/downloads/branches/
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/jmatsu/remocon .
License
The gem is available as open source under the terms of the MIT License.