Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

User editing support #23

Draft
wants to merge 10 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
bin
go
test
184 changes: 58 additions & 126 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
NAMESPACE ?= hashbangctl

## Primary Targets

.PHONY: build
build: fetch docker-build

.PHONY: build-native
build-native:
build:
GOBIN=$(PWD)/bin \
GOPATH=$(PWD)/go \
CGO_ENABLED=0 \
Expand All @@ -15,12 +10,9 @@ build-native:
go install ./...

.PHONY: serve
serve: docker-start docker-logs docker-stop

.PHONY: serve-native
serve-native:
serve: build
API_URL="https://userdb.hashbang.sh/v1" \
API_TOKEN="eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiYXBpLXVzZXItY3JlYXRlIn0.iOcRzRAjPsT9DOhu5OSeRuQ38D3KL5NppsfyuZYiDeI" \
API_TOKEN="eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiYXBpLXVzZXItbWFuYWdlIn0.gEKj0rWfh5_cnhfAk3U-oGL1_WN6ZrbywfIwxXx_wDA" \
HOST_KEY_SEED="This is an insecure seed" \
bin/server

Expand All @@ -34,90 +26,80 @@ connect:
-p2222 localhost

.PHONY: test
test: \
docker-build-test \
docker-restart \
docker-test \
docker-stop
test: docker-build docker-build-test docker-stop docker-start
docker run \
-it \
--rm \
--hostname=$(NAMESPACE)-test \
--name $(NAMESPACE)-test \
--network=userdb \
--env UID=$(shell id -u) \
--env GID=$(shell id -g) \
--env CONTAINER=$(NAMESPACE) \
--env PGPASSWORD=test_password \
--env PGHOST=userdb-postgres \
--env PGDATABASE=postgres \
--env PGUSER=postgres \
--volume $(PWD)/test:/home/test \
local/$(NAMESPACE)-test \
scripts/docker-shell bats test.bats

.PHONY: test-shell
test-shell: \
docker-build-test \
docker-restart \
docker-test-shell \
docker-stop
test-shell: docker-build docker-build-test docker-stop docker-start
docker run \
-it \
--rm \
--hostname=$(NAMESPACE)-test \
--name $(NAMESPACE)-test \
--network=userdb \
--env UID=$(shell id -u) \
--env GID=$(shell id -g) \
--env CONTAINER=$(NAMESPACE) \
--env PGPASSWORD=test_password \
--env PGHOST=userdb-postgres \
--env PGDATABASE=postgres \
--env PGUSER=postgres \
--volume $(PWD)/test:/home/test \
local/$(NAMESPACE)-test \
scripts/docker-shell bash

.PHONY: clean
clean: docker-clean
rm -rf ./go ./bin

.PHONY: fetch
fetch:
git submodule update --init --recursive
.PHONY: initdb
initdb:
docker exec --user postgres -it "userdb-postgres" \
psql -c "delete from passwd; delete from hosts;";
docker exec --user postgres -it "userdb-postgres" \
psql -c "insert into hosts (name,maxusers) values ('local1.hashbang.sh','500');";
docker exec --user postgres -it "userdb-postgres" \
psql -c "insert into hosts (name,maxusers) values ('local2.hashbang.sh','500');";

.PHONY: fetch-latest
fetch-latest:
git submodule foreach 'git checkout master && git pull'

## Secondary Targets
.PHONY: docker-logs
docker-logs:
scripts/docker-logs $(NAMESPACE) userdb-postgres userdb-postgrest

.PHONY: docker-build
docker-build:
docker build -t local/$(NAMESPACE) .
docker build -t local/$(NAMESPACE)-userdb test/modules/userdb/
docker build \
--build-arg=POSTGREST_VERSION=v6.0.2 \
-t local/$(NAMESPACE)-postgrest \
test/postgrest/

.PHONY: docker-restart
docker-restart: docker-stop docker-start
.PHONY: docker-build-test
docker-build-test:
docker build -t local/$(NAMESPACE)-test test/

.PHONY: docker-start
docker-start:
docker network inspect $(NAMESPACE) \
|| docker network create $(NAMESPACE)
docker-start: docker-build
$(MAKE) -C test/modules/userdb docker-start
docker inspect -f '{{.State.Running}}' $(NAMESPACE) 2>/dev/null \
|| docker run \
--detach=true \
--name $(NAMESPACE) \
--network=$(NAMESPACE) \
--env API_URL="http://hashbangctl-postgrest:3000" \
--env API_TOKEN="eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiYXBpLXVzZXItY3JlYXRlIn0.iOcRzRAjPsT9DOhu5OSeRuQ38D3KL5NppsfyuZYiDeI" \
--env HOST_KEY_SEED="Replace me with something actually random" \
--expose="2222" \
-p "2222:2222" \
local/$(NAMESPACE)
docker inspect -f '{{.State.Running}}' $(NAMESPACE)-userdb 2>/dev/null \
|| docker run \
--rm \
--detach=true \
--name $(NAMESPACE)-userdb \
--network=$(NAMESPACE) \
--volume $(PWD)/test/test_data.sql:/docker-entrypoint-initdb.d/99-init.sql \
local/$(NAMESPACE)-userdb
docker inspect -f '{{.State.Running}}' $(NAMESPACE)-postgrest 2>/dev/null \
|| docker run \
--rm \
--detach=true \
--name $(NAMESPACE)-postgrest \
--network=$(NAMESPACE) \
--env PGRST_DB_URI="postgres://postgres@$(NAMESPACE)-userdb/userdb" \
--env PGRST_JWT_SECRET="a_test_only_postgrest_jwt_secret" \
--env PGRST_DB_ANON_ROLE="api-anon" \
--env PGRST_DB_SCHEMA="v1" \
local/$(NAMESPACE)-postgrest

.PHONY: docker-start-prod
docker-start-prod:
docker network inspect $(NAMESPACE) \
|| docker network create $(NAMESPACE)
docker inspect -f '{{.State.Running}}' $(NAMESPACE) 2>/dev/null \
|| docker run \
--detach=true \
--name $(NAMESPACE) \
--network=$(NAMESPACE) \
--env API_URL="https://userdb.hashbang.sh/v1" \
--network=userdb \
--env API_URL="http://userdb-postgrest:3000" \
--env API_TOKEN="eyJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiYXBpLXVzZXItbWFuYWdlIn0.gEKj0rWfh5_cnhfAk3U-oGL1_WN6ZrbywfIwxXx_wDA" \
--env HOST_KEY_SEED="This is an insecure seed" \
--expose="2222" \
-p "2222:2222" \
local/$(NAMESPACE)
Expand All @@ -126,54 +108,4 @@ docker-start-prod:
docker-stop:
docker inspect -f '{{.State.Running}}' $(NAMESPACE) 2>/dev/null \
&& docker rm -f $(NAMESPACE) || true
docker inspect -f '{{.State.Running}}' $(NAMESPACE)-userdb 2>/dev/null \
&& docker rm -f $(NAMESPACE)-userdb || true
docker inspect -f '{{.State.Running}}' $(NAMESPACE)-postgrest 2>/dev/null \
&& docker rm -f $(NAMESPACE)-postgrest || true

.PHONY: docker-logs
docker-logs:
scripts/docker-logs $(NAMESPACE) $(NAMESPACE)-userdb $(NAMESPACE)-postgrest

.PHONY: docker-clean
docker-clean: docker-stop
docker image rm local/$(NAMESPACE)
docker image rm local/$(NAMESPACE)-test
docker image rm local/$(NAMESPACE)-postgrest
docker image rm local/$(NAMESPACE)-userdb

.PHONY: docker-test
docker-test:
docker run \
-it \
--rm \
--hostname=$(NAMESPACE)-test \
--name $(NAMESPACE)-test \
--network=$(NAMESPACE) \
--env CONTAINER=$(NAMESPACE) \
--env PGPASSWORD=test_password \
--env PGHOST=$(NAMESPACE)-userdb \
--env PGDATABASE=userdb \
--env PGUSER=postgres \
local/$(NAMESPACE)-test

.PHONY: docker-test-shell
docker-test-shell: \
docker-build docker-stop docker-start docker-build-test docker-stop
docker run \
--rm \
-it \
--hostname=$(NAMESPACE)-test \
--name $(NAMESPACE)-test \
--network=$(NAMESPACE) \
--env CONTAINER=$(NAMESPACE) \
--env PGPASSWORD=test_password \
--env PGHOST=$(NAMESPACE)-userdb \
--env PGDATABASE=userdb \
--env PGUSER=postgres \
local/$(NAMESPACE)-test \
bash

.PHONY: docker-build-test
docker-build-test:
docker build -t local/$(NAMESPACE)-test test/
$(MAKE) -C test/modules/userdb docker-stop
Loading