CIシステムへのCodeQL CLIのインストール

サードパーティの継続的インテグレーションシステムにCodeQL CLIをインストールし、CodeQL code scanningを実行するために使用できます。

Code scanningは、Organizationが所有するリポジトリでGitHub Advanced Securityが有効化されていれば利用できます。 詳しい情報については、「GitHub Advanced Security について」を参照してください。

ノート: この機能を使用するには、サイト管理者がGitHub Enterprise Serverのインスタンスのcode scanningを有効にする必要があります。 詳しい情報については「アプライアンスのためのcode scanningの設定」を参照してください。

code scanningのためのCodeQL CLIの利用について

CodeQL CLI を使用して、サードパーティ継続的インテグレーション (CI) システムで処理しているコード上で code scanning を実行できます。 Code scanning は、開発者が GitHub リポジトリ内のコードを分析して、セキュリティの脆弱性とコーディングエラーを見つけることができる機能です。 分析によって特定されたすべての問題はGitHub Enterprise Serverに表示されます。 For information, see "About code scanning with CodeQL."

CodeQL CLIは、コードの分析に利用できるスタンドアローンの製品です。 その主な目的は、コードベースのデータベース表現であるCodeQLデータベースを生成することです。 データベースの準備ができれば、それに対してインタラクティブにクエリを実行したり、SARIFフォーマットで結果セットを生成するためのクエリのスイートを実行して、結果をGitHub Enterprise Serverのインスタンスにアップロードしたりできます。

あるいは、GitHub Actionsを使ってGitHub Enterprise Server内でcode scanningを実行することもできます。 Actionsを使ったcode scanningに関する情報については「リポジトリでのcode scanningのセットアップ」を参照してください。 CIシステムでのオプションの概要については「CIシステムでのCodeQL code scanningについて」を参照してください。

ノート:CodeQL CLIは、Advanced Securityライセンスを持つお客様にご利用いただけます。

CodeQL CLI をダウンロードする

https://github.com/github/codeql-action/releases からCodeQLバンドルをダウンロードしてください。 このバンドルには以下が含まれます。

  • CodeQL CLI製品
  • https://github.com/github/codeql からのクエリとライブラリの互換性のあるバージョン
  • バンドルに含まれるすべてのクエリのプリコンパイル済みバージョン

CodeQLバンドルは互換性を保証し、CodeQL CLIを個別にダウンロードし、CodeQLクエリをチェックアウトするのに比べてはるかに優れたパフォーマンスが得られるので、常にこのバンドルを利用すべきです。 特定の1つのプラットフォームでのみCLIを実行するなら、適切なcodeql-bundle-PLATFORM.tar.gzファイルをダウンロードしてください。 あるいは、サポートされているすべてのプラットフォームのCLIが含まれているcodeql-bundle.tar.gzをダウンロードできます。

CIシステムでのCodeQL CLIのセットアップ

CodeQL code scanning分析を実行したいすべてのCIサーバーで、CodeQL CLIバンドルの完全な内容が利用できるようにしなければなりません。 たとえば、内部的な中央の場所からバンドルをコピーして展開するよう、各サーバーを設定することになるでしょう。 あるいはREST APIを使ってバンドルをGitHubから直接取得し、クエリに対する最新の改善を活用できるようにすることもできます。 CodeQL CLIのアップデートは、2-3週ごとにリリースされます。 例:

$ wget https://HOSTNAME/github/codeql-action/releases/latest/download/codeql-bundle-linux64.tar.gz
$ tar -xvzf ../codeql-bundle-linux64.tar.gz

CodeQL CLIバンドルを展開したら、サーバー上でcodeqlの実行可能ファイルを実行できます。

  • /<extraction-root>/codeql/codeqlを実行。ここで<extraction-root>はCodeQL CLIバンドルを展開したフォルダー。
  • /<extraction-root>/codeqlPATHに追加して、codeqlとするだけで実行できるようにする。

CodeQL CLIのセットアップのテスト

CodeQL CLIバンドルを展開したら、CLIがデータベースを作成して分析できるよう正しくセットアップされたことを、以下のコマンドを実行して確認できます。

  • /<extraction-root>/codeqlPATH上にあるならcodeql resolve qlpacks
  • そうでない場合は/<extraction-root>/codeql/codeql resolve qlpacks

成功した出力からの抜粋:

codeql-cpp (/<extraction-root>/codeql/qlpacks/codeql-cpp)
codeql-cpp-examples (/<extraction-root>/codeql/qlpacks/codeql-cpp-examples)
codeql-cpp-upgrades (/<extraction-root>/codeql/qlpacks/codeql-cpp-upgrades)
codeql-csharp (/<extraction-root>/codeql/qlpacks/codeql-csharp)
codeql-csharp-examples (/<extraction-root>/codeql/qlpacks/codeql-csharp-examples)
codeql-csharp-upgrades (/<extraction-root>/codeql/qlpacks/codeql-csharp-upgrades)
codeql-go (/<extraction-root>/codeql/qlpacks/codeql-go)
codeql-go-examples (/<extraction-root>/codeql/qlpacks/codeql-go-examples)
codeql-go-upgrades (/<extraction-root>/codeql/qlpacks/codeql-go-upgrades)
codeql-java (/<extraction-root>/codeql/qlpacks/codeql-java)
codeql-java-examples (/<extraction-root>/codeql/qlpacks/codeql-java-examples)
codeql-java-upgrades (/<extraction-root>/codeql/qlpacks/codeql-java-upgrades)
codeql-javascript (/<extraction-root>/codeql/qlpacks/codeql-javascript)
codeql-javascript-examples (/<extraction-root>/codeql/qlpacks/codeql-javascript-examples)
codeql-javascript-upgrades (/<extraction-root>/codeql/qlpacks/codeql-javascript-upgrades)
codeql-python (/<extraction-root>/codeql/qlpacks/codeql-python)
codeql-python-examples (/<extraction-root>/codeql/qlpacks/codeql-python-examples)
codeql-python-upgrades (/<extraction-root>/codeql/qlpacks/codeql-python-upgrades)
...

出力が期待した言語を含んでいるか、そしてqlpackファイルのディレクトリの場所が正しいかもチェックする必要があります。 github/codeql.をチェックアウトして使っているのでなければ、この場所は展開されたCodeQL CLIバンドル内であるべきで、これは上では<extraction root>で示されています。 CodeQL CLIが期待された言語のqlpackの場所を知ることができないなら、CodeQL CLIのスタンドアローンのコピーではなくCodeQLバンドルをダウンロードしたかを確認してください。

GitHub Enterprise Serverでの認証のためのトークンの生成

それぞれのCIサーバーには、結果をGitHub Enterprise Serverにアップロードするために使うGitHub AppもしくはCodeQL CLIのための個人アクセストークンが必要です。 アクセストークンもしくはsecurity_events書き込み権限を持つGitHub Appを使わなければなりません。 CIサーバーが既にGitHub Enterprise Serverからのリポジトリのチェックアウトのためのこのスコープを持つトークンを使っているなら、CodeQL CLIに同じトークンを使わせることができるかもしれません。 そうでない場合は、security_events書き込み権限を持つ新しいトークンを作成し、これをCIシステムのシークレットストアに追加しなければなりません。 詳細は「GitHub Apps をビルドする」および「個人アクセストークンを作成する」を参照してください。

次のステップ

これでCIシステムでCodeQL分析を実行し、結果を生成し、それらをGitHub Enterprise Serverにアップロードする準備ができました。結果はそこでブランチもしくはPull Requestとマッチさせられ、code scanningアラートとして表示されます。 詳細な情報については「CIシステムでのCodeQL CLIの設定」を参照してください。

このドキュメントは役立ちましたか?

プライバシーポリシー

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?