UNPKG

@salto-io/da-playa

Version:

Deploy locks management (CLI and Slackbot)

114 lines (88 loc) 7.46 kB
# Da-Playa - Dynamo Deploy Locker and Running Jobs coordinator ![](./yo.jpg) ### Da-Playa stores the locks and running jobs in DynamoDB #### DB Schema: `DaPlayaLocks` ``` id | user | env | createdAt | updatedAt | active | uberlock | meta <UUID> | <COMMITER_EMAIL> | PRODUCTION | 123123123 | 123123123 | true | false | CI URL <UUID> | <COMMITER_EMAIL> | STAGING | 123123123 | 123123123 | false | true | Slack <UUID> | <COMMITER_EMAIL> | WHATEVZ | 123123123 | 123123123 | false | true | CLI ``` `DaPlayaRunningJobs` ``` id | user | jobname | version | started | ended | skipped <UUID> | <COMMITER_EMAIL> | deploy-prod | GIT_SHA1 | 123123123 | 123123123 | true <UUID> | <COMMITER_EMAIL> | deploy-stage | GIT_SHA1 | 123123123 | | false <UUID> | <COMMITER_EMAIL> | WHATEVZ | GIT_SHA1 | 123123123 | 123123123 | false ``` ## CLI Loads AWS credentials from environment variables (either `AWS_PROFILE` or the explicit `AWS_SECRET_ACCESS_KEY` and `AWS_ACCESS_KEY_ID`). ```sh init # creates table locks list --env <ENV> # list locks locks release --env <ENV> --user <USER> [--uberlock] # release locked env for user at env locks lock --env <ENV> --user <USER> [--meta <META>] [--uberlock] # locks an env for the user jobs start --jobname <JOBNAME> --user <USER> --gitversion <VERSION> # creates a running job jobs get --jobname <JOBNAME> --gitversion <VERSION> # get the details of a specific job jobs end --jobname <JOBNAME> --gitversion <VERSION> [--skipped] # ends a running job, optionally set it as skipped jobs active --jobname <JOBNAME> [--ttl <TIMEFRAME>] # list all running jobs within time frame jobs skipped --jobname <JOBNAME> [--ttl <TIMEFRAME>] # list all skipped jobs within time frame ``` **Note:** `lock` keeps writing attempts for locking in case it's waiting (every 5 seconds). E.g. : `Still locked at env <ENV> by <USER>` ## Additional Env Vars ```sh DAPLAYA_AWS_REGION # Optionally explicitly set region to save DynamoDB table ``` --- ``` :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................... :::::::::::::::::::::::::::::::::::::::::::::::::.:::::::................................::.---:.....:......... :::::::::::::::::::::::::::::::::::::::::::::::::------:::::.:::.......................:::--:..........::::::.. :::::::::-:::::--:::::::::::::::::::---:--:::::::::::::::::::::::.............::::::::..............::::::::::: ::::::-::--:-::---:::::::::::::::::::::--:-::::::::::::::::::::::..........:::-----:--:::...........=+-:::-+*+- ::::----::-----:--:::::::::::::::::::::::::::::::::::----=--::::::..:....::--------:::::-::::::.....:##-:+*#+-. :::::-:::::----:::--:::::::::::::::::::::::::::::::::::--:::::::::.:....:----:-------====*=-:::.::..:+#++##=::: :::::--:::::----:-----::::::::::::::::::::::::::::::::::::::::::::::...:------------------::.::::::::+#*#*+==-: ::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::.::---------------:---:.::::-=**##%%%%##*- --:::::::--:::----------:::-::::======-::::::::::::::::::::::::::::::::--------------------:::::+#*=+*#%%#+*++- ----:::::::::::--:--------:::::-#%#+=-:::::::::::::::::::::::::::::::::--------------------:::-**=--*####%*=::: ------::::-::::---::::----::::-*=*=++=====-::::::::::::::::::::::::::::::-------=*===------:=+=-::-**+#=+#*+::: -------:::---------:-------::-*+=%%%#*+=-:::::::::::::::::::::::::::::::::-------+###+---=*#*-::::=+--*:-#+-::: --------::-------------------*#-+#*=-::::::::::::::::::::::::::::::::::::::::-----+%##*--*%%=::::-+-:=+::+=-::: ---------------------:------+%*-+=------:--:::::::::::::::::::::::::::::::::::-+**##%%%#*%#+---::::::+=::-::::: ---------------------------+%%+-++--------:::::::::::::::::::::::::::::::::::+******%%%#%%%%%%#*=-:::*=:::::::: =-------------------------=%@@=-+*------------::::::::::::::::::::::::::::::--:-:=+*#%%%%%%#**+##*=::#-:::::::: =------------------------=%@@@--+*------------------::::::::::::::::::::::::::::-*#***#%#@%%*-::---::#-:::::::: ====---------------------%@@@@--*%------------------::::::::::::::::::::::::::::+#*-=#%##%#%%+-:::::-%=:::::::: ========----------------#@@%%@=*#%+-----------=------------::::::::::::::::::::-+--:+##*=%+*#%=:::::-%=:::::::: =======-===------------*%@@@%%%+*@#-----------+------------:----:-::::::::::::::-:::-**+-**-+#+::::::%+-::::::: ==============--------+@@%#+*@*-*@%=----------*----==-------------------::::::::::::-**-:=%=:==::::::%*-::::::: =================---=+@@#=-#@@*-*@@#----------#---------------------------:::::::-:---=-:-#*:--------##-::::--: =====================%%+-=%@@#*-#@@@+---------%+-----------------------------::-----------+%+--------#%-------: ===================+%#+=+@@@@#++#@@@%=--------%#----=-==---===----------------------------=%%=----===#%==------ ++++++++++++++*++++%#**#@@@@@%*#%@@@@%++++++++%@*++++++++++================================+@%=======#@*======- ******************##+*#@@@@@@@#%@@@@@@*++==+++%@#++==+============--------------------------*@#=-----*@#======: =+++++++**+++****##++#@%#**#%@@#%@@@@@@+======@@@*===============----------------------------#@#-----+@%------: =+++++++++++++++*#+*%%*+++#@@@@+%@@@@@@%+=====@@@@+==============-----------------------------#@#==--+@@===---: +++++++++++++++**+*%*++*%@@@@@%=%@@@@@@@%+====@@@@@*=============-----------------------------=#@%+===@@*=====- +++++++++++++++*+*#++#%@@@@@@@@+%@@@@@@@@%*===@@@@@@#==============----------------------------=#@@*-=%@#=====: ++++++++++++++*+##*#@@@@@@@@@@@*%@@@@@@@@@@#++@@@@@@@%*============--------=---------------------*@@#=#@@+==+++ +++++++++++++*+#%%@%%%####%%%@@%#############**++++++*++++++======----=-=-=--------------===-=-===+%@@%@@%***%* ++++++++++++##%%%##*##*******##%#**********+**#++++++======================------+******#%@%%**%##%%@@@@@@@@%%* +++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*============--======--------=+#%%#@@@@@@@@@@@@@@@@@@@@@@@* =+++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++=====================--======++=*%%%%@@@@@@@@@@@@@@@@@@# ++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++=+===============================+*===+@@@@@@@@@@@@@@@@@# ++++++++++++++++++++++++++++++++++++++++++++++++=============================+===============**%@@@@@@@@@@@@@@% +++++++++++++=+++==+=======++++++++++====+=====================================================**%@@@@@@@@@@@@% +++++++++++++++++++++==++==++++++++++++===================================================+++*+=+*@@@@@@@@@@@@% +++++++=++++++++++++++++++++++++++++++++++++++++==++++++==++++=====++=+=+++**+++++++++++++++##+*%%@@@@@@@@@@@@% =+++++++++++++++++++++++++++++++++=+=+++++++++++=+++++++++++++++++*%@%###%%@@@%%#*++%*++#%++%@#@@@@@@@@@@@@@@@% ===============+=+++++++++++++++++++++++++++++=+++++++++++++++%%%%@%%%%@@@@@@@@@@@@%@%+*%@@@@@@@@@@@@@@@@@@@@@% ``` ### Testing locally ```sh npm run -s cli -- <PARAMS> # -s to supress npm verbose output ```