それで、変化する時が来ました。 新しいAtelier開発環境およびバージョンCaché2016.2のリリースから、スタジオで作成した形式、いわゆるUDL(Universal Definition Language)形式でファイルをエクスポートおよびインポートできるようになります。 これで、高速であるだけでなく、エクスポート時に目に優しいコードを作成できます。 しかし、別の重要な問題も発生します。すべての新しいプロジェクトがUDL形式である場合、誰が後方互換性を気にしますか?
さあ始めましょう
インターシステムズは、下位互換性の問題を非常に深刻に受け止めているため、いくつかの古いプロジェクトに新しい命を吹き込み、UDLと連携する新しい機能を追加することにしました。
比較
写真でわかるように、右側のXMLにエクスポートされたCOS-UDL:
Cachéソース管理
最初の行は、キャッシュソース管理と呼ばれるかなりシンプルですが非常に便利なプロジェクトです。 そのタスクは非常に単純です-すべてのプロジェクトファイルを取得し、コンパイルが成功するたびにいくつかのフォルダーにエクスポートし、フォルダーに表示される新しいファイルをインポートします。 再生の前に、このバージョン管理は次の2つの形式でファイルをエクスポートできました。
- xml-すべてのファイルの拡張子は.xmlでした
- (cls、mac、int、dfi).xml-すべてのファイルの拡張子は.cls.xmlなどでした。
すべてが機能するように、ExpModeパラメーターをUDL形式に変更するだけで十分です。
設置
インストールの場合、4つの簡単な手順に従うだけで十分です。
- リポジトリのダウンロードまたはクローン
- インポートファイル-StudioのSourceControl.cls.xml
- ポータルを開き、構成/追加設定/ソース管理に移動し、お住まいの地域のバージョン管理クラスとしてUtil.SourceControlを選択します
- ターミナルを開き、エリアを開いて
do ##class(Util.SourceControl).Init()
を実行do ##class(Util.SourceControl).Init()
ます
しかし、別のフォルダーにエクスポートする場合はどうなりますか?
解決策
これにはいくつかのオプションがあります。 ..#ExpModeは、0、1、2の値を持ち、それぞれ.xml、.cls.xml、UDL形式でエクスポートできます。 ..#SourceFolderパラメーターは、ファイルを保存する場所を示します。 ..#RefreshTimeは、フォルダー内の新しいファイルをインポートするために確認する必要がある秒数を示します。
原則として、gitと連携して、このプロジェクトは必要なすべての機能を提供します。
CacheUpdater
復活リストの次のプロジェクトはCacheUpdaterでした。 その機能は、例によって完全に理解できます。 GitHubリポジトリと、それを使用する100,500台のサーバーがあるとします。 何かを変更する場合、これは悪夢になります(各サーバーをどこでもペンで更新する必要があります)。 CacheUpdaterはこの問題を同じように解決します-ローカルファイルをGitHubからダウンロードすることで定期的に更新します。
設置
そのインストールはもう少し複雑です:
- すべてのファイルもダウンロードする
- Task.cls.xmlをStudioにインポートします
- オープンシステムオペレーション/タスクマネージャー/新しいタスク
- 任意のタスク名を考え出し、ファイルを同期する領域を選択し、タスクのタイプとしてGitHubUpdaterを選択し、リポジトリのデータとGitHubのアカウントを入力します
- 完了をクリックします
- リフレッシュレートを選択する
戦闘の準備ができました。追加の設定は必要ありません。
Cachegithubci
同じプロジェクトは、GitHubとの継続的な統合のための本格的なシステムです。
プロジェクトのインストール
- Install.cls.xmlファイルをダウンロードして(必要であれば、すべてのファイルをダウンロードできます)、プロジェクトにインポートします。
- ターミナルで実行^
Set pVars("Namespace") = "{namespace}" Set pVars("IP") = "{IP}" Do ##class(CacheGitHubCI.Install).setup(.pVars)
ここで、名前空間はプロジェクトをインストールする領域です。 そうでない場合は、自動的に作成されます。
IPは、サーバーのオプションのパラメーターです(webhookに使用)。
例えば
Set pVars("Namespace") = "SAMPLES" Set pVars("IP") = "45.45.45.45:57776" Do ##class(CacheGitHubCI.Install).setup(.pVars)
完了、パフォーマンスをテストするのに十分。 次に、CacheUpdaterの場合と同様に、タスクの作成で同じ操作を実行する必要があります。 素晴らしい、すべてが機能します! そして、おそらく、誤って質問が頭に現れました-「CacheUpdaterを使用できるのに、なぜCacheGitHubCIが必要なのですか?」。
答え
CacheGitHubCIを使用すると、単体テストを実行するために、コンパイルの前後に実行するアクションを指定できます。 新しいコミットがリポジトリなどに表示されるとすぐにすべてが更新されるようにwebhookを設定できます。 リポジトリ自体でこのシステムのすべてのバンを構成する方法について読むことができます。
まとめ
これまでのところ、3つのリポジトリのみを更新しています。 努力が必要なものがあります。このリストにはCache Tort Gitが含まれています。これはTortoiseGitと組み合わせたgitの本格的な作業を表します。