OSSプロジェクトの統合テスト-認証でサードパーティを処理する方法?
私の(オープンソースの)趣味プロジェクトの1つは、GitHub、Bitbucketなどからリポジトリのオフラインバックアップを作成するバックアップツールです。 ホスティング事業者のAPIを呼び出してリポジトリのリストを取得し、Git / Mercurial /何でもクローン/リポジトリをローカルコンピュータにプルします。 したがって、認証を使用してGitHub APIを呼び出す統合テストがあります。 (そして、クローン/プル機能が終了すると、おそらくGitHubからリポジトリをクローンするテストがあり、認証も必要になります) 特にこれらの統合テストで使用するユーザーと組織を作成しました。 問題:オープンソースであり、コードがGitHubで公開されているため、ソースコードのどこかにパスワードをハードコードすることはできません。 私が今やっていること テストでは、環境変数からすべてのユーザー名、パスワード、リポジトリ名を取得しています。 次に例を示します。 config.Name = TestHelper.EnvVar("GithubApiTests_Name"); config.Password = TestHelper.EnvVar("GithubApiTests_PW"); (TestHelper.EnvVar環境変数の値を取得し、存在しない場合は例外をスローするヘルパーメソッドです) 次に、これらの環境変数を設定するバッチファイルがあります。 実際のenvironment-variables.batスクリプト()は、ビルドスクリプトでテストを実行する前に呼び出されますが、ソース管理では無視されるため、実際にはリポジトリにありません。 何でソースコントロールであるでenvironment-variables.bat.sampleはなく、偽のパスワードで、同じ環境変数を設定し、: rem copy/rename this file to environment-variables.bat echo Setting environment variables for integration tests... set GithubApiTests_Name=scm-backup-testuser set GithubApiTests_OrgName=scm-backup-testorg set GithubApiTests_PW=not-the-real-password set GithubApiTests_Repo=scm-backup リポジトリを自分のマシンに複製し、このファイルの名前をに変更しenvironment-variables.bat、偽のパスワードを実際のパスワードに置き換えると、すべての統合テストが機能します。 これは継続的インテグレーションでも機能します。私はAppVeyorを使用しており、Web UIでこれらの環境変数を設定できます。 それについて私が嫌いなこと 私はそれがOSSプロジェクトにとって、特にこのプロジェクトにとっては良い解決策ではないと思います: 理論的には、私のプロジェクトの貢献者は、次の方法で統合テストをすぐに実行できます。 …