build: add run script

This commit is contained in:
Oliver Davies 2021-10-24 02:00:23 +01:00
parent c44b49968f
commit 6a3f3eaa99
4 changed files with 56 additions and 35 deletions
.env
.github/workflows
Makefilerun

1
.env Normal file
View file

@ -0,0 +1 @@
COMPOSE_PROJECT_NAME=oliverdavies-uk

View file

@ -26,8 +26,8 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- run: make build-images
- run: make push-images
- run: ./run docker:build-images
- run: ./run docker:push-images
- name: Add the deployment SSH key
uses: shimataro/ssh-key-action@6f350ca8484d8d55c2e361e74d17e638dabe713a # 2.1.0
@ -36,6 +36,6 @@ jobs:
name: id_rsa
known_hosts: ${{ secrets.SSH_KNOWN_HOSTS }}
- run: make deploy
- run: ./run deploy
# vim: sw=2 ts=2

View file

@ -1,39 +1,7 @@
COMPOSE_PROJECT_NAME?=oliverdavies-uk
DOCKER_WEB_IMAGE_NAME:=ghcr.io/opdavies/$(COMPOSE_PROJECT_NAME)-web
assets-watch:
npm ci
npm run watch
build-images:
docker image build . \
--file tools/docker/images/Dockerfile \
--tag $(DOCKER_WEB_IMAGE_NAME):$(DOCKER_TAG) \
--tag $(DOCKER_WEB_IMAGE_NAME):latest \
--target=production
deploy:
cd tools/deployment && ansible-playbook deploy.yml
destroy:
COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) docker-compose down --volumes --remove-orphans
disable:
COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) docker-compose down --remove-orphans
enable:
COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) docker-compose up --detach --build --remove-orphans
ps:
COMPOSE_PROJECT_NAME=$(COMPOSE_PROJECT_NAME) docker-compose ps
push-images:
docker image push $(DOCKER_WEB_IMAGE_NAME):$(DOCKER_TAG)
docker image push $(DOCKER_WEB_IMAGE_NAME):latest
run-production:
docker-compose --file docker-compose-production.yaml up --detach --remove-orphans
.PHONY: *
# vim: noexpandtab filetype=make

52
run Executable file
View file

@ -0,0 +1,52 @@
#!/bin/bash
set -e
. .env
DOCKER_WEB_IMAGE_NAME="ghcr.io/opdavies/${COMPOSE_PROJECT_NAME}-web"
TTY=""
if [[ ! -t 1 ]]; then
TTY="-T"
fi
function cmd {
# Run any command in the app container.
_dc app "${@}"
}
function deploy {
cd tools/deployment && ansible-playbook deploy.yml
}
function docker:build-images {
docker image build . \
--file tools/docker/images/Dockerfile \
--tag ${DOCKER_WEB_IMAGE_NAME}:${DOCKER_TAG} \
--tag ${DOCKER_WEB_IMAGE_NAME}:latest \
--target=production
}
function docker:push-images {
docker image push ${DOCKER_WEB_IMAGE_NAME}:${DOCKER_TAG}
docker image push ${DOCKER_WEB_IMAGE_NAME}:latest
}
function help {
printf "%s <task> [args]\n\nTasks:\n" "${0}"
compgen -A function | grep -v "^_" | cat -n
printf "\nExtended help:\n Each task has comments for general usage\n"
}
function run-production {
docker-compose --file docker-compose-production.yaml up --detach --remove-orphans
}
function _dc {
docker-compose exec ${TTY} "${@}"
}
eval "${@:-help}"