Статьи

Непрерывное развертывание с веб-сайтами Windows Azure

В прошлую пятницу в Windows Azure была добавлена ​​поддержка непрерывного развертывания из репозиториев GitHub и CodePlex на веб-сайтах Windows Azure. Непрерывное развертывание уведомляет Windows Azure о внесении обновлений в Git-репозиторий на GitHub или CodePlex, и Windows Azure затем извлекает эти изменения для обновления вашего веб-сайта.

Я думал, что попробую настроить что-то, что выиграет от непрерывного развертывания. Как блог, созданный с помощью Octopress.

Octopress

Octopress — это среда ведения блогов Ruby, которая берет статьи, которые вы пишете в Markdown, и генерирует из них статический сайт. Статический сайт означает, что нет базы данных, нет динамической генерации страниц при их просмотре и т. Д. Просто старый HTML, JavaScript, CSS и т. Д.

Поскольку это блог (который теоретически я бы регулярно обновлял), он идеально подходит для непрерывного развертывания; Я пишу сообщение, проверяю его в своем локальном репозитории Git, отправляю на GitHub, и оно автоматически попадает на мой сайт в Windows Azure.

Обратите внимание, что хотя я использую Octopress, тот же общий процесс можно использовать и с другими проектами. Octopress просто является хорошим примером.

Настройка веб-сайта Windows Azure

Прежде чем мы приступим к настройке Octopress, давайте пройдемся по шагам по созданию веб-сайта Windows Azure для его размещения. Хотя существует несколько способов создания веб-сайта Windows Azure, я просто использовал портал, поскольку он довольно прост. Вот шаги:

  1. Откройте браузер и перейдите на http://windows.azure.com . Войдите с вашей подпиской.

    ПРИМЕЧАНИЕ. Требуется портал предварительного просмотра, который может быть или не быть вашим по умолчанию (он остается на том портале, который вы выбрали последним). Если вы не находитесь на портале предварительного просмотра, выберите ссылку « Посетить портал предварительного просмотра» внизу страницы. ,

  2. Нажмите + NEW внизу страницы, выберите ВЕБ-САЙТ , а затем БЫСТРЫЙ СОЗДАТЬ .

  3. Введите URL-адрес, выберите регион и т. Д., А затем установите флажок, чтобы создать сайт.

  4. Как только сайт будет создан, выберите имя сайта, чтобы перейти к панели инструментов. Найдите URL-адрес САЙТА в правой части страницы. Это будет что-то вроде http://mysite.azurewebsites.net/ . Сохраните это значение, так как оно понадобится вам на этапах настройки Octopress.

Настройка Octopress

Настройка Octopress уже достаточно хорошо задокументирована. Я смог выполнить шаги по настройке и настройке с небольшими проблемами.

  1. Начните с создания форка проекта Octopress на GitHub и клонирования его на локальный компьютер.

  2. Следуйте инструкциям на странице настройки Octopress . Это поможет вам установить необходимые гемы и инициализировать тему.

  3. Следуйте инструкциям на странице настройки Octopress . Это поможет вам обновить _config.yml значениями для вашего сайта. Вам понадобится значение URL сайта на портале Windows Azure для значения ‘url’ в этом файле.

  4. Следуйте инструкциям на странице « Основы ведения блогов», чтобы создать один или два блога. Это проведет вас через процесс создания постов для сайта.

  5. Запустите rake generate, чтобы сгенерировать статические файлы в подкаталоге / public .

  6. Наконец, передайте обновления в ваш локальный репозиторий и вернитесь в репозиторий GitHub, выполнив:

    git add .
    git commit -m "new blog post"
    git push origin master

Это подталкивает ваши сообщения в блоге и статический сайт, сгенерированный на шаге 5 выше, обратно в ваш репозиторий GitHub.

Включить непрерывное развертывание

  1. Вернувшись на портал Windows Azure, выберите свой веб-сайт и выберите панель инструментов . В разделе « Быстрый просмотр » выберите « Настройка публикации git» .

    ПРИМЕЧАНИЕ. Если вы еще не настроили Git-репозиторий для веб-сайта Windows Azure, вам будет предложено ввести имя пользователя и пароль.

  2. После создания репозитория у вас будет несколько вариантов: перенести мои локальные файлы в Windows Azure, развернуть из моего проекта GitHub или развернуть из моего проекта CodePlex. Разверните Развернуть из моего проекта GitHub и нажмите ссылку Авторизовать Windows Azure .

  3. Вам будет предложено войти в GitHub и, наконец, выбрать репозиторий, который вы хотите связать с этим веб-сайтом. Выберите репозиторий, который вы создали ранее для Octopress.

После того, как вы выбрали репозиторий, Windows Azure извлечет последние изменения и начнет обрабатывать файлы.

О нет! Что-то не так!

Если вы попытались просмотреть веб-сайт Windows Azure на этом этапе, вы получите сообщение об ошибке. Возможно, что-то вроде «У вас нет прав для просмотра этого каталога или страницы». Есть две проблемы, вызывающие это:

  • Все наши статические файлы находятся в каталоге / public, и в корневом каталоге сайта нет файла по умолчанию (например, index.html).

  • В файле .gitignore для проекта есть каталог / public , что исключает возможность развертывания всех наших сгенерированных статических файлов.

Обе проблемы легко решаются путем выполнения следующих шагов в локальном хранилище:

  1. Отредактируйте файл .gitignore и удалите строку, содержащую public .

  2. Создайте файл с именем web.config в корне локального репозитория Octopress и вставьте в него следующее:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="false" />
        <rewrite>
          <rules>
            <clear />
            <rule name="RewriteToPublic" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
              <match url="(.*)"/>
              <action type="Rewrite" url="public/{R:1}" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    </configuration>
    view raw
    web.config
    Этот Gist предоставлен вам
    GitHub .

    Важной частью является раздел правил , который принимает входящие запросы и переписывает запрос в общую папку.

  3. Подтвердите это изменение, используя:

    git add .
    git commit -m "adding public content and rewrite rule"
    git push origin master

После того, как загрузка завершена, если вы посмотрите на раздел DEPLOYMENT вашего веб-сайта на портале Windows Azure, вы увидите, что он автоматически загружает это обновление как новое активное развертывание:

Теперь вы можете перейти к URL сайта, и должна появиться главная страница.

Секретный соус

Функция непрерывного развертывания работает путем создания уникального URL-адреса для вашего веб-сайта, который затем добавляется в настройки вашего репозитория на GitHub. Вы можете найти URL-адрес, перейдя в раздел КОНФИГУРАЦИЯ вашего веб-сайта на портале Windows Azure и найдя URL-адрес DEPLOYMENT TRIGGER . Обратите внимание, что прямо под этим вы можете контролировать, с какой ветки он тоже тянет.

Теперь, чтобы увидеть, где он подключен к GitHub, перейдите по ссылке Admin для вашего репозитория, выберите Service Hooks и, наконец, выберите URL-адреса WebHook .

Когда вы отправляете обновление в GitHub, он отправляет запрос POST на URL-адреса WebHook, сообщая этим службам, что произошло обновление. Windows Azure проверяет, было ли обновление для той ветки, которую вы велели отслеживать (master по умолчанию), и, если это так, отменяет обновления.

Если вы хотите отключить постоянные обновления, просто удалите URL-адрес WebHook из GitHub.

архив

Одно раздражение, с которым я столкнулся, это то, что ссылка Архивы не будет работать. Оказывается, это потому, что в нем отсутствует завершающий символ «/». Я обновил исходный файл / _includes / custom / navigation.html и добавил конечную ‘/’ к ссылке на архив.

Резюме

Благодаря функции постоянного обновления довольно просто обновлять веб-сайт Windows Azure с помощью новейшего программного обеспечения GitHub или CodePlex. Хотя Octopress является лишь одним из примеров использования этой функциональности, вы можете сделать то же самое с любым PHP, Node.js, .NET или статическим веб-сайтом. Увы, поддержки Ruby пока нет; для чего-то вроде приложения на Rails вы все равно должны использовать что-то вроде проекта RubyRole, о котором я писал ранее.