Python パッケージの継続的インテグレーションと継続的デプロイ (CI/CD)#

ソフトウェアを開発し、取り組み、貢献するときは、コードを書くこと以外にも考慮すべきことがあります。テストとチェックを行うことで、コードが確実に実行され、一貫した形式に従っていることを確認することも重要です。 継続的インテグレーション (CI) と 継続的デプロイ (CD) を使用すると、GitHub や GitLab などのプラットフォームで誰かがオンラインで変更を提案するたびに、コードのテストとチェックを実行できます。

  • 継続的インテグレーション (CI): コードが更新されるたびに、テスト、コード チェック、その他のワークフローを実行するプロセスを自動化します。

  • 継続的デプロイメント (CD): PyPI へのパッケージの公開、ドキュメントの公開などを自動化できるようにすることで、CI を拡張します。

CI と CD は、反復的なタスクを自動化し、コードの品質と一貫性を確保することにより、ソフトウェア開発を合理化します。 CI をセットアップすると、すべてのテスト スイートやその他のローカル チェックをセットアップしなくても、新しいコントリビューターがコード ベースに簡単にコントリビュートできるようになります。

継続的インテグレーションとは何ですか?#

コードをオンラインで公開する準備ができたら、継続的インテグレーション (CI) をセットアップできます。 CI は、定義したジョブやワークフローを指定して実行できるプラットフォームです。これらのワークフローには次のものが含まれます。

  • テストスイートを実行する

  • コードチェッカー/リンター/スペルチェックの実行

  • ドキュメントを作成する

CI を使用すると、次のような一連の環境全体で実行中のワークフローを自動化できます。

  • 異なる Python バージョンが含まれる環境と、

  • さまざまなオペレーティング システム (Mac、Linux、Windows)。

継続的展開 (CD) とは何ですか?#

継続的デプロイメント (CD) は、実稼働環境またはステージング環境へのコード変更のデプロイメントを自動化することで、CI プロセスを拡張します。オープンソース ツールの場合、CD は次の目的で使用できます。

  • PyPI へのパブリッシュを自動化する

  • GitHub Pages へのドキュメントの公開を自動化するか、ドキュメントを読んでください。

これは、conda-forge レシピが設定された後、conda-forge 上でパッケージを最新の状態に保つためにも使用されます。

CI を使用する理由#

GitHub にプッシュされたすべてのコミットと開かれたすべてのプル リクエストでワークフローを実行するように CI を構成できます。これにより、コードのメイン ブランチにマージする前に、パッケージに加えられた変更が環境全体でテストされるようになります。

これらのチェックは、新しい人がコードに貢献している場合に特に役立ちます。すべての投稿者の変更は、コード リポジトリにプッシュされるときにテストされます。

CI と CD を併用すると、コードの構築、テスト、デプロイのプロセスが合理化されます。ソフトウェア開発と公開の効率、品質、信頼性を向上させることを目指しています。

注釈

すべての pyOpenSci パッケージは、何らかの形式の継続的統合を使用する必要があります。ピアレビューを受ける予定がない場合でも、継続的インテグレーションを使用することを強くお勧めします。

GitHub アクション (ここではこれに焦点を当てます) の場合、CI ワークフローは GitHub をサポートするオンライン サーバー上で実行されます。

CI/CD プラットフォーム#

CI/CD に利用できるプラットフォームは多数あります。ここでは、GitHub に組み込まれている GitHub Actions (GHA) に焦点を当てます。 GitHub は、科学的なオープンソース ソフトウェアを保存するために最も一般的に使用されているプラットフォームです。

注釈

GitLab CI/CD を使用する場合、ここで説明されている原則の多くが適用されます。ただし、ワークフロー ファイルは異なる場合があります。

よくわからない場合は、GitHub Actions を使用してください#

お好みの継続的統合プラットフォームを使用することは歓迎ですが、無料で使用でき、GitHub ユーザー インターフェイスに緊密に統合されている GitHub Actions をお勧めします。また、簡単に使用して独自のニーズに適応できる GitHub アクション テンプレートのストア全体もあります。

遭遇する可能性のあるその他のプラットフォーム

  • Appveyor:: Windows オペレーティング システムでのテストの実行をサポートしており、GitHub Actions のリリースより前から提供されていました。現在、AppVeyor は Windows 以外のオペレーティング システムもサポートしています。

  • Travis CI: は、私たちのエコシステムでは一般的な CI プラットフォームの選択肢でした。 Travis CI がオープンソース プロジェクトの無料サポートを終了した後、使用量は減少しました。

  • CircleCI: CircleCI は PR 変更のプレビューを提供するため、Web サイトやドキュメントの自動構築に役立ちます。

自動化を採用する#

CI/CD を採用することで、ユーザー環境の多様な環境にわたってコードが期待どおりに実行されることを保証できます。さらに、リンティングやコード スタイルなどの特定のチェック (場合によってはコード修正) を自動化できます。ドキュメントや docstring のスペルチェックを自動化することもできます。