Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/erikzaadi/da-playa

Deploy locks management (CLI and Slackbot)
https://github.com/erikzaadi/da-playa

Last synced: 17 days ago
JSON representation

Deploy locks management (CLI and Slackbot)

Awesome Lists containing this project

README

        

# 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

| | PRODUCTION | 123123123 | 123123123 | true | false | CI URL
| | STAGING | 123123123 | 123123123 | false | true | Slack
| | WHATEVZ | 123123123 | 123123123 | false | true | CLI
```

`DaPlayaRunningJobs`

```
id | user | jobname | version | started | ended | skipped

| | deploy-prod | GIT_SHA1 | 123123123 | 123123123 | true
| | deploy-stage | GIT_SHA1 | 123123123 | | false
| | 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 # list locks
locks release --env --user [--uberlock] # release locked env for user at env
locks lock --env --user [--meta ] [--uberlock] # locks an env for the user
jobs start --jobname --user --gitversion # creates a running job
jobs get --jobname --gitversion # get the details of a specific job
jobs end --jobname --gitversion [--skipped] # ends a running job, optionally set it as skipped
jobs active --jobname [--ttl ] # list all running jobs within time frame
jobs skipped --jobname [--ttl ] # 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 by `

## Additional Env Vars

```sh
DAPLAYA_AWS_REGION # Optionally explicitly set region to save DynamoDB table
```

---

```
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................
:::::::::::::::::::::::::::::::::::::::::::::::::.:::::::................................::.---:.....:.........
:::::::::::::::::::::::::::::::::::::::::::::::::------:::::.:::.......................:::--:..........::::::..
:::::::::-:::::--:::::::::::::::::::---:--:::::::::::::::::::::::.............::::::::..............:::::::::::
::::::-::--:-::---:::::::::::::::::::::--:-::::::::::::::::::::::..........:::-----:--:::...........=+-:::-+*+-
::::----::-----:--:::::::::::::::::::::::::::::::::::----=--::::::..:....::--------:::::-::::::.....:##-:+*#+-.
:::::-:::::----:::--:::::::::::::::::::::::::::::::::::--:::::::::.:....:----:-------====*=-:::.::..:+#++##=:::
:::::--:::::----:-----::::::::::::::::::::::::::::::::::::::::::::::...:------------------::.::::::::+#*#*+==-:
::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::.::---------------:---:.::::-=**##%%%%##*-
--:::::::--:::----------:::-::::======-::::::::::::::::::::::::::::::::--------------------:::::+#*=+*#%%#+*++-
----:::::::::::--:--------:::::-#%#+=-:::::::::::::::::::::::::::::::::--------------------:::-**=--*####%*=:::
------::::-::::---::::----::::-*=*=++=====-::::::::::::::::::::::::::::::-------=*===------:=+=-::-**+#=+#*+:::
-------:::---------:-------::-*+=%%%#*+=-:::::::::::::::::::::::::::::::::-------+###+---=*#*-::::=+--*:-#+-:::
--------::-------------------*#-+#*=-::::::::::::::::::::::::::::::::::::::::-----+%##*--*%%=::::-+-:=+::+=-:::
---------------------:------+%*-+=------:--:::::::::::::::::::::::::::::::::::-+**##%%%#*%#+---::::::+=::-:::::
---------------------------+%%+-++--------:::::::::::::::::::::::::::::::::::+******%%%#%%%%%%#*=-:::*=::::::::
=-------------------------=%@@=-+*------------::::::::::::::::::::::::::::::--:-:=+*#%%%%%%#**+##*=::#-::::::::
=------------------------=%@@@--+*------------------::::::::::::::::::::::::::::-*#***#%#@%%*-::---::#-::::::::
====---------------------%@@@@--*%------------------::::::::::::::::::::::::::::+#*-=#%##%#%%+-:::::-%=::::::::
========----------------#@@%%@=*#%+-----------=------------::::::::::::::::::::-+--:+##*=%+*#%=:::::-%=::::::::
=======-===------------*%@@@%%%+*@#-----------+------------:----:-::::::::::::::-:::-**+-**-+#+::::::%+-:::::::
==============--------+@@%#+*@*-*@%=----------*----==-------------------::::::::::::-**-:=%=:==::::::%*-:::::::
=================---=+@@#=-#@@*-*@@#----------#---------------------------:::::::-:---=-:-#*:--------##-::::--:
=====================%%+-=%@@#*-#@@@+---------%+-----------------------------::-----------+%+--------#%-------:
===================+%#+=+@@@@#++#@@@%=--------%#----=-==---===----------------------------=%%=----===#%==------
++++++++++++++*++++%#**#@@@@@%*#%@@@@%++++++++%@*++++++++++================================+@%=======#@*======-
******************##+*#@@@@@@@#%@@@@@@*++==+++%@#++==+============--------------------------*@#=-----*@#======:
=+++++++**+++****##++#@%#**#%@@#%@@@@@@+======@@@*===============----------------------------#@#-----+@%------:
=+++++++++++++++*#+*%%*+++#@@@@+%@@@@@@%+=====@@@@+==============-----------------------------#@#==--+@@===---:
+++++++++++++++**+*%*++*%@@@@@%=%@@@@@@@%+====@@@@@*=============-----------------------------=#@%+===@@*=====-
+++++++++++++++*+*#++#%@@@@@@@@+%@@@@@@@@%*===@@@@@@#==============----------------------------=#@@*-=%@#=====:
++++++++++++++*+##*#@@@@@@@@@@@*%@@@@@@@@@@#++@@@@@@@%*============--------=---------------------*@@#=#@@+==+++
+++++++++++++*+#%%@%%%####%%%@@%#############**++++++*++++++======----=-=-=--------------===-=-===+%@@%@@%***%*
++++++++++++##%%%##*##*******##%#**********+**#++++++======================------+******#%@%%**%##%%@@@@@@@@%%*
+++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*============--======--------=+#%%#@@@@@@@@@@@@@@@@@@@@@@@*
=+++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++=====================--======++=*%%%%@@@@@@@@@@@@@@@@@@#
++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++=+===============================+*===+@@@@@@@@@@@@@@@@@#
++++++++++++++++++++++++++++++++++++++++++++++++=============================+===============**%@@@@@@@@@@@@@@%
+++++++++++++=+++==+=======++++++++++====+=====================================================**%@@@@@@@@@@@@%
+++++++++++++++++++++==++==++++++++++++===================================================+++*+=+*@@@@@@@@@@@@%
+++++++=++++++++++++++++++++++++++++++++++++++++==++++++==++++=====++=+=+++**+++++++++++++++##+*%%@@@@@@@@@@@@%
=+++++++++++++++++++++++++++++++++=+=+++++++++++=+++++++++++++++++*%@%###%%@@@%%#*++%*++#%++%@#@@@@@@@@@@@@@@@%
===============+=+++++++++++++++++++++++++++++=+++++++++++++++%%%%@%%%%@@@@@@@@@@@@%@%+*%@@@@@@@@@@@@@@@@@@@@@%
```

### Testing locally

```sh
npm run -s cli -- # -s to supress npm verbose output
```