Files
homepage/Taskfile.yml
T
av d75f0ab032 образ собирается по контракту роли app_image вместо пуша в реестр
- таск `deploy` (сборка + пуш в cr.yandex + вызов ansible) заменён на `image`:
  собирает node-образ, сайт и nginx-образ, тег из $BUILD_ID
- деплой целиком переехал в `inv pl -- homepage` на стороне pet-project-server
2026-07-25 14:36:03 +03:00

57 lines
1.6 KiB
YAML

# https://taskfile.dev
version: '3'
vars:
USER_ID:
sh: id -u
GROUP_ID:
sh: id -g
PROJECT: "homepage"
NODE_IMAGE: "{{.PROJECT}}-node"
NGINX_IMAGE: "{{.PROJECT}}-nginx"
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
# Контракт роли app_image (pet-project-server): собрать полный образ и затегать
# его $BUILD_ID. Задача самодостаточна — собирает и node-образ, и сам сайт,
# поэтому деплой с чистого клона работает без предварительных команд.
# Деплой целиком: `inv pl -- homepage` в pet-project-server.
image:
desc: 'Docker-образ nginx с собранным сайтом. Тег из $BUILD_ID (по умолчанию dev)'
cmds:
- task: build-docker
- task: build-prod
- docker build --pull --file docker/Dockerfile.nginx.prod --tag "{{.NGINX_IMAGE}}:${BUILD_ID:-dev}" .