build: add installer script
This commit is contained in:
parent
48bc03db51
commit
45f1692c99
5
scripts/installer/README.md
Normal file
5
scripts/installer/README.md
Normal file
@ -0,0 +1,5 @@
|
||||
# install.abra.coopcloud.tech
|
||||
|
||||
To deploy, run `make`.
|
||||
|
||||
You have to be an [Autonomic](https://autonomic.zone) member to do this.
|
38
scripts/installer/compose.yml
Normal file
38
scripts/installer/compose.yml
Normal file
@ -0,0 +1,38 @@
|
||||
---
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
app:
|
||||
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`,`install.abra.coopcloud.tech`)"
|
||||
- "traefik.http.routers.abra-installer.entrypoints=web-secure"
|
||||
- "traefik.http.routers.abra-installer.tls.certresolver=production"
|
||||
|
||||
configs:
|
||||
abra_installer:
|
||||
file: installer
|
||||
abra_conf:
|
||||
file: nginx.conf
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
public:
|
57
scripts/installer/installer
Executable file
57
scripts/installer/installer
Executable file
@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
ABRA_VERSION="0.1.1-alpha"
|
||||
ABRA_RELEASE_URL="https://git.coopcloud.tech/api/v1/repos/coop-cloud/abra/releases/tags/$ABRA_VERSION"
|
||||
|
||||
function show_banner {
|
||||
echo ""
|
||||
echo " ____ ____ _ _ "
|
||||
echo " / ___|___ ___ _ __ / ___| | ___ _ _ __| |"
|
||||
echo " | | / _ \ _____ / _ \| '_ \ | | | |/ _ \| | | |/ _' |"
|
||||
echo " | |__| (_) |_____| (_) | |_) | | |___| | (_) | |_| | (_| |"
|
||||
echo " \____\___/ \___/| .__/ \____|_|\___/ \__,_|\__,_|"
|
||||
echo " |_|"
|
||||
echo ""
|
||||
echo ""
|
||||
echo " === Public interest infrastructure === "
|
||||
echo ""
|
||||
echo ""
|
||||
}
|
||||
|
||||
function install_abra_release {
|
||||
mkdir -p "$HOME/.local/bin"
|
||||
|
||||
if ! type "curl" > /dev/null 2>&1; then
|
||||
echo "'curl' is not installed, cannot proceed..."
|
||||
echo "perhaps try installing manually via the releases URL?"
|
||||
echo "https://git.coopcloud.tech/coop-cloud/abra/releases"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! type "curl" > /dev/null 2>&1; then
|
||||
error "'python3' is not installed, cannot proceed..."
|
||||
echo "perhaps try installing manually via the releases URL?"
|
||||
echo "https://git.coopcloud.tech/coop-cloud/abra/releases"
|
||||
fi
|
||||
|
||||
# FIXME: support different architectures
|
||||
release_url=$(curl -s "$ABRA_RELEASE_URL" |
|
||||
python3 -c "import sys, json; \
|
||||
payload = json.load(sys.stdin); \
|
||||
url = [a['browser_download_url'] for a in payload['assets'] if 'arm64' in a['name']][0]; \
|
||||
print(url)")
|
||||
|
||||
echo "downloading $ABRA_VERSION AMD64 binary release for abra..."
|
||||
curl --progress-bar "$release_url" --output "$HOME/.local/bin/abra"
|
||||
chmod +x "$HOME/.local/bin/abra"
|
||||
|
||||
echo "abra installed to $HOME/.local/bin/abra"
|
||||
}
|
||||
|
||||
function run_installation {
|
||||
show_banner
|
||||
install_abra_release
|
||||
}
|
||||
|
||||
run_installation "$@"
|
||||
exit 0
|
7
scripts/installer/makefile
Normal file
7
scripts/installer/makefile
Normal file
@ -0,0 +1,7 @@
|
||||
STACK := abra_installer_script
|
||||
|
||||
default: deploy
|
||||
|
||||
deploy:
|
||||
@docker stack rm $(STACK) && \
|
||||
docker stack deploy -c compose.yml $(STACK)
|
10
scripts/installer/nginx.conf
Normal file
10
scripts/installer/nginx.conf
Normal file
@ -0,0 +1,10 @@
|
||||
server {
|
||||
listen 80 default_server;
|
||||
server_name install.abra.autonomic.zone install.abra.coopcloud.tech;
|
||||
|
||||
location / {
|
||||
root /var/www/abra-installer;
|
||||
add_header Content-Type text/plain;
|
||||
index installer;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user