forked from toolshed/abra-bash
Compare commits
4 Commits
command_he
...
monorepo
Author | SHA1 | Date | |
---|---|---|---|
66013f6ddb | |||
3d3d6b9b67 | |||
eec1dcb0b2 | |||
1d52c0f5ed |
28
.drone.yml
28
.drone.yml
@ -3,31 +3,11 @@ kind: pipeline
|
|||||||
name: linters
|
name: linters
|
||||||
steps:
|
steps:
|
||||||
- name: run shellcheck
|
- name: run shellcheck
|
||||||
image: koalaman/shellcheck-alpine:v0.7.1
|
image: debian:buster
|
||||||
commands:
|
commands:
|
||||||
- shellcheck abra
|
- apt update
|
||||||
|
- apt install -y shellcheck
|
||||||
- name: run unit tests
|
- shellcheck abra installer
|
||||||
image: docker:dind
|
|
||||||
commands:
|
|
||||||
- apk add bats git bash
|
|
||||||
- bats tests
|
|
||||||
|
|
||||||
- name: collect code coverage
|
|
||||||
failure: ignore # until we fix this
|
|
||||||
image: kcov/kcov:38
|
|
||||||
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
|
|
||||||
image: plugins/codecov
|
|
||||||
settings:
|
|
||||||
token:
|
|
||||||
from_secret: codecov_token
|
|
||||||
required: true
|
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
branch:
|
branch:
|
||||||
- main
|
- main
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +0,0 @@
|
|||||||
coverage/
|
|
||||||
/.venv
|
|
40
CHANGELOG.md
40
CHANGELOG.md
@ -1,43 +1,3 @@
|
|||||||
# abra x.x.x (UNRELEASED)
|
|
||||||
|
|
||||||
- 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 ([44d3ac3a1cb86edc9b9e91eea1a00e70eae14965](https://git.autonomic.zone/coop-cloud/abra/commit/44d3ac3a1cb86edc9b9e91eea1a00e70eae14965))
|
|
||||||
- Fix secret detection when using new `.env` file format in apps ([55324524ca77141666ffe6cc41b62cc71cf89ace](https://git.autonomic.zone/coop-cloud/abra/commit/55324524ca77141666ffe6cc41b62cc71cf89ace))
|
|
||||||
- Support choosing an `$EDITOR` when editing configs ([29cc392dff3e93e48e0e2edd3ce11b405c66a95a](https://git.autonomic.zone/coop-cloud/abra/commit/29cc392dff3e93e48e0e2edd3ce11b405c66a95a))
|
|
||||||
- "server" shell completion fixed ([8839bd45951d00dccf4ef81ece445bcc49e13ee6](https://git.autonomic.zone/coop-cloud/abra/commit/8839bd45951d00dccf4ef81ece445bcc49e13ee6))
|
|
||||||
- Make `-v` spit out the version ([0179f600f5ce40fc1520fc365f92b7cb6eeec1f5](https://git.autonomic.zone/coop-cloud/abra/commit/0179f600f5ce40fc1520fc365f92b7cb6eeec1f5))
|
|
||||||
- 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))
|
|
||||||
- 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/pulls/55)
|
|
||||||
|
|
||||||
# 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)
|
|
||||||
|
|
||||||
- Fix installer version
|
|
||||||
|
|
||||||
# abra 0.3.0 (2020-09-27)
|
|
||||||
|
|
||||||
- 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)
|
|
||||||
|
|
||||||
- Prepare for swarm install script using script.d ([#12](https://git.autonomic.zone/compose-stacks/planning/issues/12))
|
|
||||||
|
|
||||||
# abra 0.1.2 (2020-09-22)
|
# abra 0.1.2 (2020-09-22)
|
||||||
|
|
||||||
- Add upgrade command ([#10](https://git.autonomic.zone/autonomic-cooperative/abra/issues/10))
|
- Add upgrade command ([#10](https://git.autonomic.zone/autonomic-cooperative/abra/issues/10))
|
||||||
|
62
Makefile
62
Makefile
@ -1,56 +1,14 @@
|
|||||||
.PHONY: test shellcheck docopt kcov codecov
|
default: install
|
||||||
|
|
||||||
test_dind:
|
dev_install:
|
||||||
@sudo DOCKER_CONTEXT=default docker run \
|
ln -sf $(PWD)/abra ~/.local/bin
|
||||||
-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
|
|
||||||
|
|
||||||
test_docker:
|
install:
|
||||||
@DOCKER_CONTEXT=default docker run \
|
install abra /usr/bin/abra
|
||||||
-it \
|
|
||||||
--rm \
|
|
||||||
-v $$(pwd):/workdir \
|
|
||||||
decentral1se/docker-dind-bats-kcov \
|
|
||||||
sh -c "cd /workdir && bats /workdir/tests"
|
|
||||||
|
|
||||||
test_local:
|
get_yq:
|
||||||
bats tests
|
wget https://github.com/mikefarah/yq/releases/download/3.3.2/yq_linux_amd64 && \
|
||||||
|
chmod +x yq_linux_amd64 && \
|
||||||
|
mv yq_linux_amd64 yq
|
||||||
|
|
||||||
shellcheck:
|
.PHONY: dev_install install get_yq
|
||||||
@docker run \
|
|
||||||
-it \
|
|
||||||
--rm \
|
|
||||||
-v $$(pwd):/workdir \
|
|
||||||
koalaman/shellcheck-alpine \
|
|
||||||
shellcheck /workdir/abra
|
|
||||||
|
|
||||||
docopt:
|
|
||||||
@if [ ! -d ".venv" ]; then \
|
|
||||||
python3 -m venv .venv && \
|
|
||||||
.venv/bin/pip install -U pip setuptools wheel && \
|
|
||||||
.venv/bin/pip install docopt-sh; \
|
|
||||||
fi
|
|
||||||
.venv/bin/docopt.sh abra
|
|
||||||
|
|
||||||
kcov:
|
|
||||||
@docker run \
|
|
||||||
-it \
|
|
||||||
--rm \
|
|
||||||
-v $$(pwd):/workdir \
|
|
||||||
kcov/kcov:latest \
|
|
||||||
sh -c "kcov /workdir/coverage /workdir/abra || true"
|
|
||||||
|
|
||||||
codecov: SHELL:=/bin/bash
|
|
||||||
codecov:
|
|
||||||
@bash <(curl -s https://codecov.io/bash) \
|
|
||||||
-s coverage -t $$(pass show hosts/swarm.autonomic.zone/drone/codecov/token)
|
|
||||||
|
58
README.md
58
README.md
@ -1,18 +1,56 @@
|
|||||||
# abra
|
# abra
|
||||||
|
|
||||||
[](https://drone.autonomic.zone/coop-cloud/abra)
|
[](https://drone.autonomic.zone/autonomic-cooperative/abra)
|
||||||
[](undefined)
|
|
||||||
|
|
||||||
> https://cloud.autonomic.zone
|
Docker stack magic 🎩🐇
|
||||||
|
|
||||||
The cooperative cloud utility belt 🎩🐇
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
> [docs.cloud.autonomic.zone](https://docs.cloud.autonomic.zone/)
|
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl https://install.abra.autonomic.zone | bash
|
curl -fsSL https://install.abra.autonomic.zone | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Specific releases are available via the project [release page](https://git.autonomic.zone/autonomic-cooperative/abra/releases).
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
|
||||||
|
See [CHANGELOG.md](./CHANGELOG.md).
|
||||||
|
|
||||||
|
## Hacking
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone ssh://git@git.autonomic.zone:2222/autonomic-cooperative/abra.git
|
||||||
|
cd abra
|
||||||
|
make dev_install
|
||||||
|
```
|
||||||
|
|
||||||
|
See [autonomic-cooperative/installer-scripts](https://git.autonomic.zone/autonomic-cooperative/installer-scripts) for the installer script deployment. To make a release, just add an entry to [CHANGELOG.md](./CHANGELOG.md) and the [installer](./installer) (following [semver](https://semver.org/) please) and then `git tag x.x.x && git push origin main --tags`. If you want the [installer-scripts](https://git.autonomic.zone/autonomic-cooperative/installer-scripts) deployment to pick that up, you'll need to change the version number in the [Makefile](https://git.autonomic.zone/autonomic-cooperative/installer-scripts/src/branch/main/Makefile) and run `make` in that repository and push the changes.
|
||||||
|
|
||||||
|
## Specify what to deploy where
|
||||||
|
|
||||||
|
You can use `abra` in one of 2 ways:
|
||||||
|
|
||||||
|
1. Clone a `compose-stack`, create an `.envrc` in it, and run `abra` in that
|
||||||
|
directory. Be sure to set `ABRA_STACK_DIR=.`
|
||||||
|
2. "Monorepo mode": keep all your `compose-stack`s in one directory and all your `env` files in
|
||||||
|
another, e.g.:
|
||||||
|
```
|
||||||
|
$ tree
|
||||||
|
.
|
||||||
|
├── apps
|
||||||
|
│ ├── mediawiki.demo.autonomic.zone.env
|
||||||
|
│ ├── wordpress.demo.autonomic.zone.env
|
||||||
|
└── stacks
|
||||||
|
├── gitea
|
||||||
|
├── matrix-synapse
|
||||||
|
├── mediawiki
|
||||||
|
├── nextcloud
|
||||||
|
├── swarmpit
|
||||||
|
├── traefik
|
||||||
|
└── wordpress
|
||||||
|
$ abra -e apps/mediawiki.demo.autonomic.zone.env deploy
|
||||||
|
```
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
- `abra run mariadb mysqldump gitea -p'GdIbMeS09SURRktBnm3jcTufsL5z0MPd' | gzip > ../git.autonomic.zone_mariadb_`date +%F`.sql.gz`
|
||||||
|
@ -1,52 +0,0 @@
|
|||||||
#compdef abra
|
|
||||||
|
|
||||||
_abra () {
|
|
||||||
local context state line curcontext="$curcontext" ret=1
|
|
||||||
_arguments -n : \
|
|
||||||
{-h,--help}'[Help message]' \
|
|
||||||
'1:commands:(app server)' \
|
|
||||||
'*::arguments:->arguments' \
|
|
||||||
&& ret=0
|
|
||||||
|
|
||||||
case $state in
|
|
||||||
(arguments)
|
|
||||||
curcontext="${curcontext%:*:*}:abra-arguments-$words[1]:"
|
|
||||||
case $words[1] in
|
|
||||||
(app)
|
|
||||||
_arguments \
|
|
||||||
'1: :_abra_apps' \
|
|
||||||
&& ret=0
|
|
||||||
;;
|
|
||||||
(server)
|
|
||||||
_arguments \
|
|
||||||
'1:servers:_abra_servers' \
|
|
||||||
&& ret=0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
|
|
||||||
_abra_servers() {
|
|
||||||
_path_files -/W $HOME/.abra/servers
|
|
||||||
}
|
|
||||||
|
|
||||||
_abra_apps()
|
|
||||||
{
|
|
||||||
local newapps apps=($HOME/.abra/servers/*/*.env)
|
|
||||||
typeset -a apps
|
|
||||||
newapps=()
|
|
||||||
for app in $apps; do
|
|
||||||
newapps+=($(_abra_basename "${app}"))
|
|
||||||
done
|
|
||||||
_describe -t apps 'app' newapps
|
|
||||||
}
|
|
||||||
|
|
||||||
_abra_basename()
|
|
||||||
{
|
|
||||||
printf -- "${1##*/}"
|
|
||||||
}
|
|
||||||
|
|
||||||
_abra "$@"
|
|
@ -1,117 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
_abra_basename()
|
|
||||||
{
|
|
||||||
echo "${1##*/}"
|
|
||||||
}
|
|
||||||
|
|
||||||
_abra_servers()
|
|
||||||
{
|
|
||||||
# FIXME 3wc: copied from abra/get_servers()
|
|
||||||
shopt -s nullglob dotglob
|
|
||||||
local SERVERS=(~/.abra/servers/*)
|
|
||||||
shopt -u nullglob dotglob
|
|
||||||
|
|
||||||
for SERVER in "${SERVERS[@]}"; do
|
|
||||||
_abra_basename "${SERVER}"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
_abra_complete_servers()
|
|
||||||
{
|
|
||||||
mapfile -t COMPREPLY < <(compgen -W "$(_abra_servers)" -- "$1")
|
|
||||||
}
|
|
||||||
|
|
||||||
_abra_apps()
|
|
||||||
{
|
|
||||||
shopt -s nullglob dotglob
|
|
||||||
local APPS=(~/.abra/servers/*/*.env)
|
|
||||||
shopt -u nullglob dotglob
|
|
||||||
|
|
||||||
for APP in "${APPS[@]}"; do
|
|
||||||
_abra_basename "${APP%.env}"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
_abra_complete_apps()
|
|
||||||
{
|
|
||||||
mapfile -t COMPREPLY < <(compgen -W "$(_abra_apps)" -- "$1")
|
|
||||||
}
|
|
||||||
|
|
||||||
_abra_complete()
|
|
||||||
{
|
|
||||||
compopt +o default +o nospace
|
|
||||||
COMPREPLY=()
|
|
||||||
|
|
||||||
local -r cmds='
|
|
||||||
app
|
|
||||||
server
|
|
||||||
'
|
|
||||||
local -r short_opts='-e -h -s -v'
|
|
||||||
local -r long_opts='--env --help --stack --version'
|
|
||||||
|
|
||||||
# Scan through the command line and find the abra command
|
|
||||||
# (if present), as well as its expected position.
|
|
||||||
local cmd
|
|
||||||
local cmd_index=1 # Expected index of the command token.
|
|
||||||
local i
|
|
||||||
for (( i = 1; i < ${#COMP_WORDS[@]}; i++ )); do
|
|
||||||
local word="${COMP_WORDS[i]}"
|
|
||||||
case "$word" in
|
|
||||||
-*)
|
|
||||||
((cmd_index++))
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
cmd="$word"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
|
||||||
|
|
||||||
if (( COMP_CWORD < cmd_index )); then
|
|
||||||
# Offer option completions.
|
|
||||||
case "$cur" in
|
|
||||||
--*)
|
|
||||||
mapfile -t COMPREPLY < <(compgen -W "$long_opts" -- "$cur")
|
|
||||||
;;
|
|
||||||
-*)
|
|
||||||
mapfile -t COMPREPLY < <(compgen -W "$short_opts" -- "$cur")
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# Skip completion; we should never get here.
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
elif (( COMP_CWORD == cmd_index )); then
|
|
||||||
# Offer command name completions.
|
|
||||||
mapfile -t COMPREPLY < <(compgen -W "$cmds" -- "$cur")
|
|
||||||
else
|
|
||||||
# Offer command argument completions.
|
|
||||||
case "$cmd" in
|
|
||||||
server)
|
|
||||||
# Offer exactly one server name completion.
|
|
||||||
if (( COMP_CWORD == cmd_index + 1 )); then
|
|
||||||
_abra_complete_servers "$cur"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
app)
|
|
||||||
# Offer exactly one app completion.
|
|
||||||
if (( COMP_CWORD == cmd_index + 1 )); then
|
|
||||||
_abra_complete_apps "$cur"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
#help)
|
|
||||||
# # Offer exactly one command name completion.
|
|
||||||
# if (( COMP_CWORD == cmd_index + 1 )); then
|
|
||||||
# COMPREPLY=($(compgen -W "$cmds" -- "$cur"))
|
|
||||||
# fi
|
|
||||||
# ;;
|
|
||||||
*)
|
|
||||||
# Unknown command or unknowable argument.
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
complete -o default -F _abra_complete abra
|
|
@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
ABRA_VERSION="0.4.1"
|
ABRA_VERSION="0.1.2"
|
||||||
ABRA_SRC="https://git.autonomic.zone/coop-cloud/abra/raw/tag/$ABRA_VERSION/abra"
|
ABRA_SRC="https://git.autonomic.zone/autonomic-cooperative/abra/raw/tag/$ABRA_VERSION/abra"
|
||||||
|
|
||||||
function install_abra {
|
function install_abra {
|
||||||
mkdir -p "$HOME/.local/bin"
|
mkdir -p "$HOME/.local/bin"
|
@ -1,40 +0,0 @@
|
|||||||
---
|
|
||||||
version: "3.8"
|
|
||||||
|
|
||||||
services:
|
|
||||||
abra_installer:
|
|
||||||
image: "nginx:stable"
|
|
||||||
configs:
|
|
||||||
- source: abra_conf
|
|
||||||
target: /etc/nginx/conf.d/abra.conf
|
|
||||||
- source: abra_installer
|
|
||||||
target: /var/www/abra-installer/installer
|
|
||||||
volumes:
|
|
||||||
- "public:/var/www/abra-installer"
|
|
||||||
networks:
|
|
||||||
- proxy
|
|
||||||
deploy:
|
|
||||||
update_config:
|
|
||||||
failure_action: rollback
|
|
||||||
order: start-first
|
|
||||||
labels:
|
|
||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.http.services.abra-installer.loadbalancer.server.port=80"
|
|
||||||
- "traefik.http.routers.abra-installer.rule=Host(`install.abra.autonomic.zone`)"
|
|
||||||
- "traefik.http.routers.abra-installer.entrypoints=web-secure"
|
|
||||||
- "traefik.http.routers.abra-installer.tls.certresolver=production"
|
|
||||||
|
|
||||||
configs:
|
|
||||||
abra_installer:
|
|
||||||
name: abra_installer_v1
|
|
||||||
file: installer
|
|
||||||
abra_conf:
|
|
||||||
name: abra_conf_v1
|
|
||||||
file: nginx.conf
|
|
||||||
|
|
||||||
networks:
|
|
||||||
proxy:
|
|
||||||
external: true
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
public:
|
|
@ -1,10 +0,0 @@
|
|||||||
server {
|
|
||||||
listen 80 default_server;
|
|
||||||
server_name install.abra.autonomic.zone;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
root /var/www/abra-installer;
|
|
||||||
add_header Content-Type text/plain;
|
|
||||||
index installer;
|
|
||||||
}
|
|
||||||
}
|
|
7
test/abra.yml
Normal file
7
test/abra.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
name: mystack
|
||||||
|
secrets:
|
||||||
|
foo:
|
||||||
|
bar:
|
||||||
|
baz:
|
||||||
|
length: 128
|
@ -1,17 +0,0 @@
|
|||||||
#!/usr/bin/env bats
|
|
||||||
|
|
||||||
@test "docker is available" {
|
|
||||||
command -v docker
|
|
||||||
}
|
|
||||||
|
|
||||||
@test "abra is executable" {
|
|
||||||
./abra --help
|
|
||||||
}
|
|
||||||
|
|
||||||
@test "git is available" {
|
|
||||||
command -v git
|
|
||||||
}
|
|
||||||
|
|
||||||
@test "running in a container" {
|
|
||||||
ls /etc/alpine-release
|
|
||||||
}
|
|
@ -1,52 +0,0 @@
|
|||||||
#!/usr/bin/env bats
|
|
||||||
|
|
||||||
setup() {
|
|
||||||
export ABRA_DIR=$(mktemp -d)
|
|
||||||
mkdir -p $ABRA_DIR/servers/default
|
|
||||||
}
|
|
||||||
|
|
||||||
teardown() {
|
|
||||||
rm -rf "$ABRA_DIR"
|
|
||||||
}
|
|
||||||
|
|
||||||
@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 ]
|
|
||||||
./abra server swarm.test.com rm
|
|
||||||
|
|
||||||
./abra server add swarm.test.com foobar 12345
|
|
||||||
[ -d $ABRA_DIR/servers/swarm.test.com ]
|
|
||||||
./abra server swarm.test.com rm
|
|
||||||
}
|
|
||||||
|
|
||||||
@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 ]
|
|
||||||
|
|
||||||
# --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 ]
|
|
||||||
}
|
|
||||||
|
|
||||||
@test "abra app <domain> secret (insert|generate|rm)" {
|
|
||||||
./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"
|
|
||||||
|
|
||||||
# interactive prompt
|
|
||||||
echo "y" | ./abra app traefik_test_com secret rm foobar
|
|
||||||
|
|
||||||
./abra app traefik_test_com secret insert foobar v1 "foobar"
|
|
||||||
# prompt
|
|
||||||
./abra app traefik_test_com secret rm foobar --force
|
|
||||||
}
|
|
Reference in New Issue
Block a user