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

特性分支存储库管理

フィーチャーブランチ・ワークフローは特定の機能に対して行った作業を専用のブランチに分離するために使用されます。。。

特性分支工作流

チャレンジ

開発者はコードそのものと並行して,フィーチャーブランチから生成したアーティファクトや依存関係を管理しなくてはなりません。しかし,実際に新しいフィーチャーブランチを作成するたび,手動でリポジトリを作成する必要があるのでしょうか吗?中文:中文:中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文,中文?

このブログ記事では,フィーチャーブランチ・ワークフローにJFrog Artifactoryの専用アーティファクトリポジトリとJFrog CLIを使用して,すべてを簡単に自動化する方法を見ていきます。

JFrog CLIはコンパクトでスマートなクライアントで,JFrog製品へのアクセスを自動化するシンプルなインターフェイスを提供しています。中文:中文:。ここでは具体的な方法として,JFrog CLIを使用したArtifactoryリポジトリ自動化の管理について見ていきましょう。

注:REST API人工制品:

解決策

JFrog CLI人工智能。“”“”“”“”“”。

★★★★★★★GitHub Actions3、人工智能(,,)? ? ? ? ?これはJFrog管道,詹金斯,BitBucket都などのオーケストレーションツールを使って行うことも可能です。

Artifactory > GitHub Actions > >

。これにはソフトウェアをビルドしてArtifactoryにデプロイする前に,Artifactoryリポジトリを自動的に作成するための追加ステップが含まれます。

特性分支示例

CIプロセスは”构建和部署(ビルドとデプロイ)“より前に次の2つのステップを実行するように構成されています。

  1. 特性分支存储库创建“”。
  2. 特性分支存储库更新“Artifactoryリポジトリが既に作成されている場合,“功能分支存储库创建“ステップは失敗し,このステップでは既存のリポジトリを指定するように更新します。

注:这就是我的意思。。

特性分支创建和更新

コードの概要

★★★★★★★★

  1. 如果X = ' master ',哇,哇,哇
  2. 如果X != ' master ', 3
    • ローカルリポジトリ“auto-cli-local-X”:
    • リモートリポジトリ“auto-cli-jcenter-X”https://jcenter.bintray.com? ?
    • バーチャルリポジトリ“auto-cli-virtual-X”“auto-cli-local-X”“auto-cli-jcenter-X”? ? ?中文:。
  3. サードパーティーの依存関係を取得し生成されたフィーチャーブランチのアーティファクトをプッシュするため,ビルドが現在用いているリポジトリ“auto-cli-virtual-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

        

汪汪汪汪


        

  • 開発用ブランチで使用しているバイナリ()★★★★★
  • 専用の分離されたフィーチャーブランチのリポジトリを使用して,
  • “”? ? ? ? ? ?フィーチャーの開発が完了しブランチが大师にマージされると,開発に使用された無関係な依存関係やフィーチャーブランチのリポジトリにデプロイされた異なるバージョンの依存関係はすべて削除され,一箇所で簡単に追跡することが出来ます。
  • セキュリティスキャンをします。専用のリポジトリやビルドに対してJFrog x射线手表

クリーンアップ

多くの機能を開発してもこのソリューションのスケーラビリティを保ち続けるためには,使用されなくなった古いリポジトリを削除するクリーンアップ・メカニズムを定義する必要があります。
“,”,“,”,“,”NUMBER_OF_DAYS_TO_KEEP“パラメーターを使って古いリポジトリを削除します。これは3つのリポジトリタイプ(ローカル,リモート,バーチャル)と空のリポジトリをすべて削除します。”Number_of_days_to_keep = 90“。
人工REST API JFrog CLI

  • “auto-cli-local”:GET/ api /存储库
  • リポジトリ内で最後に変更されたファイルを見つけるため,Jfrog rt搜索を用いて検索する

Jfrog rt - del

コードサンプル

- if: always() name: Feature Branch Repository delete env: NUMBER_OF_DAYS_TO_KEEP: 90 run: | #提取CI进程自动创建的所有本地存储库jfrog rt curl - xget /api/repositories | jq '[.][] | .key | select(test("auto-cli-local"))]' > delete /auto_created_repositories。Json && cat delete /auto_created_repositories。jq -n 'now - 3600 * 24 * '$NUMBER_OF_DAYS_TO_KEEP' | gmtime | todate' > delete /months_indicator && cat delete /months_indicator #遍历所有存储库,删除那些最新修改的文件jq -c '。删除/ auto_created_repositories[]”。Json | while read i;do echo迭代库= $i sh -c "jfrog rt s——spec删除/ repository -spec。json——spec_vars ='key1="$i"' > DELETE /search_results && cat DELETE /search_results" #如果存储库为空/最近修改的文件较旧> NUMBER_OF_DAYS_TO_KEEP days =>如果[[$(cat DELETE /search_results) == "[]"];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))”。[] [au:]<= $month_indicator') = "true"];sh -c "jfrog rt rdel $i——quiet && jfrog rt rdel ${i//local/virtual}——quiet && jfrog rt rdel ${i//local/jcenter}——quiet"否则echo "跳过删除存储库-存储库仍然相关" fi完成

GitHub Actions。

完成GitHub Actions管道

https://github.com/jfrog/project-examples/tree/master/github-action-examples/repo-management-github-actions-example