JFrog CLI、あなたのGitHub Actionsヒーロー

GitHub Actions バージョン 2 のベータ版が終了し、一般利用が可能になった今、自動化された DevOps ワークフローで Artifactory リポジトリを管理するにはどうすればいいのでしょうか?困ったときにバイナリを救うのは誰でしょうか?

恐れることはありません、JFrog はここにいます!新しいアクションが GitHub マーケットプレイスに加わりました。これにより、GitHub Actions のワークフローでJFrog CLI を使用して開発、テスト、リリースを通してビルドを進めることができます。

選択した自動化ツールと Artifactory を統合することは、JFrog CLI を利用することで容易に実現できます。このシンプルなコマンドライン・インターフェースを使えば、ソフトウェアバイナリに対してすべての必要な DevOps パスを実現することができます。

以前のDevOpsは…

GitHub は2018年の GitHub Universe で初めて GitHub Actions を公開しましたが、これは継続的インテグレーション(CI)と継続的デプロイメント(CD)のワークフローを自動化するための驚くべき新しい手法です。いくつかのシンプルなスクリプトを通して、ソースコードのプッシュのようなイベントをトリガーに、GitHub リポジトリに対して任意の操作を実行することができます。GitHub 内からカスタムの自動化プロセスを実行して、あらゆるコードプロジェクトのビルド、テスト、パッケージ、リリース、デプロイを行うことができます。

それ以来、いくつかの重要な変更がありました。バージョン2での最大の変更はバージョン1で使用されていた HCL の代わりに YAML ベースの記述言語を使用するようになったことです。

GitHub Marketplace では linter の実行、AWS Lambda へのデプロイ、Jest の実行などに役立つアクションを提供しています。そして今、Artifactory がそのリストに加わりました。

これらの公開されたアクション(または独自のプライベートアクション)を使用するには、リポジトリの GitHub Actions ワークフロー内で定義します。それでは新しい Setup JFrog CLI Action を使って、その方法を見てみましょう。

JFrog CLI の利用

Setup JFrog CLI アクションを使用すると、ワークフローの run ブロックで Artifactory 用の任意の JFrog CLI コマンドを発行することができます。例えば以下のようになります。

- uses: jfrog/setup-jfrog-cli@v1
- run: jfrog --version

アクションはオプションのビルド名ビルド番号と、それらを受け入れる JFrog CLI コマンドへの引数を自動的に管理することで、さらに楽になります。ビルドに関連するすべての操作は、ワークフロー名をビルド名として、コミットハッシュ値をビルド番号として自動的に記録されます。

例えばダウンロード、アップロードおよびビルド情報の CLI コマンドにはビルド名とビルド番号が自動的に追加されるので、指定する必要はありません。

run: |
    jfrog rt dl artifacts/
    jfrog rt u aether artifacts/
    jfrog rt bp

これらの識別子が必要な場合は、環境変数 JFROG_CLI_BUILD_NAME と JFROG_CLI_BUILD_NUMBER が利用できます。

Artifactory サーバーへの接続

Artifactory を使用するためには、アクションには Artifactory サーバーへのアクセスを許可するためのトークンが必要です。トークンは GitHub の暗号化された secret の中に保存し、GitHub Actions のワークフロー・スクリプト内で公開することなく、アクションが実行中に安全にトークンを取得できるようにしておきましょう。

トークンを取得するには、ローカルマシンにJFrog CLI がインストールされている必要があります。自分のユーザー認証情報を使って Artifactory にログインしている場合は、JFrog CLI コマンドを使ってトークンを取得することができます。

$ jfrog rt c export

トークンをコピーして GitHub に暗号化された secret を作成し、トークンを格納することができます。例えば artifactory_token_1 という名前の secret として保存します。

アクションではトークンは JF_ARTIFACTORY_ から始まる環境変数として公開されることを想定しています。この環境変数は secrets コンテキストを通して利用することができます。

- uses: jfrog/setup-jfrog-cli@v1
  env:
    JF_ARTIFACTORY_1: ${{ secrets.artifactory_token_1 }}
- run: |
    # Ping the server
    jfrog rt ping

Artifactory が今日を救います

複数の Artifactory サーバーでの作業方法など、Setup JFrog CLI Action の詳細については Setup JFrog CLI Action GitHub Repo の README ファイルを参照してください。

このアクションは GitHub Action ワークフローで Artifactory に対する操作を自動化する場合、便利で使いやすいものになっています。しかし、もし改善点があればぜひプルリクエスト経由でお知らせください。