Рубрики
Uncategorized

Триггерный трубопровод битбукет Только если определенные файлы изменены (с функциями облаков Google)

Битбукет. Помечено DEVOPS, CICD, GCP, BitBucket.

Впервые появился в omar.ai Отказ

Обзор того, что вы сделаете.

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

В этой статье мы реализуем Bitbucket CI/CD CD-трубопровод.

Успенция: У вас есть некоторое знакомство с DevOps, CI/CD, Cloud Functions, BitBucket и Docker. Если нет, вы можете посетить ссылки.

Сценарий

У вас есть несколько функций облачных функций в репозитории и хочется индивидуальный вариант развертывания тестирования по сборке для каждой функции.

Примечание. Эти примерные функции расширены от образца, указанного в документации GCP.

Скажем, у вас есть две функции, которые печатают

Hello World!

и

Hello Mars!

Эти функции размещены в BitBucket и изначально вы можете развернуть их из местной среды:

gcloud functions deploy hello_world --allow-unauthenticated --runtime=python37 --memory=128MB --source hello_word/ --timeout=300 --trigger-http --entry-point=hello_world

Но это не идеальный процесс. Решение — использовать контроль версий и автоматической сборки, тестирования и развертывания.

Ниже приведена новая функция для трубопроводов BitBucket во время письма, которое запускает трубопровод, когда определенные файлы изменены:

condition:
    changesets:
        includePaths:
          - "path/*"

Руки вверх

Шаги

  • Создать службу учетной записи в GCP
  • Экспортируйте учетную запись учетной записи службы в BitBucket и настройте параметры BitBucket
  • Настройка битбукетных трубопроводов

Из консоли GCP

  • IAM & admin -> Сервисные счета -> Создать учетную запись услуг
  • Выберите подходящее имя и нажмите Создать
  • Выбирать Роль пользователя службы учетной записи пользователя
  • Нажмите «Создать клавишу» и сохраните файл .json. Наконец, нажмите «Готово», чтобы продолжить

Ваша учетная запись услуг создана, и вам необходимо предоставить некоторые разрешения для трубопроводов Bitbucket, чтобы правильно работать.

От IAM & Admin

  • Перейти к «ролям»
  • Выберите «Создать роль»
  • Дайте подходящие имена «Название» и «ID»
  • В «Добавить разрешения» добавить «Облачные функции Admin» & «Услуги обслуживания пользователя»
  • Нажмите «Create», и создается ваша пользовательская роль, которая должна быть прикреплена к учетной записи службы
  • Перейдите в «IAM» и выберите свою учетную запись службы, которая была создана ранее
  • Нажмите на наследство и добавьте ее роль

В следующем настроении настраивает трубопроводы BitBucket.

Вам придется сначала настроить переменные среды. Мы должны сделать это, потому что укрепляющие полномочия — это плохая практика.

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

Следующие переменные должны быть добавлены.

GCP_PROJECT_PROJECT_ID
GCP_PROJECT_PRIVATE_KEY_ID
GCP_PROJECT_PRIVATE_KEY
GCP_PROJECT_EMAIL
GCP_PROJECT_CLIENT_ID
GCP_PROJECT_CERT_URL
GCP_PROJECT_REGION

Замените «проект» с вашим «именем проекта».

Поскольку это руководство, я не буду использовать многорегулярные переменные. Имя значение по умолчанию не изменяется.

В Bitbucket Repository

  • Перейдите в «Параметры репозитория» -> «Переменные репозитория»
  • Если требуется включение трубопроводов, выполните шаги
  • Совершить трубопровод по умолчанию при условии, что вы собираетесь изменить скоро
  • Добавьте вышеупомянутые имена. Значения из файла учетной записи службы учетной записи и регион, который вы используете

Создайте файл с именем «SA-Project.dist.json». Где «SA» означает «Сервисный аккаунт» и «Проект» для «Имя проекта».

Содержимое файла — это копия ваших учетных данных с учетной записи службы, но с переменными среды.

{
"type": "service_account",
"project_id": "$GCP_PROJECT_PROJECT_ID",
"private_key_id": "$GCP_PROJECT_PRIVATE_KEY_ID",
"private_key": "$GCP_PROJECT_PRIVATE_KEY",
"client_email": "$GCP_PROJECT_EMAIL",
"client_id": "$GCP_PROJECT_CLIENT_ID",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "$GCP_PROJECT_CERT_URL"
}

Теперь вы будете работать с битом Bitbucket-Pipelines.yml

У них есть сладкий инструмент для подтверждения ваших трубопроводов.

Bitbucket-Pipelines.yml:

pipelines:
  branches:
    master:
      - step:
          name: Deploy hello_world
#          deployment: test/ staging/ production
          image: google/cloud-sdk:234.0.0
          script:
              - apt-get update && apt-get install -y gettext-base
              - envsubst < sa-PROJECT.dist.json > service-account.json
              - gcloud auth activate-service-account --key-file=service-account.json
              - gcloud functions deploy hello_world --runtime python37 --trigger-http --project $GCP_PROJECT_PROJECT_ID --region $GCP_PROJECT_REGION --source hello_world/
          condition:
              changesets:
                 includePaths:
                   - "hello_world/*"
      - step:
          name: Deploy hello_mars
#          deployment: test/ staging/ production
          image: google/cloud-sdk:234.0.0
          script:
              - apt-get update && apt-get install -y gettext-base
              - envsubst < sa-PROJECT.dist.json > service-account.json
              - gcloud auth activate-service-account --key-file=service-account.json
              - gcloud functions deploy hello_mars --runtime python37 --trigger-http --project $GCP_PROJECT_PROJECT_ID --region $GCP_PROJECT_REGION --source hello_mars/
          condition:
              changesets:
                 includePaths:
                   - "hello_mars/*"

Вы можете найти код в этом Репозиторий BitBucket Отказ И вы можете использовать его как шаблон.

Так что теперь, если вы хотите экспериментировать, вы можете изменить только «Hello_Mars» только «Hello Mars», будет развернут и наоборот.

И вы закончите, вызывая трубопроводы Bitbucket, когда определенные файлы изменяются!

Спасибо за чтение!

Если у вас есть какие-либо отзывы, вы можете прокомментировать ниже или Tweet @ omar161000. . Связь со мной на LinkedIn Отказ

Спасибо за рассмотрение проектов:

Впервые появился в omar.ai Отказ

использованная литература

Определения

  • Ямл
    • Ямл не разметки языка. Он обычно используется для файлов конфигурации и в приложениях, где данные хранятся или передаются. Он использует оба вдавливания в стиле Python, чтобы указать вложение, и более компактный формат, который использует [] для списков и {} для карт [1], что делает YAML 1.2 суперсетом JSON.
  • Докер
    • Является формой доставки программного обеспечения в пакетах, называемых контейнерами. Контейнеры изолированы друг от друга и связывают собственное программное обеспечение, библиотеки и файлы конфигурации; Они могут общаться друг с другом через четко определенные каналы. Все контейнеры выполняются однометражным ядром операционной системы и поэтому используют меньше ресурсов, чем виртуальные машины. В этом посте были использованы Docker Images, выполните все команды в файле YML.
  • Дежопт
    • DevOps — это набор практик, которые сочетают в себе операции по разработке программного обеспечения и информационно-технологий, которые направлены на сокращение жизненного цикла развития систем и обеспечивают непрерывную доставку с высоким качеством программного обеспечения.
  • CI/CD.
    • Как правило, относится к объединенной практике непрерывной интеграции и непрерывной доставки, так и/или непрерывного развертывания. Более подробный
  • Трубопроводы
    • Шаги, которые необходимо выполнить для выполнения CI/CD
  • Битбукет
    • BitBucket — это веб-служба хостинга управления версией на основе веб-сайтов, принадлежащая Atlassian, для проектов исходного кода и разработки, которые используют системы управления Mercurial или Git Revision. BitBucket предлагает как коммерческие планы, так и бесплатные счета.
  • Google Cloud Platform (GCP)
    • Платформа Google Cloud Platform, предлагаемая Google, представляет собой набор услуг облачных вычислений, который работает на той же инфраструктуре, которую Google использует внутренне для своих продуктов конечных пользователей, таких как поиск Google, Gmail и YouTube.
  • Облачные функции
    • Облачные функции — это соискание Google Cloud’s Competed Propute Platform. Запустите свой код локально или в облаке, без необходимости предоставления серверов. Перейти от кода для развертывания с постоянными инструментами доставки и мониторинга. Облачные функции масштабируется вверх или вниз, поэтому вы платите только за вычислять ресурсы, которые вы используете. Легко создавать сквозные сценарии комплексных сценариев разработки, подключившись с существующим облаком Google или сторонним сервисом.

Подниматься.

Оригинал: «https://dev.to/omar16100/trigger-bitbucket-pipeline-only-if-certain-files-are-changed-with-google-cloud-functions-1abc»