Compare commits

..

71 Commits

Author SHA1 Message Date
5bc702bf96 Propagate new version around
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 11:44:58 +01:00
4bd842db66 Mark new release of abra 2021-03-01 11:41:44 +01:00
a8f7faddb9 Fix typo
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 11:38:31 +01:00
3wc
e5b2a426f0 Add shared backup helpers
All checks were successful
continuous-integration/drone/push Build is passing
2021-02-24 17:03:28 +02:00
3wc
29b22fe162 Display subcommand help with -h/--help
All checks were successful
continuous-integration/drone/push Build is passing
Closes #78
2021-02-11 15:02:37 +02:00
c082645da0 Remove test commit
All checks were successful
continuous-integration/drone/push Build is passing
2021-02-09 08:35:52 +01:00
156d5d8fba Merge pull request 'abra-commands.sh → abra.sh, make configs type-level' (#77) from move-configs into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/77
2021-02-09 08:31:45 +01:00
3wc
d2cdb11fcc Tweak INFO messages, update CHANGELOG
Some checks failed
continuous-integration/drone/pr Build is failing
2021-02-08 13:43:39 +02:00
3wc
cef06a82a6 abra-commands.sh → abra.sh 2021-01-30 16:10:40 +02:00
3wc
9a630a0440 Prevent accidental cd when loading app vars 2021-01-30 16:10:40 +02:00
3wc
1c6651b18b Fix secret generate help
[ci skip]
2021-01-30 16:10:13 +02:00
3wc
5f7df4694f Test failed drone build
Some checks failed
continuous-integration/drone/push Build is failing
2021-01-29 14:02:26 +02:00
3wc
7feeab24ec Add RocketChat notifications for failed builds 2021-01-29 13:44:55 +02:00
3wc
1a6688cfbf Merge branch 'debug_logging' into main
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-24 21:51:59 +02:00
3wc
f90e1d154c Add container IDs to debug log
All checks were successful
continuous-integration/drone/pr Build is passing
2021-01-24 19:11:22 +02:00
3wc
6cc265e931 Tweak info/debug output 2021-01-24 19:11:22 +02:00
3wc
854ae23f60 Initial --verbose / --debug 2021-01-24 19:11:22 +02:00
3wc
43e7672725 Prevent accidental cd when loading app vars
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-24 19:11:11 +02:00
4e913c426d Follow same style
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-09 20:07:16 +01:00
3wc
8a08de51e4 Alert on missing secrets, re-add . → _ STACK_NAME
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-09 15:07:39 +02:00
1c7a51bce1 Merge pull request 'App backup & restore' (#72) from backup_restore into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/72
2021-01-09 12:36:50 +01:00
3wc
5d84cef63c app restore
Some checks failed
continuous-integration/drone/pr Build is failing
2021-01-09 13:36:32 +02:00
3wc
eda5198904 Add scaffolding for per-app backup commands
See #70
2021-01-09 13:36:32 +02:00
3wc
a4a3dccd66 Add global --skip-check / --skip-update commands 2021-01-09 13:36:32 +02:00
3wc
a2d249e3a1 Fix abra app ls with * server
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-02 00:34:44 +02:00
dc83baea12 Remove tab
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-01 22:44:21 +01:00
3wc
d6b4a4744f Fix abra app ls for app → type
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-01 23:00:20 +02:00
6ba2657dc1 Use short hash convention
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-01 18:59:19 +01:00
ac6b805cbf Follow parens convention 2021-01-01 18:57:39 +01:00
d4e52a9de3 Merge pull request 'Make secret generation more robust' (#73) from simplify-secret-logic into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/73
2021-01-01 18:55:47 +01:00
aa59c1ad43 Make secret generation more robust
All checks were successful
continuous-integration/drone/pr Build is passing
Closes https://git.autonomic.zone/coop-cloud/abra/issues/68.
2021-01-01 18:54:41 +01:00
36f1d679ae Merge pull request 'Merging auto functionality into generate command' (#64) from app-auto-merge into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/64
2021-01-01 17:32:30 +01:00
f5c8ee1136 Merge auto/generate and use --secrets
All checks were successful
continuous-integration/drone/pr Build is passing
Closes https://git.autonomic.zone/coop-cloud/abra/issues/58.
2021-01-01 17:31:21 +01:00
3wc
9a17817cc8 Tiny tweak to abra help advice
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-01 17:57:36 +02:00
3wc
b2e3292453 Add version subcommand to CHANGELOG 2021-01-01 17:55:45 +02:00
13fafb5929 Fix typo and link to commit
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-01 14:18:30 +01:00
3wc
114f99ae2e Update CHANGELOG
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-01 15:11:04 +02:00
3wc
fff4b10a41 Gettin some help_
All checks were successful
continuous-integration/drone/push Build is passing
See #50
2021-01-01 15:09:49 +02:00
ab1353603d Use homebrewed image for CI too
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-01 13:49:19 +01:00
1600b6277f Use the One True Way for testing
All checks were successful
continuous-integration/drone/push Build is passing
Closes https://git.autonomic.zone/coop-cloud/abra/issues/71.
2021-01-01 13:48:14 +01:00
b79e35f982 Merge pull request 'Add per-subcommand help using abra help <subcommand>' (#61) from command_help_2 into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/61
2021-01-01 13:13:29 +01:00
703dbe0a0f Merge branch 'main' into command_help_2
All checks were successful
continuous-integration/drone/pr Build is passing
2021-01-01 13:09:57 +01:00
7abb0191e1 Use upstream CI image
All checks were successful
continuous-integration/drone/push Build is passing
See https://git.autonomic.zone/coop-cloud/docker-dind-bats-kcov.
2021-01-01 12:26:50 +01:00
3wc
886ae5b7f2 Fix help function names
All checks were successful
continuous-integration/drone/pr Build is passing
2021-01-01 01:46:09 +02:00
3wc
5411c85793 Don't require weird app_ls format for abra help
All checks were successful
continuous-integration/drone/pr Build is passing
2021-01-01 01:42:17 +02:00
3wc
caa315e361 Add per-subcommand help 2021-01-01 01:13:17 +02:00
3wc
e6b24fe65c Change -v option to version subcommand 2021-01-01 01:10:03 +02:00
3wc
81782bb5f0 make test → test_local, test_docker, test_dind
All checks were successful
continuous-integration/drone/push Build is passing
test_local: run `bats tests/`. Requires `bats`.

test_docker: run docker and install bats in it.

Both of these options require that your local Docker daemon is running
in swarm mode.

test_dind: starts a Docker daemon and runs tests in that. Requires sudo
2020-12-31 22:10:52 +02:00
406b9e374e Only output length if using it
All checks were successful
continuous-integration/drone/push Build is passing
Closes https://git.autonomic.zone/coop-cloud/abra/issues/67.
2020-12-31 18:16:01 +01:00
ce0e0e893c Use plain usage only when erroring out
All checks were successful
continuous-integration/drone/push Build is passing
Closes https://git.autonomic.zone/coop-cloud/abra/issues/65.
2020-12-31 18:12:01 +01:00
fac45f276e Add entry
All checks were successful
continuous-integration/drone/push Build is passing
2020-12-31 18:11:22 +01:00
44d3ac3a1c Support pwqgen/pwgen checking
Closes https://git.autonomic.zone/coop-cloud/abra/issues/66.
2020-12-31 18:10:13 +01:00
5da9f26076 Remove old function
Follow on from 3936d6afc0.
2020-12-31 18:06:20 +01:00
4e99cf1ded Add log entry
All checks were successful
continuous-integration/drone/push Build is passing
2020-12-31 16:57:10 +01:00
55324524ca Don't cut since export ... isn't in the env file
Closes https://git.autonomic.zone/coop-cloud/abra/issues/69.
2020-12-31 16:55:33 +01:00
b6928959cb Fix test target path
All checks were successful
continuous-integration/drone/push Build is passing
2020-12-31 13:50:10 +01:00
3wc
8ddb290683 Further update to tests for #47
All checks were successful
continuous-integration/drone/push Build is passing
2020-12-31 14:34:52 +02:00
2cb1134a54 Use _ now
Some checks failed
continuous-integration/drone/push Build is failing
2020-12-31 13:26:25 +01:00
c4b1ac482e Update change log
Some checks failed
continuous-integration/drone/push Build is failing
2020-12-31 13:22:26 +01:00
3wc
29cc392dff Prompt on app .. config if $EDITOR is un-set
Some checks failed
continuous-integration/drone/push Build is failing
Closes #41
2020-12-31 12:52:44 +02:00
3wc
8839bd4595 Fix server bash completion
Some checks failed
continuous-integration/drone/push Build is failing
Ref #45
2020-12-31 11:47:14 +02:00
3wc
0179f600f5 Change -v option to version subcommand 2020-12-31 11:47:12 +02:00
15f0233351 Merge pull request '<domain> → <app>, APP → TYPE' (#60) from domain_to_app into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/60
2020-12-30 22:22:11 +01:00
3wc
bbaacb7b9f Update tests for app-name
Some checks failed
continuous-integration/drone/pr Build is failing
2020-12-30 21:56:52 +02:00
3wc
6761574d74 Add "app name" concept, and rename APP → TYPE
Some checks failed
continuous-integration/drone/pr Build is failing
Ref #47
2020-12-30 21:26:17 +02:00
3wc
8384af8b95 First foray into <domain> → <app> 2020-12-30 13:47:41 +02:00
3wc
b9e97688d6 ... and update docopt
All checks were successful
continuous-integration/drone/push Build is passing
2020-12-30 13:43:17 +02:00
3wc
1055805c8d Merge duplicate run commands
All checks were successful
continuous-integration/drone/push Build is passing
Closes #57
2020-12-30 13:33:57 +02:00
678906cb39 Merge pull request 'Use set -a/+a and docker env file formats' (#55) from use-set-a into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/55
2020-12-30 11:23:30 +01:00
11c50ae98d Use set -a/+a and docker env file formats
Some checks failed
continuous-integration/drone/pr Build is failing
Closes https://git.autonomic.zone/coop-cloud/abra/issues/40.
2020-12-30 11:22:58 +01:00
e911ab246b Merge pull request 'Merge logs/multilogs and avoid multitail external' (#56) from merge-logging into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/56
2020-12-30 11:21:46 +01:00
7 changed files with 834 additions and 246 deletions

View File

@ -8,26 +8,36 @@ steps:
- shellcheck abra
- name: run unit tests
image: docker:dind
image: decentral1se/docker-dind-bats-kcov
commands:
- apk add bats git bash
- bats tests
- name: collect code coverage
failure: ignore # until we fix this
image: kcov/kcov:38
failure: ignore # until we fix this
image: decentral1se/docker-dind-bats-kcov
commands:
- apt update && apt install -y bats git bash
- kcov . bats tests || true
- name: send code coverage report to codecov
failure: ignore # until we fix this
failure: ignore # until we fix this
image: plugins/codecov
settings:
token:
from_secret: codecov_token
required: true
- name: notify rocket chat
image: plugins/slack
settings:
webhook:
from_secret: rc_builds_url
username: comradebritney
channel: "internal.builds"
template: "{{repo.owner}}/{{repo.name}} build failed: {{build.link}}"
when:
status:
- failure
trigger:
branch:
- main

View File

@ -1,10 +1,28 @@
# abra x.x.x (UNRELEASED)
# abra 0.5.0 (2021-03-01)
- `secret auto` merged into `secret generate` and `app new --auto` is now `app new --secrets` ([#64](https://git.autonomic.zone/coop-cloud/abra/pulls/64))
- Avoid outputting length during secret generation when not in use ([#67](https://git.autonomic.zone/coop-cloud/abra/issues/67))
- Support graceful failure when missing secret generation commands ([44d3ac3](https://git.autonomic.zone/coop-cloud/abra/commit/44d3ac3a1cb86edc9b9e91eea1a00e70eae14965))
- Fix secret detection when using new `.env` file format in apps ([5532452](https://git.autonomic.zone/coop-cloud/abra/commit/55324524ca77141666ffe6cc41b62cc71cf89ace))
- Support choosing an `$EDITOR` when editing configs ([29cc392](https://git.autonomic.zone/coop-cloud/abra/commit/29cc392dff3e93e48e0e2edd3ce11b405c66a95a))
- "server" shell completion fixed ([8839bd4](https://git.autonomic.zone/coop-cloud/abra/commit/8839bd45951d00dccf4ef81ece445bcc49e13ee6))
- Drop `multilogs` command ([#56](https://git.autonomic.zone/coop-cloud/abra/pulls/56))
- Remove `server use` command ([#51](https://git.autonomic.zone/coop-cloud/abra/issues/51))
- `new <app>` becomes `new <type>` ([#48](https://git.autonomic.zone/coop-cloud/abra/issues/48))
- `check` is run on `deploy` now and configurable ([77ba5652b2fe15820f5edfa0f642636f7b8eae7e](https://git.autonomic.zone/coop-cloud/abra/commit/77ba5652b2fe15820f5edfa0f642636f7b8eae7e))
- `check` is run on `deploy` now and configurable ([77ba565](https://git.autonomic.zone/coop-cloud/abra/commit/77ba5652b2fe15820f5edfa0f642636f7b8eae7e))
- App configurations are always updated now ([#42](https://git.autonomic.zone/coop-cloud/abra/issues/42))
- We use docker format `.env` files (no "export" syntax) from now now ([#55](https://git.autonomic.zone/coop-cloud/abra/pulls/55))
- Rename `<domain>` option to `<app>` and `APP` variable to `TYPE`, see ([#47](https://git.autonomic.zone/coop-cloud/abra/issues/47))
- Use Docker-in-Docker (dind), and `dind-bats-kcov` Docker image, for `make test` ([1600b62](https://git.autonomic.zone/coop-cloud/abra/commit/1600b6277fbbffc4c6de1e4ba799c7bbe72ec6a0))
- Add built-in documentation using `abra help <subcommand>...`, see ([#50](https://git.autonomic.zone/coop-cloud/abra/issues/50))
- `version` subcommand ([e6b24fe](https://git.autonomic.zone/coop-cloud/abra/commit/e6b24fe))
- Use `# length=x` comments to generate passwords with `pwgen` and drop `KEY`/`PASSWORD` logic ([#68](https://git.autonomic.zone/coop-cloud/abra/issues/68))
- Global `--skip-update|-U` / `--skip-check|-C` options to make things quicker ([37e8b00](https://git.autonomic.zone/coop-cloud/abra/commit/37e8b00))
- `app backup` and `app restore` commands; requires per-app definition ([#70](https://git.autonomic.zone/coop-cloud/abra/issues/70))
- Rename per-type `abra-commands.sh` to `abra.sh`, and include config versions as type-level instead of app-level config ([#43](https://git.autonomic.zone/coop-cloud/abra/issues/43))
- Show per-subcommand help by adding `-h/--help` to a command line ([#38](https://git.autonomic.zone/coop-cloud/abra/issues/78))
# abra 0.4.1 (2020-12-24)
@ -14,7 +32,7 @@
# abra 0.4.0 (2020-12-24)
- New command-line interface based on docopt
- ~/.abra directory instead of expecting local .env files
- `~/.abra` directory instead of expecting local `.env` files
- Integration tests & code coverage
# abra 0.3.1 (2020-09-27)

View File

@ -1,12 +1,19 @@
.PHONY: test shellcheck docopt kcov codecov
test:
@DOCKER_CONTEXT=default docker run \
-it \
--rm \
@sudo DOCKER_CONTEXT=default docker run \
-v $$(pwd):/workdir \
docker:dind \
sh -c "apk add bats git bash && cd /workdir && bats /workdir/test.bats"
--privileged \
-d \
--name=abra-test-dind \
-e DOCKER_TLS_CERTDIR="" \
decentral1se/docker-dind-bats-kcov
@DOCKER_CONTEXT=default docker exec \
-it \
abra-test-dind \
sh -c "cd /workdir && bats /workdir/tests"
@DOCKER_CONTEXT=default docker stop abra-test-dind
@DOCKER_CONTEXT=default docker rm abra-test-dind
shellcheck:
@docker run \

978
abra

File diff suppressed because it is too large Load Diff

View File

@ -91,7 +91,7 @@ _abra_complete()
case "$cmd" in
server)
# Offer exactly one server name completion.
if (( COMP_CWORD == cmd_index + 2 )); then
if (( COMP_CWORD == cmd_index + 1 )); then
_abra_complete_servers "$cur"
fi
;;

View File

@ -1,13 +1,13 @@
#!/bin/bash
ABRA_VERSION="0.4.1"
ABRA_VERSION="0.5.0"
ABRA_SRC="https://git.autonomic.zone/coop-cloud/abra/raw/tag/$ABRA_VERSION/abra"
function install_abra {
mkdir -p "$HOME/.local/bin"
curl "$ABRA_SRC" > "$HOME/.local/bin/abra"
curl "$ABRA_SRC" > "$HOME/.local/bin/abra"
chmod +x "$HOME/.local/bin/abra"
echo "abra installed to $HOME/.loca/bin/abra"
echo "abra installed to $HOME/.local/bin/abra"
}
function run_installation {

View File

@ -9,7 +9,7 @@ teardown() {
rm -rf "$ABRA_DIR"
}
@test "abra server add/rm works" {
@test "abra server (add|rm)" {
./abra server add swarm.test.com
docker context ls | grep swarm.test.com
[ -d $ABRA_DIR/servers/swarm.test.com ]
@ -20,30 +20,33 @@ teardown() {
./abra server swarm.test.com rm
}
@test "abra app new/rm works" {
./abra app new --server default --domain traefik.test.com traefik
[ -f $ABRA_DIR/servers/default/traefik.test.com.env ]
@test "abra server init" {
./abra server default init
}
@test "abra app (new|rm)" {
./abra app new --server default --domain traefik.test.com --app-name traefik_test_com traefik
[ -f $ABRA_DIR/servers/default/traefik_test_com.env ]
# interactive prompt
echo "y" | ./abra app traefik.test.com delete
[ ! -f $ABRA_DIR/servers/default/traefik.test.com.env ]
echo "y" | ./abra app traefik_test_com delete
[ ! -f $ABRA_DIR/servers/default/traefik_test_com.env ]
# --force
./abra app new --server default --domain traefik.test.com traefik
./abra app traefik.test.com delete --force
[ ! -f $ABRA_DIR/servers/default/traefik.test.com.env ]
./abra app new --server default --domain traefik_test_com --app-name traefik_test_com traefik
./abra app traefik_test_com delete --force
[ ! -f $ABRA_DIR/servers/default/traefik_test_com.env ]
}
@test "abra app <domain> secret (insert|generate|rm)" {
# TODO 3wc: mock `server new` so we don't endlessly re-test it
./abra app new --server default --domain traefik.test.com traefik
./abra app new --server default --domain traefik_test_com --app-name traefik_test_com traefik
./abra app traefik.test.com secret insert foobar v1 "foobar"
./abra app traefik_test_com secret insert foobar v1 "foobar"
# interactive prompt
echo "y" | ./abra app traefik.test.com secret rm foobar
echo "y" | ./abra app traefik_test_com secret rm foobar
./abra app traefik.test.com secret insert foobar v1 "foobar"
./abra app traefik_test_com secret insert foobar v1 "foobar"
# prompt
./abra app traefik.test.com secret rm foobar --force
./abra app traefik_test_com secret rm foobar --force
}