diff --git a/.drone.yml b/.drone.yml index 5220aa6..183e29d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,30 +1,36 @@ kind: pipeline -name: default +type: docker +name: build-and-deploy steps: -- name: build - image: node - commands: - - npm install - - npm run build - -- name: deploy - image: alpine - environment: - HOST: blog.example.ru - USER: droneci - WEB_DIR: /var/www/blog.example.ru/ - SSH_KEY: - from_secret: ssh_key - commands: - - apk add --no-cache rsync openssh - - mkdir ~/.ssh/ - - chmod 0700 ~/.ssh - - echo -e "$SSH_KEY" > ~/.ssh/id_rsa - - chmod 0600 ~/.ssh/id_rsa - - echo StrictHostKeyChecking no >> ~/.ssh/config - - chmod 0600 ~/.ssh/config - - rsync -rvzc --chmod=g=rwX --delete public/ $USER@$HOST:$WEB_DIR + # 1. Install dependencies and build the project + - name: install_and_build + image: node:18 # Используем подходящий образ Node.js + commands: + - npm install + - npm run build + volumes: + - name: build + path: /drone/src + + # 2. Deploy Docker container with Nginx and copy build files + - name: deploy + image: docker:24.0.2 # Используем образ Docker для управления контейнерами + volumes: + - name: build + path: /drone/src + - name: docker_socket + path: /var/run/docker.sock + commands: + # 2.1 Останавливаем и удаляем старый контейнер Nginx (если есть) + - docker stop my-nginx-site || true + - docker rm my-nginx-site || true + + # 2.2 Запускаем новый контейнер Nginx + - docker run -d --name my-nginx-site -p 80:80 nginx:stable-alpine + + # 2.3 Копируем сгенерированные файлы в контейнер Nginx + - docker cp /drone/src/build/. my-nginx-site:/usr/share/nginx/html/ - name: telegram notification image: appleboy/drone-telegram @@ -53,4 +59,11 @@ steps: {{commit.message}} ``` 🌐 {{ build.link }} - {{/success}} \ No newline at end of file + {{/success}} + +volumes: + - name: build + temp: {} + - name: docker_socket + host: + path: /var/run/docker.sock \ No newline at end of file