120 lines
2.9 KiB
YAML
120 lines
2.9 KiB
YAML
# https://taskfile.dev
|
|
|
|
version: '3'
|
|
|
|
vars:
|
|
USER_ID:
|
|
sh: id -u
|
|
GROUP_ID:
|
|
sh: id -g
|
|
|
|
PROJECT: "homepage"
|
|
PHP_IMAGE: "{{.PROJECT}}-php"
|
|
NODE_IMAGE: "{{.PROJECT}}-node"
|
|
|
|
DOCKER_COMMON_OPTS: >-
|
|
--rm
|
|
--interactive
|
|
--tty
|
|
--user {{.USER_ID}}:{{.GROUP_ID}}
|
|
--volume /etc/passwd:/etc/passwd:ro
|
|
--volume /etc/group:/etc/group:ro
|
|
--volume "./:/srv/app"
|
|
--workdir "/srv/app"
|
|
-e XDG_CONFIG_HOME=/srv/app/.config
|
|
-e XDG_CACHE_HOME=/srv/app/.cache
|
|
-e HOME=/srv/app/.home
|
|
|
|
tasks:
|
|
|
|
build-docker:
|
|
cmds:
|
|
- docker build --file docker/php/Dockerfile --tag "{{.PHP_IMAGE}}" .
|
|
- docker build --file docker/node/Dockerfile --tag "{{.NODE_IMAGE}}" .
|
|
|
|
composer:
|
|
cmds:
|
|
- docker run {{.DOCKER_COMMON_OPTS}} "{{.PHP_IMAGE}}" composer {{.CLI_ARGS}}
|
|
|
|
npm:
|
|
cmds:
|
|
- docker run {{.DOCKER_COMMON_OPTS}} "{{.NODE_IMAGE}}" npm {{.CLI_ARGS}}
|
|
|
|
sculpin:
|
|
cmds:
|
|
- docker run {{.DOCKER_COMMON_OPTS}} "{{.PHP_IMAGE}}" ./vendor/bin/sculpin {{.CLI_ARGS}}
|
|
|
|
shell-node:
|
|
cmds:
|
|
- docker run {{.DOCKER_COMMON_OPTS}} "{{.NODE_IMAGE}}" bash
|
|
|
|
install-dependencies:
|
|
cmds:
|
|
- task: composer
|
|
vars: { CLI_ARGS: "install" }
|
|
- task: npm
|
|
vars: { CLI_ARGS: "install" }
|
|
|
|
format-pages:
|
|
cmds:
|
|
- task: npm
|
|
vars: { CLI_ARGS: 'run format-md' }
|
|
|
|
format-assets:
|
|
cmds:
|
|
- task: npm
|
|
vars: { CLI_ARGS: 'run format-webpack' }
|
|
- task: npm
|
|
vars: { CLI_ARGS: 'run format-js' }
|
|
- task: npm
|
|
vars: { CLI_ARGS: 'run format-vue' }
|
|
- task: npm
|
|
vars: { CLI_ARGS: 'run format-style' }
|
|
|
|
format-php:
|
|
cmds:
|
|
- docker run {{.DOCKER_COMMON_OPTS}} "{{.PHP_IMAGE}}" php-cs-fixer fix
|
|
|
|
build-dev:
|
|
vars:
|
|
APP_OUTPUT_DIR: output_dev
|
|
NPM_SCRIPT: build
|
|
APP_ENV: dev
|
|
APP_URL: homepage.site
|
|
cmds:
|
|
- rm -rf ./{{.APP_OUTPUT_DIR}}/*
|
|
- task: npm
|
|
vars: { CLI_ARGS: 'run {{.NPM_SCRIPT}}' }
|
|
- task: sculpin
|
|
vars: { CLI_ARGS: 'generate --env="{{.APP_ENV}}" --url="{{.APP_URL}}" --no-interaction -vv' }
|
|
|
|
build-prod:
|
|
vars:
|
|
APP_OUTPUT_DIR: output_prod
|
|
NPM_SCRIPT: build-prod
|
|
APP_ENV: prod
|
|
APP_URL: https://vakhrushev.me
|
|
cmds:
|
|
- rm -rf ./{{.APP_OUTPUT_DIR}}/*
|
|
- task: npm
|
|
vars: { CLI_ARGS: 'run {{.NPM_SCRIPT}}' }
|
|
- task: sculpin
|
|
vars: { CLI_ARGS: 'generate --env="{{.APP_ENV}}" --url="{{.APP_URL}}" --no-interaction -vv' }
|
|
|
|
make-post:
|
|
vars:
|
|
POST_DATE:
|
|
sh: date +'%Y-%m-%d'
|
|
cmd: touch "source/_articles/{{.POST_DATE}}-new-post.md"
|
|
|
|
deploy:
|
|
vars:
|
|
COMMIT_HASH:
|
|
sh: git rev-parse --short HEAD
|
|
TIMESTAMP:
|
|
sh: date +%s
|
|
IMAGE_TAG: homepage-nginx:{{.COMMIT_HASH}}-{{.TIMESTAMP}}
|
|
cmds:
|
|
- task: build-prod
|
|
- docker build --pull --file docker/Dockerfile.nginx.prod --tag {{.IMAGE_TAG}} .
|