• Home
  • Insight
  • Blog
  • Business
  • Entertainment
  • Health
  • Politics
  • Shop
    • Gift Shop
    • Value Shop
    • Store
    • Bargain Shop
    • Discount
  • Sports
  • Tech
  • Travel
  • USA
  • Video
  • World
    • Asia
    • Africa
    • South America
    • North America
    • Europe
    • Oceania
Wednesday, October 7, 2026
No Result
View All Result
Subscribe Now
  • Home
  • Insight
  • Blog
  • Business
  • Entertainment
  • Health
  • Politics
  • Shop
    • Gift Shop
    • Value Shop
    • Store
    • Bargain Shop
    • Discount
  • Sports
  • Tech
  • Travel
  • USA

    Washington state man charged with helping Canadian mass shooter plan for attack

    Border Security, Public Safety, and American Sovereignty with Markwayne Mullin

    Students injured as NJ high school bleachers collapse in scary scene

    California man in incest case busted in Mexico; teen daughter rescued

    Cornell president calls gang rape allegations ‘deeply disturbing’ : NPR

    France’s violent student protests raise warning for America: ‘A cautionary tale’

    Birmingham’s WBHM Public Radio Station Forced to Use “Gulf of America”

    Eminem gets online backlash from fans over Kid Rock Christian album collab

    Trump leans into Iran war, admits it could cost Republicans the midterms

  • Video
  • World
    • Asia
    • Africa
    • South America
    • North America
    • Europe
    • Oceania
The Insight Post
  • Home
  • Insight
  • Blog
  • Business
  • Entertainment
  • Health
  • Politics
  • Shop
    • Gift Shop
    • Value Shop
    • Store
    • Bargain Shop
    • Discount
  • Sports
  • Tech
  • Travel
  • USA

    Washington state man charged with helping Canadian mass shooter plan for attack

    Border Security, Public Safety, and American Sovereignty with Markwayne Mullin

    Students injured as NJ high school bleachers collapse in scary scene

    California man in incest case busted in Mexico; teen daughter rescued

    Cornell president calls gang rape allegations ‘deeply disturbing’ : NPR

    France’s violent student protests raise warning for America: ‘A cautionary tale’

    Birmingham’s WBHM Public Radio Station Forced to Use “Gulf of America”

    Eminem gets online backlash from fans over Kid Rock Christian album collab

    Trump leans into Iran war, admits it could cost Republicans the midterms

  • Video
  • World
    • Asia
    • Africa
    • South America
    • North America
    • Europe
    • Oceania
No Result
View All Result
No Result
View All Result
Home Mobile

Непрерывная интеграция и доставка (CI/CD) на платформе Flutter с Codemagic

by Theinsightpost
August 7, 2022
in Mobile
0 0
0
Непрерывная интеграция и доставка (CI/CD) на платформе Flutter с Codemagic


Данное руководство содержит краткий обзор по сборке Flutter-приложений с помощью Codemagic CI/CD. Обновлено в июле 2021 г.

На конференции Flutter Live 2018 в Лондоне компания Nevercode в партнерстве с Google объявила о выходе CI/CD предназначенного для Flutter-приложений – CI/CD под названием Codemagic. С Codemagic вы можете тестировать и выпускать свои Flutter-приложения без каких-либо усилий, избежав процесса кофигурации.

Мы намного больше, чем просто эксперты по Flutter. Если вы хотите использовать все возможности CI/CD не только для Flutter-приложений, вы можете это сделать с помощью codemagic.yaml. В этом конфигурационном файле вы можете настроить сборку нативных приложений для Android и iOS, а также приложений созданных с React Native, Ionic и Cordova. Если вам необходим еще больший контроль, Codemagic позволяет запускать пользовательские скрипты и создавать собственные рабочие процессы для ваших приложений. Быстрая разработка высококачественных приложений стала еще лучше!

В этой статье вы узнаете, как создавать, тестировать и доставлять Flutter-приложения с Codemagic.

Начало работы

Убедитесь, что ваше Flutter-приложение загружено на платформу для хостинга IT-проектов (например, GitHub, Bitbucket или GitLab), используя систему контроля версий. Чтобы начать сборку приложения с помощью Codemagic CI/CD, сначала вам нужно зарегистрироваться. Это можно сделать используя GitHub, Bitbucket или GitLab учетную запись, либо используя электронную почту. Следуйте инструкциям ниже, чтобы получить доступ к своему проекту на Codemagic:

  1. Авторизируйтесь в Codemagic. Если вы еще не пользовались Codemagic, зарегистрируйтесь:

Зарегистрироваться

  1. На странице приложений нажмите Add application чтобы добавить приложение:

  2. Выберите Git-провайдера, где ваше приложение размещено (или выберите Other, если вы хотите добавить приложение, используя URL-адрес репозитория):

  3. Нажмите Next: Authorize integration, чтобы Codemagic мог видеть ваши репозитории. Если выбранный Git-провайдер уже авторизирован, нажмите Next: Select repository чтобы выбрать репозиторий с вашим приложением.

    Если вы используете GitHub, то перед выбором репозитория нужно сделать еще один шаг. Нажмите Install GitHub App чтобы начать интеграцию. Подробнее о настройке интеграций GitHub-приложений смотрите здесь.

  4. Теперь выберите нужный репозиторий (или добавьте URL-адрес, если вы используете Others) и тип проекта. Нажмите Finish: Add application чтобы завершить добавление приложения:

  5. Теперь вы в настройках проекта. По умолчанию будет выбрана вкладка Workflow Editor – Редактор рабочего процесса.

Вы можете настроить рабочие процессы для вашего Flutter-приложения используя Workflow Editor либо в конфигурационном файле codemagic.yaml.

Подробнее о редакторе рабочего процесса

Здесь мы покажем, как использовать редактор рабочего процесса, чтобы сконфигурировать рабочий процесс сборки и сгенерировать отладочные сборки (debug builds) для вашего Flutter-приложения.

С правой стороны вы найдете панель Workflow settings (Настройки рабочего процесса), на которой можете изменить имя рабочего процесса, установить максимальную продолжительность сборки, составить расписание сборок и многое другое. Вы также можете скачать файл конфигурации codemagic.yaml здесь.

ПРИМЕЧАНИЕ: Скачанный файл конфигурации может не полностью соответствовать настройкам, определенным в Редакторе рабочего процесса. Может потребоваться корректировка.
Подробнее о настройках рабочего процесса смотрите в документации.

Триггеры сборки

В разделе Builds triggers вы можете автоматизировать запуск своих сборок на Codemagic, указав триггеры сборки. Здесь вы можете настроить, когда какие события (отправка изменений в репозиторий (push), изменения в пулл-реквесте или создании тега) и на каких ветках запускают сборку.

Подробнее о триггерах сборки смотрите здесь.

Переменные среды

Вы можете хранить свои учетные данные, API-ключи или любого рода секретные файлы на Codemagic, указав их в разделе Environment variables (переменных среды). Поставьте галочку в графе Secure чтобы зашифровать данные.

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

Подробнее о добавлении переменных среды смотрите здесь.

Кеширование зависимостей

Вы можете ускорить сборку на Codemagic посредством кеширования зависимостей в разделе Dependency caching. Для начала, поставьте галочку в графе Enable dependency caching (Включить кеширование зависимостей). После этого укажите путь(и) к зависимостям, которые вы хотите кешировать.

Подробнее о кешировании зависимостей смотрите здесь.

Тестирование

В разделе Test вы можете настроить, какие типы тестов вы хотите запускать. Если вы запускаете интеграционное тестирование, то можете указать тип используемого устройства. Это может быть эмулятор, симулятор или физическое устройство (AWS Device Farm).

Подробнее о тестировании Flutter-приложений на Codemagic смотрите здесь.

Сборка

В разделе Build вы можете настроить версию Flutter, Xcode и CocoaPods. Кроме того, в этом разделе вы можете определить путь к корню проекта и режим сборки (debug, release или profile).

Подробнее о сборке Flutter-приложений на Codemagic смотрите здесь.

Распрастранение

В разделе Distribution вы можете настроить подписание кода (code signing) и публикацию (publishing) для своего Flutter-приложения. Codemagic позволяет автоматически публиковать ваше приложение в различных сервисах, таких как Google Play Store, App Store Connect и Firebase App Distribution. Для публикации веб-приложения Flutter вы можете использовать удобные в обращении статические страницы Codemagic.

В зависимости от выбранных платформ сборки вам предлагаются разные варианты распространения.

Подробнее о различных вариантах распространения смотрите здесь.

Уведомления

В разделе Notifications вы можете настроить уведомления по электронной почте и в Slack.

Пользовательские скрипты

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

Вы можете определять собственные скрипты на любом языке. (Язык можно выбрать с помощью строки shebang.) Например, если вы используете Firebase в своем проекте, то вам необходимо расшифровать секретные файлы Firebase перед сборкой приложения. Для этого добавьте следующий скрипт перед сборкой:

#!/usr/bin/env sh
set -e # exit on first failed command

echo $ANDROID_FIREBASE_SECRET | base64 --decode > $CM_BUILD_DIR/android/app/google-services.json
echo $IOS_FIREBASE_SECRET | base64 --decode > $CM_BUILD_DIR/ios/Runner/GoogleService-Info.plist

Подробнее о пользовательских скриптах смотрите здесь.

Подробнее о codemagic.yaml

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

Для лучшего понимания мы рекомендуем прочитать эту статью, но если у вас уже есть опыт использования файла codemagic.yaml, то здесь вы можете взять шаблон для Flutter-приложеия.

Пример рабочего процесса по сборке debug Android-приложения выглядит следующим образом:

workflows:
  simple-android-workflow:
    name: Simple Android Workflow
    instance_type: mac_mini
    max_build_duration: 60
    environment:
      flutter: stable
    scripts:
      - name: Set up debug keystore
        script: |
          rm -f ~/.android/debug.keystore
          keytool -genkeypair 
            -alias androiddebugkey 
            -keypass android 
            -keystore ~/.android/debug.keystore 
            -storepass android 
            -dname 'CN=Android Debug,O=Android,C=US' 
            -keyalg 'RSA' 
            -keysize 2048 
            -validity 10000          
      - name: Set up local properties
        script: echo "flutter.sdk=$HOME/programs/flutter" > "$CM_BUILD_DIR/android/local.properties"
      - name: Get Flutter packages
        script: flutter packages pub get
      - name: Build debug apk
        script: flutter build apk --debug
    artifacts:
      - build/**/outputs/**/*.apk
      - build/**/outputs/**/*.aab
      - build/**/outputs/**/mapping.txt
      - flutter_drive.log
    publishing:
      email:
        recipients:
          - name@gmail.com

Пример рабочего процесса по сборке debug iOS-приложения выглядит следующим образом:

workflows:
  simple-ios-workflow:
    name: Simple iOS Workflow
    instance_type: mac_mini
    max_build_duration: 60
    environment:
      flutter: stable
      xcode: latest
      cocoapods: default
    scripts:
      - name: Set up local properties
        script: echo "flutter.sdk=$HOME/programs/flutter" > "$CM_BUILD_DIR/android/local.properties"
      - name: Get Flutter packages
        script: flutter packages pub get
      - name: Install Podfiles
        script: find . -name "Podfile" -execdir pod install ;
      - name: Build debug iOS app
        script: flutter build ios --debug --no-codesign
    artifacts:
      - build/**/outputs/**/mapping.txt
      - build/ios/ipa/*.ipa
      - /tmp/xcodebuild_logs/*.log
      - flutter_drive.log
    publishing:
      email:
        recipients:
          - name@gmail.com

Далее мы рассмотрим основные разделы файла codemagic.yaml подробнее.

Переменные среды

В разделе environment вы можете определить учетные данные (в зашифрованном формате) и указать версии различных инструментов, таких как Flutter, Xcode, CocoaPods и т. д.

environment:
  flutter: stable
  xcode: latest
  cocoapods: default

Скрипты

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

Чтобы получить пакеты Flutter, используйте следующее:

- name: Get Flutter packages
  script: flutter packages pub get

Чтобы запустить Flutter анализ, можете использовать следующее:

- name: Flutter analyze
  script: flutter analyze

Flutter юнит-тесты можно запустить, используя:

- name: Flutter unit tests
  script: flutter test

Для сборки debug-версии приложения используйте следующее:

# Build debug Android .apk
- name: Build debug apk
  script: flutter build apk --debug
# Build debug iOS .app
- name: Build debug iOS app
  script: flutter build ios --debug --no-codesign

Артефакты

Вы можете получить сгенерированный файл .apk или .app, добавив путь к нему под artifacts. Обычно пути выглядят так:

# For Android
artifacts:
  - build/**/outputs/**/*.apk
  - build/**/outputs/**/*.aab
  - build/**/outputs/**/mapping.txt
  - flutter_drive.log
# For iOS
artifacts:
  - build/**/outputs/**/mapping.txt
  - build/ios/ipa/*.ipa
  - /tmp/xcodebuild_logs/*.log
  - flutter_drive.log

Публикация

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

publishing:
  email:
    recipients:
      - name@example.com # ваш адрес электронной почты

Для получения дополнительной информации о публикации перейдите по этой ссылке.

Подписание кода

Чтобы опубликовать свое Android-приложение в Google Play Store или iOS/macOS-приложение в App Store Connect, вам необходимо подписать его код.

Для настройки подписания кода вы можете выполнить приведенные здесь шаги:

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

Если вы используете файл codemagic.yaml для создания release-сборок Flutter-проектов, то можете использовать следующие команды:

# For Android release build
- name: Build release APK with Flutter (automatic versioning)
  script: |
        flutter build apk --release --build-name=1.0.0 --build-number=$(($(google-play get-latest-build-number --package-name "$PACKAGE_NAME" --tracks="$GOOGLE_PLAY_TRACK") + 1))
# For iOS release build
- name: Build ipa with Flutter (automatic versioning)
  script: |
    flutter build ipa --release 
    --build-name=1.0.0 
    --build-number=$(($(app-store-connect get-latest-testflight-build-number "$APP_STORE_ID") + 1)) 
    --export-options-plist=/Users/builder/export_options.plist    

В этих командах используется несколько переменных среды. Чтобы узнать подробнее об этих командах перейдите по ссылкам на приведенные выше статьи о подписании кода.

Выпуск приложения

Codemagic позволяет автоматически публиковать Android-приложения в Google Play Store или iOS/macOS-приложения в App Store Connect.

Для выпуска своего приложения вы можете следовать шагам, приведенным в статьях ниже:

Ознакомьтесь с документацией по публикации Codemagic.

Сборка на Codemagic

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

Чтобы начать сборку следуйте инструкциям ниже:

  1. Войдите в настройки своего проекта. Если вы используете редактор рабочего процесса, убедитесь, что выбрали правильные платформы и машину, на которой будет запускаться сборка. Далее нажмите Start new build (начать новую сборку) или Start your first build (если вы запускаете впервые).

  2. Выберите рабочий процесс и нажмите Start new build.

Сборка вашего Flutter-проекта запущена.

Поздравляем! ? Ваша первая сборка Flutter на Codemagic CI/CD завершена!

Информация, которую следует иметь в виду, если вы создаете desktop-приложения:

  • macOS-приложения можно создавать только на машинах Mac
  • Linux-приложения можно создавать только на машинах Linux (платные минуты)
  • desktop и мобильные приложения нельзя создавать одновременно

Веб-хуки

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

Вы можете получить URL-адрес, необходимый для добавления веб-хуков вручную, во вкладке Webhooks в настройках приложения. Кроме того, на этой странице в разделе Recent deliveries находится список всех сборок запущенных с помощью веб-хуков.

Заключение

Хотя Codemagic изначально разрабатывался как официальное CI/CD решение, предназначенное исключительно для Flutter-приложений, теперь он поддерживает любые мобильные проекты. С помощью магии Codemagic вы можете собирать, тестировать и публиковать Flutter-приложения избежав процесса конфигурации и запускать сборки в контролируемых средах, используя индивидуальные рабочие процессы. Если у вас есть нативное Android или iOS приложение, или React Native приложение, Codemagic всегда поможет вам. Просто используйте файл codemagic.yaml, и все будет готово для старта!

Успешных сборок!

Полезные ссылки

Stay updated with app development news



Source link

ShareTweetSend
Previous Post

Clu Gulager, Rugged Character Actor of Film and TV, Dies at 93

Next Post

Azerbaijani Defense Ministry presents review of events of last week (VIDEO)

Related News

Mobile

Android Developers Blog: Device Streaming and Android skills

October 6, 2026
Mobile

Samsung confirms broad SmartTag 3 Android support

October 5, 2026
Mobile

How Can Software Consulting Company Benefit Your Business?

October 4, 2026
Mobile

Injection Molding Cost Estimation: How AI Delivers ROI

October 4, 2026
Next Post
Azerbaijani Defense Ministry presents review of events of last week (VIDEO)

Azerbaijani Defense Ministry presents review of events of last week (VIDEO)

Discussion about this post

Subscribe To Our Newsletters

    Customer Support


    1251 Wilcrest Drive
    Houston, Texas
    77042 USA
    Call-832.795.1420
    e-mail – news@theinsightpost.com

    Subscribe To Our Newsletters

      Categories

      • Africa
      • Africa-East
      • African Sports
      • American Sports
      • Arts
      • Asia
      • Australia
      • Business
      • Business Asia
      • Business- Africa
      • Canada
      • Defense
      • Education
      • Egypt
      • Energy
      • Entertainment
      • Europe
      • European Soccer
      • Finance
      • Germany
      • Ghana
      • Health
      • Insight
      • International
      • Investing
      • Japan
      • Latest Headlines
      • Life & Living
      • Markets
      • Mobile
      • Movies
      • New Zealand
      • Nigeria
      • Politics
      • Scholarships
      • Science
      • South Africa
      • South America
      • Sports
      • Tech
      • Travel
      • UK
      • USA
      • Weather
      • World
      No Result
      View All Result

      Recent News

      Boxing legend Mike Tyson talks going to juvie and trading cigarettes for cookies as a young boy

      October 7, 2026

      Hogbetsotso 2026 to promote tourism, local businesses

      October 7, 2026

      Mikel Arteta’s new contract: The challenges facing Arsenal boss as he enters ‘step five’ of his project | Football News

      October 7, 2026

      Spotify expands audiobooks to over 180 markets

      October 7, 2026
      • Home
      • Advertise With Us
      • About Us
      • Corporate
      • Consumer Rewards
      • Forum
      • Privacy Policy
      • Social Trends

      Theinsightpost ©2026 | All Rights Reserved. Theinsightpost is an Elnegy LLC company, registered in Texas, USA

      Welcome Back!

      Login to your account below

      Forgotten Password?

      Retrieve your password

      Please enter your username or email address to reset your password.

      Log In

      Add New Playlist

      We are using cookies to give you the best experience on our website.

      You can find out more about which cookies we are using or switch them off in .

      No Result
      View All Result
      • Home
      • Insight
      • Blog
      • Business
      • Entertainment
      • Health
      • Politics
      • Shop
        • Gift Shop
        • Value Shop
        • Store
        • Bargain Shop
        • Discount
      • Sports
      • Tech
      • Travel
      • USA
      • Video
      • World
        • Asia
        • Africa
        • South America
        • North America
        • Europe
        • Oceania

      Theinsightpost ©2026 | All Rights Reserved. Theinsightpost is an Elnegy LLC company, registered in Texas, USA

      The Insight Post
      Powered by  GDPR Cookie Compliance
      Privacy Overview

      This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

      Strictly Necessary Cookies

      Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.

      Cookie Policy

      More information about our Cookie Policy

      Clear examples do more than decorate an explanation: they show how an idea behaves under recognizable conditions. In education and software documentation alike, strong illustrations begin with a defined goal, then reveal the steps, assumptions, and result without unnecessary detail. A practical test example should state the input, expected output, and boundary condition, because these elements show whether a rule works beyond the simplest case. Including a contrasting case also helps readers distinguish a valid application from a tempting but incorrect one, while concise notes explain why the outcomes differ. When examples are updated with current data and checked against the underlying rule, they remain useful across classrooms, product guides, and professional training.