Files
homepage/Taskfile.yml

69 lines
1.7 KiB
YAML

# https://taskfile.dev
version: '3'
vars:
USER_ID:
sh: id -u
GROUP_ID:
sh: id -g
PROJECT: "homepage"
NODE_IMAGE: "{{.PROJECT}}-node"
DOCKER_COMMON_OPTS: >-
--rm
--user {{.USER_ID}}:{{.GROUP_ID}}
--volume /etc/passwd:/etc/passwd:ro
--volume /etc/group:/etc/group:ro
--volume "./:/srv/app"
--workdir "/srv/app"
-e HOME=/srv/app/.home
tasks:
build-docker:
cmds:
- docker build --file docker/node/Dockerfile --tag "{{.NODE_IMAGE}}" .
npm:
cmds:
- docker run {{.DOCKER_COMMON_OPTS}} "{{.NODE_IMAGE}}" npm {{.CLI_ARGS}}
install:
cmds:
- task: npm
vars: { CLI_ARGS: "install" }
dev:
cmds:
- docker run {{.DOCKER_COMMON_OPTS}} -p 4321:4321 "{{.NODE_IMAGE}}" npm run dev
build-prod:
cmds:
- docker run {{.DOCKER_COMMON_OPTS}} "{{.NODE_IMAGE}}" npm run build
deploy:
vars:
COMMIT_HASH:
sh: git rev-parse --short HEAD
TIMESTAMP:
sh: date +%s
DOCKER_IMAGE: homepage-nginx:{{.COMMIT_HASH}}-{{.TIMESTAMP}}
cmds:
- task: build-prod
- docker build --pull --file docker/Dockerfile.nginx.prod --tag {{.DOCKER_IMAGE}} .
- task: deploy-with-ansible
vars:
DOCKER_IMAGE: '{{.DOCKER_IMAGE}}'
deploy-with-ansible:
internal: true
requires:
vars: [DOCKER_IMAGE]
dir: '/home/av/projects/private/pet-project-server'
cmds:
- yq --inplace '.homepage_nginx_image = "{{.DOCKER_IMAGE}}"' vars/homepage.images.yml
- "git commit vars/homepage.images.yml --message 'Homepage: release {{.DOCKER_IMAGE}}'"
- ansible-playbook -i production.yml playbook-homepage-registry.yml playbook-homepage.yml