Удаленно запускать задание Jenkins из функций Azure / виртуальной машины Azure

Взято из: http://mdb-blog.blogspot.com/2015/06/mysql-find-median-nth-element-without.html

I предложил бы другой способ, не присоединившись, но работая со строками

, я не проверял его с таблицами с большими данными, но с небольшими / средними таблицами он отлично работает.

Хорошая вещь здесь он также работает GROUPING, поэтому он может возвращать медиану для нескольких элементов.

здесь - тестовый код для тестовой таблицы:

DROP TABLE test.test_median
CREATE TABLE test.test_median AS
SELECT 'book' AS grp, 4 AS val UNION ALL
SELECT 'book', 7 UNION ALL
SELECT 'book', 2 UNION ALL
SELECT 'book', 2 UNION ALL
SELECT 'book', 9 UNION ALL
SELECT 'book', 8 UNION ALL
SELECT 'book', 3 UNION ALL

SELECT 'note', 11 UNION ALL

SELECT 'bike', 22 UNION ALL
SELECT 'bike', 26 

и код для поиска медианы для каждой группы:

SELECT grp,
         SUBSTRING_INDEX( SUBSTRING_INDEX( GROUP_CONCAT(val ORDER BY val), ',', COUNT(*)/2 ), ',', -1) as the_median,
         GROUP_CONCAT(val ORDER BY val) as all_vals_for_debug
FROM test.test_median
GROUP BY grp

Выход:

grp | the_median| all_vals_for_debug
bike| 22        | 22,26
book| 4         | 2,2,3,4,7,8,9
note| 11        | 11

0
задан 4c74356b41 19 March 2019 в 08:02
поделиться

1 ответ

Это действительно похоже на проблему с брандмауэром. Существует несколько способов реализации таких локальных реализаций в Azure, не открывая вашу сеть извне.

Начиная с самого простого подхода


A. Приложения логики

Приложения логики благодаря поддержке локального шлюза данных , который позволяет ему получать доступ к данным из локальных систем . [одна тысяча сто сорок-дв]

Это имеет несколько компонентов

  1. Пользовательский разъем Вам нужно создать пользовательский разъем , который можно подключить через -предоставляет шлюз данных и имеет одно определенное действие, которое может вызвать ваш компьютер Jenkins

  2. Настройка локального шлюза данных
    Вам потребуется [ 113] настройте локальный шлюз данных в вашей локальной сети так, чтобы он имел доступ к вашему ведущему устройству Jenkins (может также находиться на том же хосте, что и ведущее устройство Jenkins)

  3. Создание приложения логики
    Это простая часть, где вы используете приложение логики вместо Function Function. Вы можете создать простое
    HTTP-приложение, запускаемое по протоколу HTTP , которое использует пользовательский коннектор, который вы создали для запуска задания Jenkins


B. Azure Automation

Azure Automation имеет аналогичную функцию, в которой вы можете развернуть Hybrid Worker в локальной сети и запланировать задания в этом рабочий. [один тысяча сто сорок семь]

Вы можете развернуть любого из следующих работников в соответствии с вашими требованиями

  1. Windows Worker
  2. Linux Worker
  3. [ 1138]

    Runbook, который вы бы написали, мог быть в PowerShell или Python , и его целью было бы просто вызвать API Jenkins для запуска задания.

    Со всем этим вам нужно было бы запустить runbook на гибридном рабочем .

    Вы также можете запустить runbook из веб-крючка .

    <час>

    C. Подключите локальную сеть к Azure

    Это скорее сетевое решение, в котором вы подключаете локальную сеть к Azure VNET, позволяя любым ресурсам в этой VNET получать доступ к вашей локальной сети. системы.

    Есть несколько способов добиться этого, как описано в документации

    1. VPN-шлюз
    2. Экспресс-маршрут

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

    После настройки вы можете либо

    • Разоблачить Дженкинса
      Для этого вы можете просто открыть порт в NSG вашего VNET, но это на самом деле не рекомендуется, так как вы могли бы просто вместо этого выставить его непосредственно в локальной сети.

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

    • Разверните ваше приложение Function или Logic в VNET
      Если вы не хотите выставлять конечную точку Jenkins извне, вы можете развернуть либо

      [ 1172]
    • Функция приложения в среде служб приложений (ASE)
    • Приложение логики в среде служб интеграции (ISE)
      • В обоих этих сценариях вы могли напрямую вызывать конечную точку Jenkins, используя IP-адрес, на котором она размещена (сам локальный IP-адрес)

0
ответ дан PramodValavala-MSFT 19 March 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: