JFrog CLIでフィ,チャ,ブランチを用いたリポジトリ管理を自動化する

フィーチャーブランチ・ワークフローは特定の機能に対して行った作業を専用のブランチに分離するために使用されます。これにより,完成前のすべての開発をチ,ムの共通コ,ドベ,スとは別のところで管理することが出来ます。基本的にはマ,ジの準備が整うまでマスタ,をリスクに晒さず安全に保てます。

チャレンジ
開発者はコードそのものと並行して,フィーチャーブランチから生成したアーティファクトや依存関係を管理しなくてはなりません。しかし,実際に新しいフィーチャーブランチを作成するたび,手動でリポジトリを作成する必要があるのでしょうか吗?どのようにすれば,より簡単な方法で管理し,作成と削除の全プロセスを自動化出来るでしょうか?
このブログ記事では,フィーチャーブランチ・ワークフローにJFrog Artifactoryの専用アーティファクトリポジトリとJFrog CLIを使用して,すべてを簡単に自動化する方法を見ていきます。
JFrog CLIはコンパクトでスマートなクライアントで,JFrog製品へのアクセスを自動化するシンプルなインターフェイスを提供しています。自動化スクリプトを簡素化して,メンテナンスを容易にします。ここでは具体的な方法として,JFrog CLIを使用したArtifactoryリポジトリ自動化の管理について見ていきましょう。
注:REST APIとArtifactoryユザプラグンを使用して実現することも出来ます。
解決策
JFrog CLIはArtifactoryリポジトリを管理するためのコマンド一式を提供します。例えばリポジトリの作成,更新,削除などです。
次の例ではciプロセスの一環として,GitHub Actionsを使って3 .のArtifactoryリポジトリ(ロカル,リモト,バチャル)を作成しています。これはJFrog管道,詹金斯,BitBucket都などのオーケストレーションツールを使って行うことも可能です。
ArtifactoryとGitHub Actionsのンテグレションにいてより詳しく見る>
この例では,マスタ,以外へのプルリクエストに対しトリガ,されるciプロセスを作成します。これにはソフトウェアをビルドしてArtifactoryにデプロイする前に,Artifactoryリポジトリを自動的に作成するための追加ステップが含まれます。

CIプロセスは”构建和部署(ビルドとデプロイ)“より前に次の2つのステップを実行するように構成されています。
- 「特性分支存储库创建フィ,チャ,ブランチ用に新しいArtifactoryリポジトリを作成します。
- 「特性分支库更新“Artifactoryリポジトリが既に作成されている場合,“功能分支存储库创建“ステップは失敗し,このステップでは既存のリポジトリを指定するように更新します。
注:リポジトリの命名規則は重要です。後に削除の仕組みで使われます。

コ,ドの概要
何らかのブランチ= x,
|
コ,ドサンプル
——如果:总是()名称:功能分支存储库更新env: SERVER_ID: tal-eplus-saas运行:|回声“::set-env name =库::$ (echo $ {GITHUB_REF # refs /头/}| sed的s / \ / / _ / g)“jfrog rt mvnc——server-id-resolve = $ SERVER_ID——server-id-deploy = $ SERVER_ID repo-resolve-releases = auto-cli-virtual -库——repo-resolve-snapshots = auto-cli-virtual -库美元——repo-deploy-releases = auto-cli-virtual -库——repo-deploy-snapshots = auto-cli-virtual -库美元——如果:总是()名称:运行:jfrog rt mvn clean install -f maths/pom.xml
メリット
フィ,チャ,ブランチ専用のArtifactoryリポジトリを使うメリットは次のとおりです。
- 開発用ブランチで使用しているバereplicationナリ(ア,ティファクトとサ,ドパ,ティ,の依存関係)の分離を明確にします。
- 専用の分離されたフィ,チャ,ブランチのリポジトリを使用して,“外部からのノ▪▪ズ”なしにアプリケ▪▪ションをデプロ▪▪します。
- フィ,チャ,ごとの簡単な"クリ,ンアップ"が実現されます。フィーチャーの開発が完了しブランチが大师にマージされると,開発に使用された無関係な依存関係やフィーチャーブランチのリポジトリにデプロイされた異なるバージョンの依存関係はすべて削除され,一箇所で簡単に追跡することが出来ます。
- セキュリティスキャンをします。専用のリポジトリやビルドに対してJFrog x射线手表を使うことで実現できます。
クリ,ンアップ
多くの機能を開発してもこのソリューションのスケーラビリティを保ち続けるためには,使用されなくなった古いリポジトリを削除するクリーンアップ・メカニズムを定義する必要があります。
次に扱う,今回の例の最後のステップでは”NUMBER_OF_DAYS_TO_KEEPパラメ,タ,を使って古いリポジトリを削除します。これは3つのリポジトリタイプ(ローカル,リモート,バーチャル)と空のリポジトリをすべて削除します。例えば”Number_of_days_to_keep = 90と設定すると,90日前に作成されたすべてのリポジトリが削除されます。
Artifactory REST APIおよびJFrog CLIの次の機能を使用します。
- ' auto-cli-local 'プレフィックスを持全てのリポジトリを取得する:GET/ api /存储库
- リポジトリ内で最後に変更されたファ化学键ルを見化学键けるため,Jfrog rt搜索を用いて検索する
青蛙でリポジトリを削除します。
コ,ドサンプル
—if: always() name: Feature Branch Repository Deletion env: NUMBER_OF_DAYS_TO_KEEP: 90 run: | #提取CI进程自动创建的所有LOCAL Repository jfrog rt curl - xget /api/repositories | jq '[.][] | .key | select(test("auto-cli-local"))]' > delete /auto_created_repositories. key | select(test("auto-cli-local"))]'Json && cat删除/auto_created_repositories。jq -n '现在- 3600 * 24 * '$NUMBER_OF_DAYS_TO_KEEP' | gmtime | todate' > delete /months_indicator && cat delete /months_indicator #遍历所有存储库,删除那些最近修改过的文件jq -c '。删除/ auto_created_repositories[]”。读取i时,Json |;重复存储库= $i sh -c "jfrog rt s——spec删除/repositories-spec。#如果存储库是空的/最新修改的文件是旧的> NUMBER_OF_DAYS_TO_KEEP days =>删除存储库If [[$(cat DELETE /search_results) == "[]"];然后echo "Deleting repository: $i, repository is empty" sh -c "jfrog rt rdel $i——quiet && jfrog rt rdel ${i//local/virtual}——quiet && jfrog rt rdel ${i//local/jcenter}——quiet" elif [[$(cat deletion/search_results | jq——arg month_indicator $(cat deletion/months_indicator)”。[] | .modified |。<= $month_indicator') = "true"]];sh -c "jfrog rt rdel $i——quiet && jfrog rt rdel ${i//local/virtual}——quiet && jfrog rt rdel ${i//local/jcenter}——quiet"否则回显"跳过存储库删除-存储库仍然相关" fi done
以上でGitHub Actionsのパaapl . exeプラaapl . exeンが完了です。

このパ▪▪プラ▪▪ンのコ▪ド全体はこ▪▪らで参照できます。