# 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}}'" - uv run ansible-playbook -i production.yml playbook-homepage-registry.yml playbook-homepage.yml