diff --git a/.circleci/config.yml b/.circleci/config.yml index 2bbb56d..2e28b07 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -51,8 +51,12 @@ jobs: - add_ssh_keys - run: apk add -u openssh-client - run: ssh-keyscan "$TARGET_HOST" >> ~/.ssh/known_hosts - - run: echo "$YANDEX_CLOUD_DOCKER_REGISTRY_KEY" | ssh "dayoff@$TARGET_HOST" -T "cat > /home/dayoff/yandex_cloud_docker_registry_key.json" - - run: cat docker/deploy-prod | ssh "dayoff@$TARGET_HOST" + # Prepare sup deploy tool + - run: wget https://github.com/pressly/sup/releases/download/v0.5.3/sup-linux64 -O sup + - run: chmod +x ./sup + # Deploy app + - run: echo "$YANDEX_CLOUD_DOCKER_REGISTRY_KEY" > registry_key.json + - run: ./sup -env REG_AUTH_FILE=registry_key.json -debug production deploy workflows: version: 2 diff --git a/Supfile b/Supfile new file mode 100644 index 0000000..0f2b748 --- /dev/null +++ b/Supfile @@ -0,0 +1,54 @@ +--- +version: 0.4 + +networks: + production: + hosts: + - dayoff@vakhrushev.me + +env: + HOME_DIR: /home/dayoff + IMAGE: cr.yandex/crplfk0168i4o8kd7ade/dayoff + DATA_PATH: $HOME_DIR/data + CONTAINER_NAME: dayoff-server + REGISTRY_KEY_FILE: $HOME_DIR/yandex_registry_key.json + +commands: + make-data-dir: + run: mkdir -p $DATA_PATH + + copy-yandex-registry-key: + local: scp $REG_AUTH_FILE dayoff@vakhrushev.me:$REGISTRY_KEY_FILE + + docker-login: + run: cat $REGISTRY_KEY_FILE | docker login --username json_key --password-stdin cr.yandex + + docker-reload-container: + run: > + source $HOME_DIR/.env ; + + docker pull "$IMAGE" ; + + docker stop "$CONTAINER_NAME" || true ; + docker rm "$CONTAINER_NAME" || true ; + + docker run \ + --init \ + --detach \ + --name "$CONTAINER_NAME" \ + --restart=unless-stopped \ + -u "$(id -u):$(id -g)" \ + -p "$WEB_SERVER_PORT:3000" \ + -v "$DATA_PATH:/opt/dayoff" \ + $IMAGE + + clear: + run: rm $REGISTRY_KEY_FILE + +targets: + deploy: + - make-data-dir + - copy-yandex-registry-key + - docker-login + - docker-reload-container + - clear