クラウドネイティブ時代において、CLI ツールは開発者の日常業務に欠かせないものとなっています。ただし、開発された CLI ツールを誰でも使用できるように共有する場合、手動リリースのみに頼っていると、特にマルチアーキテクチャおよびマルチプラットフォームの互換性を扱う場合には、非効率的であるだけでなく、エラーが発生しやすくなります。 では、CLI ツールのリリースを自動化するにはどうすればよいでしょうか?この論文は、この問題を調査し、一連の実用的な解決策を提案することを目的としています。 以下の共有では、主に Golang を例として使用します。ここで説明する自動ビルドとリリースの原則は普遍的であり、すべてのプログラミング言語に適用されることに注意することが重要です。したがって、ツールの作成にどの言語を使用するかに関係なく、これらのプラクティスは重要な参考価値を持ちます。 ビルドスクリプトの作成自動ビルドの世界では、安定していてクロスプラットフォーム互換性のあるビルド スクリプトを作成することが重要です。 Golang は強力なクロスプラットフォーム ビルド機能を提供しており、 go build コマンドはこの目標を達成するための中核となります。例えば: このコマンド例は、プラットフォームおよびアーキテクチャ固有のバイナリを生成する際の Golang の柔軟性を強調しています。ビルド スクリプトでは、マルチプラットフォームのビルド要件をサポートするために、この柔軟性をさらに拡張する必要があります。
OUTPUT_DIR および BINARY_NAME 設定により、ユーザーは出力ディレクトリとバイナリ ファイル名をカスタマイズでき、スクリプトの汎用性が向上します。 BUILDPATH 変数はビルド パスを指定するために使用されます。これはスクリプトを実行するために必要なパラメータであり、ビルド プロセスの安定性を保証します。
gobuild.sh スクリプト次の gobuild.sh スクリプトは上記の原則を実装し、クロスプラットフォーム ビルドの複雑さを単純なコマンド ライン操作に変換します。 このスクリプトは、マルチプラットフォームおよびマルチアーキテクチャのニーズに適応するだけでなく、さまざまなビルドシナリオに適応するのに十分な柔軟性と構成可能性も提供します。 Makefileと連携して完全自動構築を実現さらに、Makefile を組み合わせることでビルド プロセスを自動化し、効率を向上させることができます。 この Makefile を使用すると、fooctl と barctl CLI ツールの両方を同時にビルドすることが非常に簡単になります。単純なコマンド「 make build-binaries 」でビルド プロセス全体をトリガーできるため、手動による介入が大幅に削減され、ビルド プロセスの一貫性と信頼性が確保されます。 まとめ上記の詳細なビルド スクリプトと Makefile 構成を通じて、現代のソフトウェア開発における自動ビルドの威力と必要性がわかります。このアプローチはビルド効率を向上させるだけでなく、ソフトウェアの品質と安定性も向上させます。クラウドネイティブ時代において、自動ビルドは開発チームの効率性と製品の信頼性を向上させるための重要な戦略となっています。 GitLab CI/CD の CLI ツールをリリースビルド スクリプトが準備できたら、それを CI システムに統合できます。以下では、GitLab CI/CD を例に説明します。 GitLab CI/CD の中核となるのは、コードがコミットされたときに自動的に実行される、明確に定義された一連のジョブです。完全な継続的インテグレーションの場合、これらのジョブには通常、ビルド、テスト、コードレビュー (lint) などのステップが含まれます。しかし、この記事では、自動公開プロセスに焦点を当てます。 自動公開をトリガーする条件自動リリース プロセスは Git タグに基づいて作成されます。開発者がリポジトリに新しいタグをプッシュすると、GitLab CI/CD はこのイベントをキャプチャし、事前定義されたリリース プロセスを開始します。 この条件により、後続のビルド、アップロード、リリース ジョブは新しいタグが作成された場合にのみ開始されます。 リリースジョブステップ 1: バイナリをビルドします。ビルドバイナリフェーズでは、CI はさまざまなプラットフォームとアーキテクチャ用の CLI ツールバイナリをビルドして、ビルドプロセスの一貫性と再現性を確保します。 ステップ 2: ビルド製品をアップロードします。ビルドが完了したら、アップロード ステージでバイナリ ファイルを GitLab のパッケージ マネージャーまたはその他のストレージの場所にアップロードします。これにより、後続のリリースに必要なリソースが提供されます。 ステップ 3: GitLab に公開します。最後に、リリース ステージでは、CI は release-cli ツールを使用してリリースを自動的に作成し、ビルドされたバイナリをリリースされたアセットとして使用します。 .gitlab-ci.yml からリリースを作成する次の .gitlab-ci.yml スクリプトは、上記のリリース プロセスを実装します。 上記の例では、CLI ツールのバイナリをビルドし、Gitlab リリース ページにアップロードします。ユーザーは、Gitlab リリース ページから、自分のプラットフォームに適したバイナリ パッケージを見つけてダウンロードできます。 写真 GitLab CI プロセスの詳細については、プロジェクトを参照してください: https://gitlab.com/lqshow/clireleaseautomator まとめこのプロセスにより、CLI ツールのリリース プロセスが大幅に簡素化され、開発者は後続のビルドおよびリリース手順ではなくコード開発に集中できるようになります。これらの手順を自動化すると、すべてのリリースが高速で、一貫性があり、エラーがなくなり、ソフトウェアの全体的な品質と信頼性が向上します。 リリースCLIツールはGoReleaserを使用する上記のプロセスが比較的面倒であり、スクリプトの準備プロセスも複雑であることに気付くのは難しくありません。ここで、このプロセスを楽にするツール、GoReleaser[1]を紹介します。 これは、特に Golang で書かれたプロジェクトにとって変革的なツールです。従来の手動構成やスクリプト作成と比較して、GoReleaser はより効率的で簡潔な自動リリース方法を提供します。 GoReleaserの利点GoReleaser の設計哲学は、「一度設定すればどこでも実行できる」というものです。単一の構成ファイルを通じてリリース プロセス全体を制御します。この構成ファイルは、バイナリの構築方法、パッケージ化方法、バージョン情報の処理方法、さまざまなプラットフォームへの公開方法を定義します。具体的には、GoReleaser の利点は次のとおりです。
GoReleaserの設定と使用GoReleaser を使用するための最初のステップは、プロジェクトのルート ディレクトリに .goreleaser.yml 構成ファイルを作成することです。 goreleaser init コマンドを使用すると、初期構成をすばやく生成できます。このファイルには、構築、パッケージ化、公開のプロセス全体が網羅されています。 .goreleaser.yml を設定した後、 goreleaser はデフォルトでコンパイルされたファイルを dist ディレクトリに出力するので、 .gitignore を調整して dist を追加する必要があります。 例を見てみましょう: このシンプルで明確な構成ファイルには、実際に先ほど紹介した 2 つのモジュールが含まれています。これにより、シェル スクリプトと Makefile ファイルを記述する必要がなくなり、プロセス全体がより柔軟かつ効率的になります。 GitLab CI での GoReleaser の統合.gitlab-ci.yml ファイルでは、単純なリリース ジョブを定義するだけで済みます。ちなみに、CI/CD で GTILAB_TOKEN 変数を設定することを忘れないでください。 実行ログを確認すると、GoReleaser が自動的に実行された後、ビルド、アップロード、公開のプロセス全体が含まれていることがわかります。
|
>>: マイクロデータセンターはどのようにしてエッジコンピューティングを実現するのでしょうか?
アメリカの老舗ホスティング会社 (1999 年創業) である interserver.net が、突...
• 現在のクラウドバックログは24%増加しました(為替レート一定では22%増加) • 現在のS/4H...
最近、Baidu がまた変更され、アルゴリズムが少し変更されました。友人がとても古典的なことを言った...
プロフェッショナルソーシャルネットワークにおける中国と海外の専門家間の議論転職は職場における永遠の話...
北京市が2011年12月に発効した「北京マイクロブログ発展管理条例」では、Weiboユーザーは登録時...
Fastcomet はついにブラックフライデー プロモーションを開始しました。仮想ホスト、クラウド ...
【コアヒント】Qiubaiは2005年に設立され、7年以上にわたって発展してきました。大量の高品質の...
アプリがリリースされた後、さまざまなアプリプロモーションチャネルを通じて製品を宣伝することは、重要な...
[51CTO.com クイック翻訳] Kubernetes (K8S) は現在、マイクロサービスとコ...
今年、百度の「6.28事件」が突如発生し、検索業界の長らく沈黙していた戦場が破られた。「8.22事件...
今日のWeiboの世界では、有名になり人気者になりたければ、基本的に2つの痛みを避けることはできませ...
網易科技ニュース、5月23日、昨日、中国インターネット金融グループとその子会社であるクラウドファンデ...
北京ビジネスデイリー(記者:屈中芳) 仮想オペレーターライセンスの第1弾がまもなく発行されるというニ...
まず最初に、真面目なことを言わせてください。以下の内容は初心者がブラックハット原則を学ぶためのもので...
[[402248]]ハッカーらが富士通のProjectWEBプラットフォームに侵入し、日本の中央省庁...