Compare commits

...

104 Commits
0.4.0 ... 0.5.0

Author SHA1 Message Date
5bc702bf96 Propagate new version around 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 2021-03-01 11:38:31 +01:00
3wc
e5b2a426f0 Add shared backup helpers 2021-02-24 17:03:28 +02:00
3wc
29b22fe162 Display subcommand help with -h/--help
Closes #78
2021-02-11 15:02:37 +02:00
c082645da0 Remove test commit 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
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 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 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 2021-01-24 21:51:59 +02:00
3wc
f90e1d154c Add container IDs to debug log 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 2021-01-24 19:11:11 +02:00
4e913c426d Follow same style 2021-01-09 20:07:16 +01:00
3wc
8a08de51e4 Alert on missing secrets, re-add . → _ STACK_NAME 2021-01-09 15:07:39 +02:00
1c7a51bce1 Merge pull request 'App backup & restore' (#72) from backup_restore into main
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/72
2021-01-09 12:36:50 +01:00
3wc
5d84cef63c app restore 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 2021-01-02 00:34:44 +02:00
dc83baea12 Remove tab 2021-01-01 22:44:21 +01:00
3wc
d6b4a4744f Fix abra app ls for app → type 2021-01-01 23:00:20 +02:00
6ba2657dc1 Use short hash convention 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
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
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
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
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 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 2021-01-01 14:18:30 +01:00
3wc
114f99ae2e Update CHANGELOG 2021-01-01 15:11:04 +02:00
3wc
fff4b10a41 Gettin some help_
See #50
2021-01-01 15:09:49 +02:00
ab1353603d Use homebrewed image for CI too 2021-01-01 13:49:19 +01:00
1600b6277f Use the One True Way for testing
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
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 2021-01-01 13:09:57 +01:00
7abb0191e1 Use upstream CI image
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 2021-01-01 01:46:09 +02:00
3wc
5411c85793 Don't require weird app_ls format for abra help 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
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
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
Closes https://git.autonomic.zone/coop-cloud/abra/issues/65.
2020-12-31 18:12:01 +01:00
fac45f276e Add entry 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 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 2020-12-31 13:50:10 +01:00
3wc
8ddb290683 Further update to tests for #47 2020-12-31 14:34:52 +02:00
2cb1134a54 Use _ now 2020-12-31 13:26:25 +01:00
c4b1ac482e Update change log 2020-12-31 13:22:26 +01:00
3wc
29cc392dff Prompt on app .. config if $EDITOR is un-set
Closes #41
2020-12-31 12:52:44 +02:00
3wc
8839bd4595 Fix server bash completion
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
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 2020-12-30 21:56:52 +02:00
3wc
6761574d74 Add "app name" concept, and rename APP → TYPE
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 2020-12-30 13:43:17 +02:00
3wc
1055805c8d Merge duplicate run commands
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
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
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
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/56
2020-12-30 11:21:46 +01:00
34775f306b Merge branch 'main' into merge-logging 2020-12-30 11:21:03 +01:00
375a4dd29d Re-add require_app_latest for custom commands
Revision of 67cce192df.

See https://git.autonomic.zone/coop-cloud/abra/pulls/54#issuecomment-2300.
2020-12-30 11:19:55 +01:00
2b951e9f54 Mark minor 2020-12-30 11:18:32 +01:00
3wc
01184c313a Add missing CHANGELOG entries
Closes #46
2020-12-30 00:43:52 +02:00
3936d6afc0 Merge logs/multilogs and avoid multitail external 2020-12-29 23:22:46 +01:00
407744827f Add change log entry for #42
See https://git.autonomic.zone/coop-cloud/abra/issues/42.
2020-12-29 17:11:30 +01:00
b634b4c668 Merge pull request 'Make sure to git pull latest changes on ~/.abra/apps side' (#54) from latest-checks into main
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/54
2020-12-29 17:10:16 +01:00
67cce192df Don't do more cloning that necessary 2020-12-29 17:06:49 +01:00
3a9e141b24 Pull latest changes
Closes https://git.autonomic.zone/coop-cloud/abra/issues/42.
2020-12-29 17:06:32 +01:00
ebfe7ca4e8 Suppress output of clone and do better logging 2020-12-29 17:05:30 +01:00
fff2fbe819 Prepare function name for new functionality 2020-12-29 17:05:00 +01:00
f213c3df5f Follow convention and show type of message 2020-12-29 17:04:17 +01:00
9b1be33018 Mark as quote and not as entry 2020-12-29 15:11:15 +01:00
6ecf4f287a Add missing ) 2020-12-29 15:10:57 +01:00
e1d6ff8b73 Add docs link 2020-12-29 15:10:05 +01:00
07d4815a74 Start 0.5.0 change log 2020-12-29 15:08:42 +01:00
33315f6b43 Merge pull request '<app> -> <type>' (#53) from app-goes-to-type into main
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/53
2020-12-29 15:03:43 +01:00
f017324431 <app> -> <type>
Closes https://git.autonomic.zone/coop-cloud/abra/issues/48.
2020-12-29 14:56:50 +01:00
4339c91cf3 Merge pull request 'Remove abra server use' (#52) from server-use-remove into main
Reviewed-on: https://git.autonomic.zone/coop-cloud/abra/pulls/52
2020-12-29 14:26:39 +01:00
592f515ec4 Remove abra server use 2020-12-29 14:24:50 +01:00
3wc
77ba5652b2 Run "check" during "deploy", + "--skip-check" 2020-12-29 11:15:14 +02:00
3wc
fdf6334ed3 Use temporary ABRA_DIr in tests 2020-12-27 21:53:44 +02:00
3wc
73e5e64b9a Bump version 2020-12-27 21:45:37 +02:00
3f9b4477cd Swap args around 2020-12-27 13:11:22 +01:00
3wc
412729aac9 Fix calling logs with no arguments
Closes #31
2020-12-27 12:23:16 +02:00
3wc
8022a2cb41 Add cheeky network command 2020-12-27 12:07:10 +02:00
3wc
35182ed260 Get both .. volume .. and custom commands working 2020-12-27 12:07:10 +02:00
3wc
d90c6ef361 Add --no-tty option to app run 2020-12-27 12:07:10 +02:00
3wc
40ca8dfe93 Add --server filter to app list..
.. and add `server <host> apps` as an alias.
2020-12-27 12:07:10 +02:00
3wc
7f009f927b Fix app ls --status
Closes #35
2020-12-27 12:06:39 +02:00
3wc
e222f4152b Pin kcov version 2020-12-24 01:07:01 +02:00
3wc
893150cdd9 Pin shellcheck version 2020-12-24 00:55:57 +02:00
3wc
61126f16e1 Update installer 2020-12-24 00:50:50 +02:00
8 changed files with 927 additions and 292 deletions

View File

@ -3,31 +3,41 @@ kind: pipeline
name: linters
steps:
- name: run shellcheck
image: koalaman/shellcheck-alpine:latest
image: koalaman/shellcheck-alpine:v0.7.1
commands:
- 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:latest
failure: ignore # until we fix this
image: decentral1se/docker-dind-bats-kcov
commands:
- apk add 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,6 +1,39 @@
# 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 ([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)
- Bug-fixes on `app ls --status` & custom commands
- Add `app ls --server=...` and alias
# abra 0.4.0 (2020-12-24)
- New command-line interface based on docopt
- `~/.abra` directory instead of expecting local `.env` files
- Integration tests & code coverage
# abra 0.3.1 (2020-09-27)
@ -8,7 +41,7 @@
# abra 0.3.0 (2020-09-27)
- Add multilogs stack logs implementation ([#8](https://git.autonomic.zone/compose-stacks/abra/issues/8)
- Add multilogs stack logs implementation ([#8](https://git.autonomic.zone/compose-stacks/abra/issues/8))
- Add beginnings of "monorepo" functionality
# abra 0.2.0 (2020-09-24)

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 \

View File

@ -7,6 +7,10 @@
The cooperative cloud utility belt 🎩🐇
## Documentation
> [docs.cloud.autonomic.zone](https://docs.cloud.autonomic.zone/)
## Install
```sh

1082
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.3.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

@ -1,49 +1,52 @@
#!/usr/bin/env bats
setup() {
mkdir -p ~/.abra/servers/default
export ABRA_DIR=$(mktemp -d)
mkdir -p $ABRA_DIR/servers/default
}
teardown() {
rm -rf ~/.abra/servers/default
rm -rf ~/.abra/servers/swarm.test.com
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/servers/swarm.test.com ]
./abra server rm swarm.test.com
[ -d $ABRA_DIR/servers/swarm.test.com ]
./abra server swarm.test.com rm
./abra server add swarm.test.com foobar 12345
[ -d ~/.abra/servers/swarm.test.com ]
./abra server rm swarm.test.com
[ -d $ABRA_DIR/servers/swarm.test.com ]
./abra server swarm.test.com rm
}
@test "abra app new/rm works" {
./abra app new --server default --domain traefik.test.com traefik
[ -f ~/.abra/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/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/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
}