Compare commits
2 Commits
backup_res
...
mocks
Author | SHA1 | Date | |
---|---|---|---|
ba936796ec | |||
fdc6403a1b |
12
.drone.yml
12
.drone.yml
@ -3,23 +3,25 @@ kind: pipeline
|
||||
name: linters
|
||||
steps:
|
||||
- name: run shellcheck
|
||||
image: koalaman/shellcheck-alpine:v0.7.1
|
||||
image: koalaman/shellcheck-alpine:latest
|
||||
commands:
|
||||
- shellcheck abra
|
||||
|
||||
- name: run unit tests
|
||||
image: decentral1se/docker-dind-bats-kcov
|
||||
image: docker:dind
|
||||
commands:
|
||||
- apk add bats git bash
|
||||
- bats tests
|
||||
|
||||
- name: collect code coverage
|
||||
failure: ignore # until we fix this
|
||||
image: decentral1se/docker-dind-bats-kcov
|
||||
failure: ignore # until we fix this
|
||||
image: kcov/kcov:latest
|
||||
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:
|
||||
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "tests/helpers/mocks"]
|
||||
path = tests/helpers/mocks
|
||||
url = https://github.com/Flamefire/bats-mock.git
|
35
CHANGELOG.md
35
CHANGELOG.md
@ -1,37 +1,6 @@
|
||||
# abra x.x.x (UNRELEASED)
|
||||
|
||||
- `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` / `--skip-check` 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 -- see
|
||||
[#70](https://git.autonomic.zone/coop-cloud/abra/issues/70)
|
||||
|
||||
# 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)
|
||||
|
||||
@ -39,7 +8,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)
|
||||
|
25
Makefile
25
Makefile
@ -1,19 +1,13 @@
|
||||
.PHONY: test shellcheck docopt kcov codecov
|
||||
|
||||
test:
|
||||
@sudo DOCKER_CONTEXT=default docker run \
|
||||
@DOCKER_CONTEXT=default docker run \
|
||||
-it \
|
||||
--rm \
|
||||
-v $$(pwd):/workdir \
|
||||
--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
|
||||
docker:dind \
|
||||
sh -c "apk add bats git bash && cd /workdir && bats tests"
|
||||
|
||||
shellcheck:
|
||||
@docker run \
|
||||
@ -32,12 +26,15 @@ docopt:
|
||||
.venv/bin/docopt.sh abra
|
||||
|
||||
kcov:
|
||||
@docker run \
|
||||
@DOCKER_CONTEXT=default docker run \
|
||||
-it \
|
||||
--rm \
|
||||
-v $$(pwd):/workdir \
|
||||
kcov/kcov:latest \
|
||||
sh -c "kcov /workdir/coverage /workdir/abra || true"
|
||||
koinotice/dind-kcov-bats \
|
||||
bash -c "kcov coverage bats tests || true"
|
||||
|
||||
install:
|
||||
install abra /usr/bin/abra
|
||||
|
||||
codecov: SHELL:=/bin/bash
|
||||
codecov:
|
||||
|
@ -7,10 +7,6 @@
|
||||
|
||||
The cooperative cloud utility belt 🎩🐇
|
||||
|
||||
## Documentation
|
||||
|
||||
> [docs.cloud.autonomic.zone](https://docs.cloud.autonomic.zone/)
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
|
@ -91,7 +91,7 @@ _abra_complete()
|
||||
case "$cmd" in
|
||||
server)
|
||||
# Offer exactly one server name completion.
|
||||
if (( COMP_CWORD == cmd_index + 1 )); then
|
||||
if (( COMP_CWORD == cmd_index + 2 )); then
|
||||
_abra_complete_servers "$cur"
|
||||
fi
|
||||
;;
|
||||
|
@ -1,11 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
ABRA_VERSION="0.4.1"
|
||||
ABRA_VERSION="0.3.1"
|
||||
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"
|
||||
}
|
||||
|
@ -1,52 +1,60 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
export ABRA_DIR=$(mktemp -d)
|
||||
export DOCKER_STUB_DEBUG=foo
|
||||
mkdir -p $ABRA_DIR/servers/default
|
||||
stub docker \
|
||||
"context create * --docker * : touch $ABRA_DIR/context" \
|
||||
'context ls : echo "swarm.test.com"' \
|
||||
"context rm * : rm $ABRA_DIR/context" \
|
||||
"context create * --docker * : touch $ABRA_DIR/context" \
|
||||
"context rm * : rm $ABRA_DIR/context"
|
||||
}
|
||||
|
||||
teardown() {
|
||||
rm -rf "$ABRA_DIR"
|
||||
#unstub docker
|
||||
#rm -rf "$ABRA_DIR"
|
||||
echo "foo"
|
||||
}
|
||||
|
||||
@test "abra server (add|rm)" {
|
||||
@test "abra server add/rm works" {
|
||||
./abra server add swarm.test.com
|
||||
docker context ls | grep swarm.test.com
|
||||
[ -d $ABRA_DIR/servers/swarm.test.com ]
|
||||
./abra server swarm.test.com rm
|
||||
./abra server rm swarm.test.com
|
||||
|
||||
./abra server add swarm.test.com foobar 12345
|
||||
[ -d $ABRA_DIR/servers/swarm.test.com ]
|
||||
./abra server swarm.test.com rm
|
||||
./abra server rm swarm.test.com
|
||||
}
|
||||
|
||||
@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 ]
|
||||
@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 ]
|
||||
|
||||
# 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 --app-name 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 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)" {
|
||||
./abra app new --server default --domain traefik_test_com --app-name traefik_test_com traefik
|
||||
# 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 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
|
||||
}
|
||||
|
1
tests/test_helper.bash
Normal file
1
tests/test_helper.bash
Normal file
@ -0,0 +1 @@
|
||||
load helpers/mocks/src/stub
|
Reference in New Issue
Block a user