Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CI/CD·自動化入門

Kuroruri
September 10, 2022

 CI/CD·自動化入門

iOSDC2022

Kuroruri

September 10, 2022
Tweet

More Decks by Kuroruri

Other Decks in Programming

Transcript

  1. - 名前 - くろるり - 所属 - teamLab Inc. -

    仕事 - iOSアプリ作る - アプリ開発効率化有志チーム - 業務改善有志チーム 本日話している人
  2. The quality that makes you go to great effort to

    reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and then document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer. Also Hence, this book. See also impatience and hubris. [1] 「怠惰」の定義 [1] Brian d Foy, Tom Christiansen, Jon Orwant, Larry Wall (2012) : Programming Perl: Unmatched power for text processing and scripting (English Edition) 第4版, O'Reilly Media, p.1746 画像出典 : https://www.oreilly.com/library/view/programming-perl-4th/9781449321451/ , 2022/08/03
  3. GitHubによるCIの説明 Continuous integration (CI) is a software practice that requires

    frequently committing code to a shared repository. Committing code more often detects errors sooner and reduces the amount of code a developer needs to debug when finding the source of an error. Frequent code updates also make it easier to merge changes from different members of a software development team. This is great for developers, who can spend more time writing code and less time debugging errors or resolving merge conflicts. [1] [1] GitHub Docs : https://docs.github.com/en/actions/automating-builds-and-tests/about-continuous-integration, 2022/08/03
  4. GitHubによるCDの説明 Continuous deployment (CD) is the practice of using automation

    to publish and deploy software updates. As part of the typical CD process, the code is automatically built and tested before deployment. [1] [1] GitHub Docs : https://docs.github.com/en/actions/deployment/about-deployments/about-continuous-deployment, 2022/08/03
  5. デプロイが自動になってない世界の仕事 最新版の需要 ビルド作業と配信 お知らせ QA 次のリリースに向けテ ストしたいので 最新のアプリ出して 開発者 わかった

    ビルドするから 1時間くらい待って 開発者 git switch Xcodeでビルド 開発者 ビルド待ち・・・ 終わるまでXcode 触れん 開発者 出来ました このverをDLしてね QA わかった バグあったら チケット上げるね 開発者 ・・・終わった! testflightで配信
  6. Merge PullRequestまでの流れ Create PR コンフリクト有無 マージ後のビルド 変更行数 コードフォーマット 実際の動作 設計

    PullRequestフォーマット Merge可能かのチェック コードレビュー Approve & Merge PR レビューコメント 返信 / コード修正
  7. 担当範囲 - fastlane : xcodebuild コマンドの代替 - fastlane build_app :

    アプリのビルド - fastlane run_tests : Unit Test / UI Test の実行 - ( コードフォーマットのチェック ) - Danger : Pull Request全体のチェック + コメント - ビルド時 Warning のコメント with danger-xcode_summary - テストカバレッジのチェック / コメント with danger-xcov - 変更行数のチェック - PullRequest自体のフォーマットチェック
  8. Merge PullRequestまでの流れ ( 一部自動化後 ) Create PR コンフリクト有無 マージ後のビルド 変更行数

    コードフォーマット 実際の動作 設計 PullRequestフォーマット Merge可能かのチェック コードレビュー Approve & Merge PR レビューコメント 返信 / コード修正
  9. おさらい : デプロイが自動になってない世界の仕事 最新版の需要 ビルド作業と配信 お知らせ QA 次のリリースに向けテ ストしたいので 最新のアプリ出して

    開発者 わかった ビルドするから 1時間くらい待って 開発者 `git switch hoge` Xcodeでビルド 開発者 ビルド待ち・・・ 終わるまでXcode 触れん 開発者 出来ました このverをDLしてね QA わかった バグあったら チケット上げるね 開発者 ・・・終わった! testflightで配信
  10. おさらい : デプロイが自動になってない世界の仕事 最新版の需要 ビルド作業と配信 お知らせ QA 次のリリースに向けテ ストしたいので 最新のアプリ出して

    開発者 わかった ビルドするから 1時間くらい待って 開発者 `git switch hoge` Xcodeでビルド 開発者 ビルド待ち・・・ 終わるまでXcode 触れん 開発者 出来ました このverをDLしてね QA わかった バグあったら チケット上げるね 開発者 ・・・終わった! testflightで配信 最新であればよいので 特定ブランチが更新された時に ビルドすれば良い
  11. デプロイの自動化後 最新版の需要 ビルド作業と配信 お知らせ GitHub 特定ブランチに 最新コミット確認 webhook発火 CI/CD webhook来た

    処理開始 CI/CD `git checkout hoge` `fastlane build_app` CI/CD 計算機処理中 CI/CD `fastlane slack` 最新版アプリは… slackに通知来てるね QA CI/CD `fastlane upload_to_testflight`