<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Github</title>
	<atom:link href="https://techgrowup.net/tag/github/feed/" rel="self" type="application/rss+xml" />
	<link>https://techgrowup.net</link>
	<description>エンジニアを強くする</description>
	<lastBuildDate>Fri, 01 Nov 2024 00:46:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://techgrowup.net/wp-content/uploads/2021/05/hp-icon-150x150.png</url>
	<title>Github</title>
	<link>https://techgrowup.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Flutter開発入門67 Flutterアプリを自動デプロイする方法【CI/CD】</title>
		<link>https://techgrowup.net/flutter-ci-cd/</link>
					<comments>https://techgrowup.net/flutter-ci-cd/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[techgrowup]]></dc:creator>
		<pubDate>Fri, 01 Nov 2024 00:46:54 +0000</pubDate>
				<category><![CDATA[Flutter]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Action]]></category>
		<category><![CDATA[Bitrise]]></category>
		<category><![CDATA[CICD]]></category>
		<category><![CDATA[Dart]]></category>
		<category><![CDATA[Github]]></category>
		<category><![CDATA[アプリ開発]]></category>
		<guid isPermaLink="false">https://techgrowup.net/?p=2033</guid>

					<description><![CDATA[はじめに Flutterアプリを開発していると、頻繁な更新や新機能の追加に伴って、アプリのビルドやデプロイが手間に感じることがあるでしょう。そんなときに役立つのが**CI/CD（継続的インテグレーションと継続的デプロイ） [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">はじめに</h1>



<p class="wp-block-paragraph">Flutterアプリを開発していると、頻繁な更新や新機能の追加に伴って、アプリのビルドやデプロイが手間に感じることがあるでしょう。そんなときに役立つのが**CI/CD（継続的インテグレーションと継続的デプロイ）**です。FlutterアプリにCI/CDを導入することで、ビルド・テスト・デプロイのプロセスを自動化し、迅速かつ効率的なリリースを実現できます。</p>



<p class="wp-block-paragraph">この記事では、FlutterアプリにCI/CDを導入するメリットや、具体的な実装方法について解説します。特に、<strong>GitHub Actions</strong>や<strong>Bitrise</strong>などのツールを使用した設定方法を取り上げ、簡単に自動デプロイを構築できるようにガイドします。</p>



<h2 class="wp-block-heading">CI/CDとは</h2>



<h3 class="wp-block-heading">継続的インテグレーション（CI：Continuous Integration）</h3>



<p class="wp-block-paragraph">開発者がコードをリポジトリにプッシュするたびに、自動でビルドとテストが行われる仕組みです。これにより、コードの変更が他の部分に与える影響を早期に検出できます。</p>



<h3 class="wp-block-heading">継続的デプロイ（CD：Continuous Deployment）</h3>



<p class="wp-block-paragraph">ビルドやテストが成功した後、自動的にアプリがリリース環境にデプロイされます。これにより、手動でのデプロイ作業が不要になり、リリースの頻度を高めることができます。</p>



<h2 class="wp-block-heading">なぜFlutterアプリにCI/CDが必要なのか</h2>



<ol class="wp-block-list">
<li><strong>効率的な開発フロー</strong>：自動化により、時間を節約し、手動ミスを減らします。</li>



<li><strong>安定した品質</strong>：毎回ビルドとテストが行われるため、アプリの品質が維持されます。</li>



<li><strong>迅速なリリース</strong>：新機能やバグ修正をすぐにユーザーに届けられます。</li>
</ol>



<h2 class="wp-block-heading">FlutterでのCI/CDの設定</h2>



<p class="wp-block-paragraph">FlutterアプリのCI/CDは、以下の手順で設定できます。今回は、GitHub Actionsを使った例を紹介しますが、他のツール（Bitrise、GitLab CI/CDなど）でも同様の考え方で設定できます。</p>



<h3 class="wp-block-heading">Flutterプロジェクトの準備</h3>



<p class="wp-block-paragraph">まず、Flutterプロジェクトが最新の状態であることを確認しましょう。必要な依存パッケージが<code>pubspec.yaml</code>に正しく記述されていることを確認します。</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="dependencies:
  flutter:
    sdk: flutter
  # 他の依存パッケージ..." style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">dependencies</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">flutter</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">sdk</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">flutter</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #6A9955"># 他の依存パッケージ...</span></span></code></pre></div>



<h3 class="wp-block-heading">GitHub Actionsの設定</h3>



<p class="wp-block-paragraph">GitHubリポジトリを使用している場合、GitHub Actionsを使ってCI/CDを簡単に設定できます。</p>



<h6 class="wp-block-heading">ワークフローファイルを作成する</h6>



<ol class="wp-block-list">
<li>リポジトリのルートに<code>.github/workflows/flutter-ci.yml</code>ファイルを作成します。</li>



<li>次のコードをワークフローファイルに追加します。</li>
</ol>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="name: Flutter CI/CD

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup Flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.10.5'

      - name: Install dependencies
        run: flutter pub get

      - name: Run tests
        run: flutter test

      - name: Build APK
        run: flutter build apk --release

      - name: Upload build artifacts
        uses: actions/upload-artifact@v3
        with:
          name: release-apk
          path: build/app/outputs/flutter-apk/app-release.apk" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">name</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">Flutter CI/CD</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">on</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">push</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">branches</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">      - </span><span style="color: #CE9178">main</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">pull_request</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">branches</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">      - </span><span style="color: #CE9178">main</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">jobs</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #569CD6">build</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">runs-on</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">ubuntu-latest</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">steps</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">      - </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">Checkout code</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">uses</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">actions/checkout@v3</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">      - </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">Setup Flutter</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">uses</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">subosito/flutter-action@v2</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">with</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #569CD6">flutter-version</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">&#39;3.10.5&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">      - </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">Install dependencies</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">run</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">flutter pub get</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">      - </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">Run tests</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">run</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">flutter test</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">      - </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">Build APK</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">run</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">flutter build apk --release</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">      - </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">Upload build artifacts</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">uses</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">actions/upload-artifact@v3</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">with</span><span style="color: #D4D4D4">:</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #569CD6">name</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">release-apk</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #569CD6">path</span><span style="color: #D4D4D4">: </span><span style="color: #CE9178">build/app/outputs/flutter-apk/app-release.apk</span></span></code></pre></div>



<h3 class="wp-block-heading">各ステップの説明</h3>



<ul class="wp-block-list">
<li><strong>Checkout code</strong>：GitHubリポジトリからコードを取得します。</li>



<li><strong>Setup Flutter</strong>：指定したバージョンのFlutter SDKをインストールします。</li>



<li><strong>Install dependencies</strong>：<code>flutter pub get</code>を実行して、依存パッケージをインストールします。</li>



<li><strong>Run tests</strong>：<code>flutter test</code>を実行して、プロジェクトのテストをすべて実行します。</li>



<li><strong>Build APK</strong>：リリース用のAPKをビルドします。iOSの場合は<code>flutter build ios</code>を使用します。</li>



<li><strong>Upload build artifacts</strong>：ビルドしたAPKファイルをアップロードして、後でダウンロードできるようにします。</li>
</ul>



<h2 class="wp-block-heading">Bitriseを使ったCI/CDの設定</h2>



<h3 class="wp-block-heading">1. Bitriseアカウントの作成とプロジェクトの追加</h3>



<ol class="wp-block-list">
<li><a rel="noopener" target="_blank" href="https://www.bitrise.io/">Bitrise<span class="fa fa-external-link external-icon anchor-icon"></span></a>にアクセスして、アカウントを作成します。</li>



<li>FlutterプロジェクトをBitriseに接続し、CI/CDパイプラインを作成します。</li>
</ol>



<h3 class="wp-block-heading">2. ワークフローの設定</h3>



<p class="wp-block-paragraph">Bitriseでは、Flutter用のワークフローを事前に設定できます。以下は、Bitriseでの基本的なワークフローの例です。</p>



<ul class="wp-block-list">
<li><strong>Git Clone</strong>：リポジトリからコードを取得します。</li>



<li><strong>Flutter Install</strong>：Flutter SDKをインストールします。</li>



<li><strong>Flutter Test</strong>：テストを実行します。</li>



<li><strong>Flutter Build</strong>：アプリをビルドします。</li>



<li><strong>Deploy to Firebase App Distribution</strong>：ビルドしたアプリをFirebaseにデプロイします。</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Tip</strong>: BitriseのGUIを使えば、ワークフローの設定が簡単に行えます。ビルドステップをドラッグ＆ドロップするだけで、CI/CDパイプラインを構築できます。</p>
</blockquote>



<h2 class="wp-block-heading">CI/CD導入のベストプラクティス</h2>



<ol class="wp-block-list">
<li><strong>早期のテスト実行</strong>：コードがリポジトリにプッシュされた時点でテストが実行されるように設定しましょう。これにより、バグを早期に発見できます。</li>



<li><strong>デプロイの自動化</strong>：ビルドとテストが成功した後、自動的にデプロイされるようにしましょう。Firebase App DistributionやApp Store Connectを使うと便利です。</li>



<li><strong>セキュリティ管理</strong>：デプロイに必要なAPIキーやシークレット情報は、環境変数に設定して管理します。公開リポジトリにこれらの情報を含めないように注意してください。</li>
</ol>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">Flutterアプリに<strong>CI/CD</strong>を導入することで、ビルドやデプロイのプロセスが自動化され、開発フローが大幅に効率化されます。この記事で紹介したGitHub ActionsやBitriseを活用することで、スムーズなリリースが可能になります。</p>



<p class="wp-block-paragraph">CI/CDの設定は初めてだと少し複雑に感じるかもしれませんが、設定を一度行ってしまえば、後は自動化されたフローがあなたの開発をサポートしてくれます。ぜひ、今回のガイドを参考にして、あなたのFlutterプロジェクトにCI/CDを導入してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://techgrowup.net/flutter-ci-cd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: techgrowup.net @ 2026-06-23 09:11:41 by W3 Total Cache
-->