Как создавать файл ads.txt при деплое сайта с помощью Jenkins и Docker

На список статей
Blog image

Защитите свои сайты с My-Sites-Guard.com!
Сервис обеспечивает надежную защиту ваших веб-ресурсов: мониторинг доступности сайта, контроль валидности сертификатов, а также возможность собирать и анализировать логи работы сервера. My-Sites-Guard.com — всё для сохранности вашего сайта и спокойствия в работе!

Веб-разработчикам и владельцам сайтов часто требуется добавлять файл ads.txt, который помогает бороться с мошенничеством в сфере рекламы. Этот файл содержит информацию о рекламных партнерах сайта и помогает идентифицировать авторизованных реселлеров рекламы. В этой статье мы разберемся, как автоматизировать создание файла ads.txt при деплое сайта с использованием Jenkins и Docker.

Что такое ads.txt?

ads.txt — это текстовый файл, размещенный в корневой директории сайта, в котором указываются рекламные партнёры и платформы, авторизованные для продажи рекламы на вашем сайте. Вот пример строки в файле ads.txt:

google.com, pub-2820954784774800, DIRECT, f08c47fec0942fa0

Этот файл помогает предотвратить мошенничество с рекламой и предоставляет публичную информацию для рекламных платформ о том, какие партнёры могут продавать рекламу для вашего домена.

Зачем автоматизировать создание файла ads.txt?

При каждом деплое сайта может возникнуть необходимость обновлять или создавать заново файл ads.txt. Чтобы избежать ошибок и упростить этот процесс, мы можем автоматизировать его с помощью Jenkins. Это позволит:

  • Убедиться, что файл всегда актуален.
  • Автоматически генерировать и развертывать ads.txt вместе с остальными элементами сайта.
  • Поддерживать процесс обновления прозрачным и согласованным.

Как это сделать с помощью Jenkins и Docker?

Для этого нам понадобятся:

  • Jenkins: для автоматизации процесса деплоя.
  • Docker: для сборки и запуска нашего сайта в контейнере.
  • Pipeline: для автоматизации всего процесса сборки, создания файла и деплоя.

Шаг 1: Установка Jenkins и Docker

Перед тем как начать, убедитесь, что у вас установлены и настроены Jenkins и Docker. Если у вас еще нет Jenkins, вы можете установить его, следуя официальной документации Jenkins.

Также убедитесь, что Docker установлен на сервере Jenkins. Для этого выполните команду:

docker --version

Если Docker не установлен, вы можете установить его, следуя инструкциям с официального сайта Docker.

Шаг 2: Создание Dockerfile для вашего сайта

Для начала нам нужно создать Dockerfile для нашего сайта. В этом файле мы определим инструкции для сборки образа сайта. Пример простого Dockerfile для статического сайта может выглядеть так:

# Используем базовый образ с nginx
FROM nginx:alpine

# Копируем файлы сайта в директорию nginx
COPY ./site /usr/share/nginx/html

# Копируем файл ads.txt в корневую директорию сайта
COPY ./ads.txt /usr/share/nginx/html/ads.txt

# Указываем порт
EXPOSE 80

Этот Dockerfile делает следующее:

  1. Использует легковесный образ nginx:alpine как базовый образ.
  2. Копирует файлы сайта в директорию /usr/share/nginx/html, где Nginx по умолчанию обслуживает файлы.
  3. Копирует файл ads.txt в корень сайта.

Шаг 3: Создание Jenkins Pipeline

Теперь настроим Jenkins Pipeline для автоматизации сборки Docker образа и создания файла ads.txt. Вот пример pipeline:

pipeline {
   agent any

   environment {
       DOCKER_IMAGE = 'mywebsite:latest'  // Название Docker образа
       ADS_CONTENT = 'google.com, pub-2820954784774800, DIRECT, f08c47fec0942fa0' // Содержимое ads.txt
   }

   stages {
       stage('Checkout Code') {
           steps {
               // Клонируем репозиторий с сайтом
               git branch: 'main', url: 'https://github.com/your-repo/website.git'
           }
       }

       stage('Create ads.txt') {
           steps {
               // Создаем файл ads.txt с содержимым
               script {
                   writeFile file: 'ads.txt', text: "${ADS_CONTENT}"
               }
           }
       }

       stage('Build Docker Image') {
           steps {
               // Собираем Docker образ
               script {
                   docker.build("${DOCKER_IMAGE}")
               }
           }
       }

       stage('Run Docker Container') {
           steps {
               // Запускаем контейнер с сайтом
               script {
                   docker.image("${DOCKER_IMAGE}").run('-p 8080:80')
               }
           }
       }

       stage('Deploy to Production') {
           steps {
               // Здесь можно настроить деплой на сервер, например, через SCP или SSH
               echo "Deploying to production..."
           }
       }
   }

   post {
       always {
           // Удаление временных файлов и очистка рабочего пространства
           deleteDir()
       }
   }
}

Шаг 4: Объяснение pipeline

  1. environment: Здесь задаем переменные окружения для имени Docker образа и содержимого файла ads.txt.
  2. stage('Checkout Code'): В этом шаге Jenkins клонирует репозиторий с кодом сайта из указанного URL.
  3. stage('Create ads.txt'): Используем шаг writeFile для создания файла ads.txt с заданным содержимым.
  4. stage('Build Docker Image'): На этом этапе собирается Docker образ нашего сайта, включая файл ads.txt, с помощью команды docker.build.
  5. stage('Run Docker Container'): После сборки образа мы запускаем контейнер, который будет обслуживать наш сайт на порту 8080.
  6. stage('Deploy to Production'): На этом этапе можно настроить деплой контейнера на продакшен-сервер с использованием нужного метода (например, SCP или SSH).
  7. post always: Этот блок очищает рабочее пространство после выполнения всех этапов, удаляя временные файлы.

Шаг 5: Деплой на сервер

Для деплоя на сервер вы можете использовать различные методы, в зависимости от вашей инфраструктуры. Например, если у вас есть доступ к удаленному серверу, можно воспользоваться SCP:

sh '''
scp -r /path/to/your/docker-image.tar.gz user@your-server:/path/to/deploy/
ssh user@your-server 'docker load -i /path/to/deploy/docker-image.tar.gz && docker run -d -p 80:80 your-docker-image'
'''

Заключение

Теперь у тебя есть полностью автоматизированный процесс создания и деплоя файла ads.txt при сборке и развертывании сайта с помощью Jenkins и Docker. Этот подход не только упрощает создание файлов для управления рекламой, но и ускоряет деплой сайта. В результате твоя инфраструктура становится более гибкой, а процессы развертывания — более надежными.

Надеюсь, эта статья помогла тебе разобраться в том, как автоматизировать создание ads.txt с помощью Jenkins и Docker. Успехов в дальнейшем развитии твоего проекта!

Комментарии

Пока нет комментариев

Добавить комментарий