Код Yunxiao Pipeline уже здесь! В этих сценариях, если вы используете его правильно, ваша эффективность удвоится!

От визуальной оркестровки к поддержке оркестрации YAML

Cloud Effect Pipeline Flow — это готовый инструмент непрерывной интеграции и непрерывной доставки корпоративного уровня, который поддерживает богатые источники кода, инструменты построения, автоматизированного тестирования, несколько типов и методов развертывания, глубоко интегрирован с Alibaba Cloud, а также предоставляет множество функций корпоративного уровня, помогая предприятиям эффективно завершить процесс CICD от разработки до запуска.

В отрасли продукты конвейера обычно используются двумя способами: один — для работы с визуальным интерфейсом, а другой — с использованием языка YAML для организации конвейера, например, для написания кода.

С момента своего запуска в 2020 году Yunxiao Flow завоевал доверие десятков тысяч компаний благодаря работе в режиме белого экрана, готовому использованию, простоте и удобству использования, а также глубокой интеграции с Alibaba Cloud .

В прошлом году, чтобы помочь предприятиям быстро создавать несколько конвейеров, управлять пакетами и реализовывать сложные сценарии оркестровки процессов, такие как пропуск/ветвление, Yunxiao запустила новую функцию «Конвейер как код». Предприятия могут использовать YAML для создания конвейеров. На основе шаблона YAML, предоставленного Yunxiao, с небольшими изменениями можно быстро скомпилировать конвейер, соответствующий бизнес-сценариям.

Вы можете использовать YAML всего за несколько простых шагов

Когда дело доходит до YAML, первое, о чем думают многие студенты, — это порог использования. Yunxiao Flow имеет встроенные богатые шаблоны YAML и руководства YAML, поддерживает автоматическое завершение синтаксиса YAML, проверку в реальном времени и рекомендуемые решения для восстановления, а также различные операции с сочетаниями клавиш и т. д., чтобы помочь разработчикам снизить порог использования YAML. и повысить эффективность написания YAML.

1) Встроенный богатый шаблон YAML конвейера.

Flow предоставляет часто используемые шаблоны YAML конвейера, включая общие шаблоны построения и развертывания на Java, PHP, Node.js, Go, Python, .Net Core, C++ и других языках. При создании нового конвейера после выбора соответствующего шаблона YAML вы можете быстро скомпилировать конвейер, соответствующий бизнес-сценарию, лишь с небольшими изменениями.

2) Предоставьте шаблоны YAML для общих задач.

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

3) Редактор имеет встроенное руководство по YAML для удобства использования.

Чтобы облегчить написание YAML, в редакторе YAML Yunxiao Flow имеется встроенное руководство по YAML. Разработчики могут читать руководство во время написания YAML. При этом в руководстве YAML включено автоматическое позиционирование, а документ поддерживает автоматическое переключение на длину синтаксиса, позиционируемую курсором мыши, чтобы вы могли читать, пока пишете, и иметь личную «шпаргалку».

4) Поддержка автоматического завершения синтаксиса YAML.

Мало того, редактор YAML также поддерживает автоматическое завершение синтаксиса, включая завершение статического фрагмента синтаксиса, завершение ключевого слова статического синтаксиса, идентификатор динамического ресурса и другое автоматическое завершение (например, идентификатор кластера построения, идентификатор группы хостов, идентификатор подключения к службе и т. д.). Поддерживает сочетание клавиш Cmd + I для вызова автозаполнения.

5) Поддержка проверки синтаксиса YAML в режиме реального времени и рекомендуемые решения для ремонта.

Редактор YAML Flow также поддерживает проверку синтаксиса в реальном времени, отображение маркеров ошибок в строках кода в реальном времени и наведение мыши для просмотра подробностей об ошибках и планов исправления. Панель проблем поддерживает унифицированный просмотр ошибок, причин ошибок, планов исправления, а также координат строк и столбцов ошибок. При нажатии на ошибку автоматически будет найдена соответствующая строка кода.

Эти сценарии более эффективны при использовании YAML.

1) Быстро скопируйте YAML или вызовите OpenAPI, чтобы легко управлять несколькими конвейерами.

Используйте визуальный метод управления конвейером. Когда конвейеров много, модифицировать каждый конвейер сложнее. С помощью YAML разработчики могут легко настроить несколько конвейеров, скопировав YAML и внеся лишь несколько изменений.

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

2) Поддержка оценки условий для реализации сложных сценариев оркестровки процессов, таких как пропуск/ветвление.

Конвейер Cloud Effect Flow YAML поддерживает условия, позволяющие контролировать выполнение задания, удовлетворяя сложные сценарии оркестрации процессов, такие как пропуск и ветвление. Примеры типичных сценариев следующие:

Сценарий филиала: создайте один раз и разверните несколько сред по требованию.

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

sources: 
  my_repo:
    type: gitSample
    name: 示例代码源
    endpoint: https://atomgit.com/flow-example/spring-boot.git
    branch: master
stages:
  build_stage:
    name: 构建
    jobs:
      build_job:
        name: 构建任务
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is build job...
  deploy_stage:
    name: 部署测试环境
    jobs:
      deploy_job1:
        name: 部署测试环境一套
        # 根据指定环境名按需部署
        condition: |
          "${ENVNAME}" == "EVN1"
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: echo This is deploy env 1...
      deploy_job2:
        name: 部署测试环境二套
        # 根据指定环境名按需部署
        condition: |
          "${ENVNAME}" == "EVN2"
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: echo This is deploy env 2...

Сценарий пропуска: выпуск без периода окна требует дополнительного утверждения. Период окна не требует утверждения, пропустите напрямую;

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

sources: 
  my_repo:
    type: gitSample
    name: 示例代码源
    endpoint: https://atomgit.com/flow-example/spring-boot.git
    branch: master
stages:
  build_stage:
    name: 构建
    jobs:
      build_job:
        name: 构建任务
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is build job...
  approve_stage:
    name: 审批
    jobs:
      approve_job:
        name: 人工卡点
        # 运行分支为 master 时执行审批任务,请替换为实际的审批判断条件
        condition: | 
          "${CI_COMMIT_REF_NAME}" == "master"    
        component: ManualValidate
        with:
          validatorType: users           # 验证者类型为企业成员,通过阿里云 ID 确定审核人员
          validateMethod: and            # 验证方式 and:会签(须所有审批人同意)or:或签(一名审批人同意或拒绝即可)
          validators: 
            - 290591284908846966         #通过阿里云控制台获取阿里云 ID
  deploy_stage:
    name: 部署
    jobs:
      deploy_job:
        name: 部署任务
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: echo This is deploy job...

Сценарий пропуска: интерфейсное приложение не обновляется. Пропустите сборку и создайте только серверное приложение.

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

В этом примере пользовательская переменная среды конвейера "${FRONT_APP_CHANGED}" == "true" используется в качестве условия задачи. Если значение переменной истинно, выполняется построение внешнего приложения, в противном случае оно пропускается.

sources: 
  my_repo:
    type: gitSample
    name: 示例代码源
    endpoint: https://atomgit.com/flow-example/spring-boot.git
    branch: master
stages:
  build_stage:
    name: 构建
    jobs:
      front_build_job:
        name: 前端应用构建
        # 根据自定义环境变量判断是否需要执行前端应用构建
        condition: |
          "${FRONT_APP_CHANGED}" == "true"
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is front app build job...
      backend_build_job:
        name: 后端应用构建
        needs: front_build_job
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is backend app build job...
  deploy_stage:
    name: 部署
    jobs:
      deploy_job:
        name: 部署任务
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: echo This is deploy job...

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

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

sources: 
  my_repo1:
    type: gitSample
    name: app1代码源
    endpoint: https://atomgit.com/flow-example/spring-boot.git
    branch: master
  my_repo2:
    type: gitSample
    name: app2代码源
    endpoint: https://atomgit.com/flow-example/node-expressjs.git
    branch: master
defaultWorkspace: my_repo1
stages:
  build_stage:
    name: 构建
    jobs:
      test_job1:
        name: app1单元测试
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is test job1...
      scan_job1:
        name: app1代码扫描
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is scan job1...
      test_job2:
        name: app2单元测试
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is test job2...
      scan_job2:
        name: app2代码扫描
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is scan job2...
      build_job1:
        name: app1构建
        # 声明依赖任务,app1构建依赖app1单元测试和代码扫描任务都完成
        needs: 
          - test_job1
          - scan_job1
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is build job2...
      build_job2:
        name: app2构建
        # 声明依赖任务,app2构建依赖app2单元测试和代码扫描任务都完成
        needs: 
          - test_job2
          - scan_job2
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: |
                echo This is build job2...
  deploy_stage:
    name: 部署
    jobs:
      deploy_job1:
        name: app1部署
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: echo This is deploy env 1...
      deploy_job2:
        name: app2部署
        # 声明依赖任务,app2部署依赖app1部署任务完成
        needs: deploy_job1
        steps:
          command_step:
            name: 执行命令
            step: Command
            with:
              run: echo This is deploy env 2...

4) Поддержка синтаксиса шаблонов для реализации сценариев пакетной конфигурации нескольких заданий с одинаковой или похожей логикой.

Yunxiao Flow поддерживает использование синтаксиса шаблона для динамической визуализации конвейерного YAML, что может соответствовать сценариям пакетной конфигурации нескольких заданий с одинаковой или похожей логикой, соответствовать сценариям динамического создания нескольких заданий по требованию, помогает уменьшить повторяющийся код конвейерного YAML. и гибко организовывать многозадачность. В то же время он также поддерживает использование {{ }} для определения шаблонов и следования собственному синтаксису шаблона go.

Типичные сценарии использования включают в себя:

  • Несколько операционных систем, сценарий тестирования совместимости с несколькими версиями SDK: пройти ["linux", "windows"] 2 операционные системы, пройти ["10", "11", "17"] 3 версии JDK, используйте диапазон шаблона Цикл для создания 6 заданий с той же логикой.
  • Динамическая сборка и развертывание нескольких приложений по требованию. Конвейер настраивает несколько источников кода приложений, несколько задач сборки приложений и несколько задач развертывания приложений. Одна итерация включает только частичные обновления приложений. Динамическая сборка и развертывание могут быть изменены в зависимости от среды ввода во время выполнения. переменные, такие как имена приложений.

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

Yunxiao Flow приглашает вас оценить:

Если вы заинтересованы в возможности Yunxiao Flow Pipeline как кода, нажмите здесь, чтобы принять участие в оценочных мероприятиях Yunxiao Flow и опубликовать свое мнение о Flow.

С 26 апреля по 15 июня, если вы опубликуете обзорный контент, у вас будет возможность получить следующие награды:

  • Награда за участие: во время мероприятия пользователи, опубликовавшие обзор объемом более 200 слов и прошедшие его, получат  50 баллов;
  • Конкурс на награды за выдающиеся достижения: 10 статей. Если оценочная статья будет официально оценена как «отличная» во время мероприятия, вы получите индивидуальный кубок для повышения заработной платы Yunxiao;
  • Потенциальная награда: 5 статей, официально оцененных как высококачественные оценочные статьи, полученные Alibaba Cloud Building Block Planet + индивидуальная футболка Yunxiao + сертификат оценки высокого качества;
  • Лучшая награда: 1 статья, лучшая обзорная статья по официальной оценке, получит Xiaomi Band Pro + индивидуальную холщовую сумку Cloud Effect + сертификат оценки высокого качества + отображение на домашней странице сообщества в течение 1 недели.

RustDesk приостанавливает внутренние услуги из-за безудержного мошенничества Apple выпускает чип M4 Taobao (taobao.com) возобновляет работу по оптимизации веб-версии Старшеклассники создают свой собственный язык программирования с открытым исходным кодом в качестве подарка для совершеннолетия – критические комментарии пользователей сети: Опираясь на Защита Юнфэн ушла из Alibaba и планирует в будущем заняться производством . Место для независимых программистов игр . Visual Studio Code 1.89 выпускает Java 17. Это наиболее часто используемая версия Java LTS, доля рынка которой составляет 70. %, и Windows 11 продолжает снижаться. Open Source Daily | Google поддерживает Hongmeng, чтобы взять на себя управление; Docker с открытым исходным кодом поддерживает телефоны Android; Haier Electric закрыла открытую платформу;
{{o.name}}
{{м.имя}}

рекомендация

отmy.oschina.net/u/3874284/blog/11105947