69 lines
1.7 KiB
YAML
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
|