タグ付けされた質問 「deployment」

展開とは、ソフトウェアシステムを使用可能にするすべてのアクティビティです。ソフトウェアの配備に関する質問は、このタグの下にあります。

5
マルチサイドプロジェクトでバージョン管理をどのように処理しますか?
幅広い質問であることは承知しておりますので、できるだけ具体的にお話しさせていただきます。この質問は、技術的な質問よりも「組織的な」質問です。 これらの主なコンポーネントを持つマルチサイドプロジェクトがあります。 コアビジネスロジック(データモデル)をホストするサーバー コアビジネスロジックを使用するクライアントのバックオフィス コアビジネスロジックも使用するアプリケーションAPI(REST) アプリケーションAPIを使用するスマートフォンアプリ(iOSおよびAndroid)があります。 スマートフォンとは別のタブレットアプリ(android)があり、同じアプリAPIを使用しています。 すぐに、私はアクティブなクライアントで生産されます。そして、どんなプロジェクトでも、私はすべての異なるコンポーネントを長期にわたって維持する必要があります。つまり、以下のすべてをアップグレードできます。 サーバーのコアビジネスロジックのコード(バックオフィス、API、および副作用としてモバイルアプリで使用) API自体(スマートフォンアプリとタブレットアプリの両方で使用) すべてのモバイルアプリ(appstore / googleplay経由) もちろん、サーバー側の部分(コアビジネスロジックコードとAPIコード)は自分ですぐに変更できます。ただし、新しいモバイルアプリはappstore / googleplayでクライアントがダウンロードする必要があり、それらが最新であるかどうかはわかりません。 これらのアップグレードをスムーズに行い、クライアントにリスクを与えないようにするためのガイダンス、優れた実践のヒントを教えてください。 どのバージョンの「バージョン」を作成する必要がありますか?クライアントがモバイルアプリをアップグレードしなくても、すべてが確実に機能するようにするにはどうすればよいですか?私に仕事を楽にするために彼にアップグレードを強いるべきですか? つまり、マルチサイドプロジェクトを長期にわたってライブにするには、どのように整理すればよいですか?

4
Windows用に32ビットバージョンのみを展開するか、32ビットバージョンと64ビットバージョンの両方を展開する必要がありますか?
コンパイルされた言語で書かれたクロスプラットフォームアプリケーションがあります。 Linuxでは、amd64ビルドとi386ビルドの両方をユーザーが使用できるようにするのが一般的であるため、ユーザーは現在の環境に適したバージョンを選択できます。 Macでは、Universal Binaryを作成するのが一般的であるため、Appleコンピューターの複数のバージョンをサポートできます。または、現在のすべてのAppleコンピューターは64ビットアーキテクチャとOSを使用しているため、64ビットバージョンを提供します。 「あなたはどんなアーキテクチャですか?」と尋ねてユーザーを混乱させたくはありませんが、32ビットのみをデプロイするのは悪い考えです。 私のアイデア: アプリケーションの32ビットバージョンと64ビットバージョンの両方をインストールし、実行時に選択します。(ラッパーが必要なので、クリックして起動するアプリケーション(uTorrentなど)を作成するのは困難です)。 User-agentWebサイトでアーキテクチャを検出し、ユーザーが適切なバージョンを自動的にダウンロードできるようにします(および「代替バージョン」へのリンクを作成します)。(Google Chromeスタイルです) ユーザーに32ビットアプリケーションの使用を強制し、64ビットバージョンを「エキスパート専用」にしますか?(VLCなど) Windowsで何をすべきですか?

2
ASP.NETアプリケーションの展開を自動化するJenkins
Jenkinsを使用してASP.NET Webアプリケーションの展開を自動化/半自動化する可能性はありますか。制御されていないユーザーがユーザーIDとパスワードを入力する必要があるため、制御された環境または制御されていない環境にすることができます。ターゲットから宛先にファイルをコピーし、WebファームシナリオでSQLスクリプトを実行する方法を探しています。 編集 現在、アプリケーションをデプロイするために、batファイルを使用してapppool / sql cmdなどをxcopy / configureしています。ただし、これを機能させるには、プロダクションサポートチームがソースコードをダウンロードし、プロジェクトをビルドし、batファイルを実行してアプリケーションをデプロイする必要があります。 ここで、ユーザーがソースコードをダウンロードせずに展開を自動化し、エンドユーザーがURLにアクセスしてユーザーIDとパスワードのパラメーターを入力し、svnタグを選択するだけで展開されるようになります。ただし、Jenkinsは匿名ログインで実行されているため、スクリプトを実行する権限がないため、既存のbatファイルは機能しません。 それで、私はこの種の状況に代わるものが存在するかどうか知りたいです。入力されたユーザーIDとパスワードを使用してユーザーコンテキストを偽装し、既存のバッチファイルをそれ以上変更せずに実行できるようにするとよいでしょう。それが不可能な場合は、他のアイデアも検討したいと思いますが、パペットなどの自動ツールを選択する柔軟性がないため、これらのバッチファイルを使用する必要があります。

2
デプロイスクリプトはビルドのアーティファクトである必要がありますか?
これはJavaで書かれたWebプロジェクトです。 それで、ビルドとデプロイのスクリプトを書いています。ビルドを作成するために、antを使用しました。継続的なビルドはJenkinsで行われます。 ビルドは3つの異なる成果物を生成します。 戦争ファイル レイアウト付きのzip 画像を含むzip これまでのところ、これでいいのですが、今度はdeployスクリプトを記述する必要があります。 サーバー1で実行されているTomcatに戦争(アーティファクト1)をデプロイします サーバー1のアーティファクト2を特定のディレクトリに配置します サーバー2のアーティファクト3を特定のディレクトリに配置します そこで同僚と話していて、正しいサーバーに配置したときにこれらのアーティファクトをデプロイするアーティファクト(多分deploy.xml)も生成する必要があると彼は言いました。 したがって、別のスクリプトがあります。 ジェンキンスのアーティファクトをダウンロードする 各サーバーにscpし、そこにdeploy.xmlを配置します deploy.xmlをリモートで呼び出す 私を少し不快にしているのは、build.xmlをビルドアーティファクトとして持つ行為です。この背後にある動機は、VCSリポジトリにアクセスする必要なしにデプロイできるため、ビルドは自己完結型になります。つまり、すべてのビルドはJenkinsによって生成されたものでのみ本番稼働できます。 配置スクリプトはどこに配置する必要がありますか?それらはVCSにのみあるべきですか、それともビルドアーティファクトであるべきですか?


6
ジュニアプログラマーと継続的に展開できますか?
マイクロサービスアーキテクチャでは、すべてのマイクロサービスを一度にデプロイして、すべてが連携して動作することを確認するために1週間待つのが、APIバージョン管理を厳密に強制し、多くの自動テスト(それぞれ:ユニットと探索、統合)、およびステージ上のテストとしてコミットが合格するとすぐに本番環境に自動展開します。 これで、テストを書き、コミットする前に変更をテストし、APIバージョン管理の使用方法を知っていて、展開時に実行されるインクリメンタルdb更新スクリプトでデータベースを削除しない限り、素晴らしいアイデアのように見えますステージで失敗するため、大きな問題ではありません)。 しかし、若いプログラマーでそれを行うことは可能ですか?たぶん、プルリクエストスキーマを実装する必要があります。これにより、継続的な展開のようになります(私の推測です)。 これが意見に基づいたものではなく、あなたの経験を共有してくれることを期待しています。ありがとうございます。 CIについても、継続的な配信についても質問していないことに注意してください。すでにあります。現在私たちが試みているのは、コードをチェックインした直後にすべてを本番環境に配置することを意味する、継続的な展開にすることです。

2
ヨーロッパに拠点を置く企業として、顧客向けにカスタムiPadアプリケーションを作成することは可能ですか?
私たちの顧客は、彼が会社の少数のiPadで使用できるカスタムアプリケーションを作成することを望んでいます。このアプリケーションは、おそらくこの1人の顧客にのみ有用です(将来的にはさらに2、3人が、追加のカスタマイズを行った場合のみ)。 顧客がAppleのVolume Purchasing Programに加入している場合、カスタムB2Bアプリケーションを提供できることを読みました。ただし、これは米国の開発者(または顧客?またはその両方?)に限定されているようです。 ヨーロッパを拠点とする(または、より一般的には米国以外の)ソフトウェア開発者とその地元の顧客の代替手段は何ですか?

9
ライブWebサイトの展開バグの数を減らすために何ができますか?
多くの皆さんがこの問題を経験していると確信しています。WebサイトまたはWebアプリケーションが実行中であり、ライブです。次のバージョンをアップロードしたいが、設定ファイルで値をfalseに設定したり、データベースに別のレコードを挿入したり、20個以上のパラメーターにカウントされることがある多くのマイナーな処理を行うなど、すべてを理解していません。 新しいバージョンをアップロードするとすぐに、すべてが壊れます。現在、問題の修正には最大20分しかかかりませんが、許容できる全体的なストレス、および会社への財政的および信用上の損害は忘れられない場合があります。 新しいバージョンの展開の初期構成から生じるこれらのタイプのバグを減らす方法は何ですか? PS:チェックリストについては言及しないでください。すでにリストがあります。チェックリストの問題は、常に更新されるべきですが、更新されないということです。

4
SVNからWebアプリケーションを実稼働環境に直接展開することは許容されますか
質問 SVNを運用展開に使用しない正当な理由がありますか、それとも単に個人的な好みのケースであり、SVNに対する実際のケースはありませんか? バックグラウンド 私の職場には、SVNでリリースにタグを付けてから、それらのリリースをさまざまなWebサーバーに直接デプロイするsvn coかsvn switch、本番環境に直接組み込むという文化があります。 ビルドおよびデプロイスクリプトまたは何らかのフォームまたは自動デプロイを使用しないと、ドキュメント化されていないため統合環境設定が失われると考えているため、個人的にこれに問題があります。しかし、それ以上に、見過ごされていること、そのheadい頭をまだ育てていないことをすることには隠れた危険があるかもしれないという直感を持っています。 私は、さまざまな環境(ステージング、プリプロダクション、プロダクション)などにコードをデプロイする責任がある運用スタッフに懸念を提起しました。 編集: ビルドとデプロイの意味: たとえば、開発者が特定の環境にweb.config設定を追加する必要がある場合。通常、Web.configはsvnに保持されないため、これらのファイルは、自動ビルドスクリプトの形式なしで手動で更新されます。そのため、それらが失われたり、OPSがリリースのweb.configにフィールドを追加するのを忘れると、問題が発生します。 XMLPokeを使用して特定の環境に適したweb.configを自動的に生成するというビルドスクリプトは、各環境に必要なすべての変更を文書化するバージョン管理可能なスクリプトがあるという点で理想的です。 現在のビルドおよびデプロイ方法 問題のプロジェクトの場合、開発者は手動でリリースをビルドしますが、他のプロジェクトではビルド手順がNANTまたはMSBuildで自動化されています。 ほとんどのプロジェクトのデータベース移行は、DBスクリプト、移行スクリプト(Migrator.NET)、またはCMSパッケージを介して行われます。 CIは通常、チェックインごとにTeam Cityによって行われます。すべてのチケットはブランチで行われ、トランクにチェックインする前に検証と正確性/品質についてピアレビューされるコードレビュープロセスがあります(うまく機能します)。 ただし、実際のコードの展開は、タグ付きリリースのチェックアウトまたはより一般的にはSVNスイッチのいずれかを介して、ほとんど常にSVNを介して行われます。これは、リポジトリをデプロイプロセスの一部として使用しているという点で奇妙に思えます。 通常、構成はあまり頻繁に変更されず、構成ファイルに含まれるのは環境固有の情報のみです。それ以外はすべてデータベースにあります。 これがうまくいくと誤解しないでください。ただし、自動化されたビルドとデプロイを試してみてください。これをRailsとCapistranoで使用し、Cygwin、Nant、SSHを使用した個人プロジェクトにも使用しました。 さらに重要なことは、自動化されたビルドとデプロイを使用するように同僚を変更するには、非常に具体的な有効な引数が必要だということです。 それとも、SVNを使用して本番環境にデプロイすることに対して実際に有効な引数はありませんか?

2
縮小したCSSをGitに保存する必要がありますか?
私はGulpを使用して、取り組んでいるプロジェクトのSASSコードから縮小されたCSSを生成します。 Gitからライブ配信するときに、この縮小されたCSSを再生成するのがベストプラクティスと考えられるかどうか疑問に思いました... または 縮小されたCSSファイルをGitに保存して、サーバー側で追加の作業をせずに、自動的に本番環境にプッシュする方法は? これについての人々の考えに感謝します。ありがとう!

1
TFSビルドプロセステンプレート(ワークフロー)を使用した展開
複雑な展開にTFSビルドワークフローを使用することを考えています。展開が必要なものがあります。 Webアプリケーションとサービス データベース SSRSレポート SSISパッケージ 他に何を知っている人 どのビルドをデプロイして実行するかなど、ワークフローにいくつかの基本的なパラメーターを与えることができるという事実が気に入っています。潜在的に、一部の部分は人間の承認を必要とする可能性があり、ワークフローもそれを処理できることを知っています。例として、ワークフローを使用してVisual Studioデータベースプロジェクトから変更スクリプトを作成する場合がありますが、DBAグループはスクリプトを実行する前に承認する必要があります。 他の人が過去にこの目的で「ビルド」を使用したかどうか、およびどのような問題が見つかったかを知りたいです。

3
モバイルアプリの複数のバージョンをサポート
現在サーバーへのWebインターフェースのみをサポートしている既存のアプリケーションを補足するために、ネイティブモバイルアプリケーションのスイートを構築しています。アプリケーションは、クライアントが独自のインフラストラクチャにインストールしてホストすることも、それを利用したいクライアントのために自分でホストすることもできます。大企業のお客様は通常、セルフホスティングを選択しましたが、小規模のお客様はホスティングオプションを選択しました。 アプリケーションの複数のバージョンをサポートする必要があります。すべてのお客様が同時にアップグレードを希望するわけではありません。Webインターフェイスでは、サーバーのインストールに関連付けられたサーバーバージョンがWebインターフェイスで自動的に使用されるため、複数のバージョンのサポートは難しくありません。通常、App Storeで利用できるアプリが1つしかないモバイルアプリケーションでは、モバイルアプリでのさまざまなレベルのサーバーAPIと機能のサポートが課題になります。他の人が問題をどのように解決しているか知りたいです。私の心には、次のようなオプションがあります。 アプリストアでアプリの複数のバージョンをサポートします。 モバイルアプリケーションにサポートを組み込み、通信しているサーバーのAPIバージョンを自動的に決定し、関連するサーバーAPIエンドポイントに呼び出しをルーティングします。また、サーバーのさまざまなバージョンで利用できる機能に基づいて、モバイルアプリケーションの機能を有効/無効にするために、ある種の機能切り替えメカニズムを使用することも紹介します。 アプリのデプロイにアプリストアを使用しないでください。アプリのダウンロードとインストールに使用できるバージョン固有のURLをユーザーに示します。 オプション1 -IMOはアプリのユーザーを混乱させます。また、実際には2つの独立したアプリケーションであるため、あるバージョンのアプリから次のバージョンへの移行パスは適切ではありません。 オプション2-一方、UIビジュアルは、基本的に、通信しているサーバーAPIのバージョンで利用可能な機能に適応する必要があることを考慮すると、すぐに非常に複雑になる可能性があります。また、必要なサーバーAPI呼び出しのさまざまなバージョンをサポートする必要があります。 オプション3-アプリのサイドローディングを行う場合、Androidの世界で可能ですが、私の知る限り、iOSではサポートされておらず、今後のWindows 10モバイルアプリの画像はどのようになるかわかりません。 この問題に取り組むために他にどのようなアプローチがありますか?私たちがネイティブアプリを作成しているという事実について議論しないでください。それは私が求めていることではありません。サーバーAPIの異なるバージョンと通信する同じネイティブモバイルアプリの複数のバージョンをサポートする問題に他の人々がどのように取り組んでいるのかについてのガイダンスを探しています。

1
ソフトウェア/ファームウェアの自動更新戦略
「クライアントデモ用のカフェインを使用した粗雑なプロトタイプ」フェーズの終わりに近づいており、「将来を考える」フェーズに移行する中規模プロジェクトができました。プロジェクトは、ソフトウェアとファームウェアを備えたLinuxベースのデバイス、および中央管理Webサーバーで構成されています。現在10個のプロトタイプが存在し、生産は1000年代のオーダーになると予想されます。 自動更新の技術に精通しておらず、時間が足りないので、私は自分のソフトウェアの展開/自動更新戦略をすぐに展開しました。現在、次の要素で構成されています。 ホストされたgitリポジトリ(GitLab)と本番リリースブランチ(Webサーバーのソースもこの同じリポジトリにあることに注意してください)。 次のようなWebインターフェースの「更新の展開」ボタン 最新バージョンを本番リリースブランチからローカルリポジトリエリアにプルし、それを一時パッケージ準備ステージングエリアにもコピーします。 ステージング領域でサニタイズスクリプト(リポジトリに格納されている)を実行して、無関係なソースファイル(サーバーソース、ファームウェアソースなど)と.gitファイルを削除します。 現在のgitハッシュを更新パッケージのファイルに書き込みます(目的は以下で明らかになります)。 すべてうまくいった場合は、gzipで圧縮し、以前のgzipで圧縮されたパッケージを同じ名前のファイルで上書きしてサービスの準備を整え、ステージング領域を削除します。 サーバー上に現在のデバイスソフトウェアの2つのコピーが存在することに注意してください。これらは同期がとられていることが期待されています。同じバージョン。 デバイス上のソフトウェアは、という名前のディレクトリに自己完結し/opt/example/currentています。これは、ソフトウェアの現在のバージョンへのシンボリックリンクです。 起動時に次のことを行うデバイスの自動更新機能: do_not_updateファイルの存在を確認し、ファイルが存在する場合はそれ以上のアクションを実行しません(開発デバイスについては、以下を参照してください)。 上記のテキストファイルから現在のコミットハッシュを読み取ります。 そのハッシュをクエリパラメータとして使用して、サーバーにHTTPリクエストを送信します。サーバーは304(ハッシュは現在のバージョン)で応答するか、gzip圧縮された更新パッケージを提供します。 更新パッケージを受け取った場合は、次の方法でインストールします/opt/example。 という名前のフォルダーに更新されたソフトウェア情報を抽出していますstage。 更新に必要なローカル変更などを行う更新パッケージからのインストール後スクリプトの実行 現在のソフトウェアルートフォルダーをにコピーしますprevious(存在するprevious場合は、最初に既存のものを削除します)。 stageフォルダをコピーしますlatest(存在するlatest場合は、最初に既存のものを削除します)。 確保currentへのポイントへのシンボリックリンクをlatest。 デバイスを再起動します(ファームウェアの更新がある場合は、再起動時に適用されます)。 新しく構築されたデバイスでの初期展開の問題もあります。デバイスは現在 SDカードベースである(ここでは範囲外の独自の問題があります)ため、このプロセスは次のように構成されます。 以前のバージョンのソフトウェアが含まれているSDイメージが存在します。 この画像からSDカードが作成されます。 初回起動時に、さまざまな初回のデバイス固有(シリアル番号ベース)の初期化が行われ、その後、オートアップデーターがソフトウェアの最新の製品バージョンを取得して通常どおりインストールします。 さらに、開発デバイスのサポートも必要でした。開発デバイスの場合: 完全なローカルgitリポジトリがデバイスで維持されます。 currentシンボリックリンクは、開発ディレクトリを指します。 do_not_update自動アップデーターがプロダクションアップデートで開発コードを吹き飛ばすのを防ぐローカルファイルが存在します。 現在、展開プロセスは理論的には次のように意図されていました。 コードをデプロイする準備ができたら、リリースブランチにプッシュします。 サーバーの[更新の展開]ボタンを押します。 これでアップデートが公開され、デバイスは次回チェック時に自動更新されます。 しかし、そこにあるトン実際に問題のは: Webサーバーのコードはデバイスのコードと同じリポジトリにあり、サーバーにはローカルのgitリポジトリがあり、それを実行しています。最新のWebサーバーコードが最新のデバイスコードと同じブランチにありません。ディレクトリ構造に問題があります。[更新のデプロイ]ボタンをクリックすると、最新バージョンが本番ブランチからプルされ、サーバーコードのサブディレクトリにプルされます。つまり、サーバーに最初からデプロイする場合、デバイスのプロダクションブランチをそこに取り込むことにより、このサブディレクトリを手動で「シード」する必要があります。これは、おそらくgit user errorから、デプロイを試みないと、親ディレクトリのWebサーバーブランチからデバイスコードをプルします。これは、ステージング領域をサーバーのローカルgitリポジトリのサブディレクトリにしないことで解決できると思います。 Webサーバーは現在、デバイスソフトウェアのgitハッシュを永続的に維持していません。サーバーの起動時に、git rev-parse HEADローカルデバイスソフトウェアリポジトリで現在のハッシュを取得します。理由がわからないため、ここでは説明しませんが、大量の論理エラーが発生しています。サーバーを再起動すると、特にサーバーが新品で生産がない場合は、問題が発生する可能性があります。ブランチリポジトリはまだ引っ張られています。リクエストがあれば喜んでそのロジックのソースを共有しますが、この投稿は長くなりつつあります。 何らかの理由でサニタイズスクリプト(サーバー側)が失敗した場合、サーバーには最新のレポが残されますが、同期git rev-parse HEADが取れておらず、更新パッケージがないため、実際のハッシュと一致しないハッシュが返されますここで問題はサーバーのコマンドラインで手動で修正する必要があります。つまり、サーバーは更新パッケージが正しくないことを認識しておらず、純粋な信念で常にそうであることを前提としています。これを前のポイントと組み合わせると、サーバーは実際には非常に壊れやすくなります。 最大の問題の一つは:デバイス上で動作しているデーモン全く別のアップデータは現在ありません。wifiインターネットアクセスが来るのを待っている複雑さといくつかの土壇場のハッカーのため、デバイスをチェックして更新するのはメインのデバイス制御ソフトウェア自体です。これは、テストが不十分なバージョンが何らかの形で本番環境に移行し、制御ソフトウェアが起動できない場合、存在するすべてのデバイスは、それ自体を更新できなくなるため、本質的に機能しなくなることを意味します。これは、本番環境では絶対的な悪夢です。不運なときに電源が切れた場合の単一のデバイスの同じ取引。 その他の主な問題は次のとおりです。増分更新はサポートされていません。たとえば、しばらくの間デバイスの電源が入っていない場合、次にデバイスが更新されたときに、一連のリリースバージョンがスキップされ、直接バージョンスキップの更新を実行できる必要があります。この結果、更新された展開は、特定の更新を特定の過去のバージョンの上に適用できることを確認するという悪夢になります。さらに、gitハッシュはバージョン番号ではなくバージョンを識別するために使用されるため、増分更新を容易にするためのバージョンの辞書式比較は現在不可能です。 現在サポートしていない新しい要件は、管理サーバー側で構成する必要があるデバイスごとの構成オプション(キー/値のペア)がいくつか存在することです。ソフトウェアの更新と同じHTTP要求でデバイスにこれらのデバイスごとのオプションを提供することはどうしても構いません(多分、それをHTTPヘッダー/ Cookieにカプセル化できます)。常に別のHTTPリクエストにします。 ハードウェアの2つのバージョン(および将来的にはさらに多く)のハードウェアが存在するため、多少複雑になります。ハードウェアの現在のバージョンは、実際には初期SDイメージの環境変数として格納され(それらは自己識別できません)、すべてのソフトウェアはデバイスのすべてのバージョンと互換性があるように設計されています。ファームウェアの更新はこの環境変数に基づいて選択され、更新パッケージにはハードウェアのすべてのバージョンのファームウェアが含まれています。ちょっと不格好ですがこれで我慢できます。 現在、手動で更新をデバイスにアップロードする方法はありません(要するに、これらのデバイスには2つのwifiアダプターがあり、1つはインターネットへの接続用で、もう1つはユーザーがデバイスの構成に使用するAPモードです。将来的にはデバイスのローカルウェブインターフェースに「アップデートソフトウェア」機能を追加するつもりです)。これは大きな問題ではありませんが、更新のインストール方法にある程度の影響を与えます。 …

2
コードを再利用可能なビットに分割した後、どのようにテストしてデプロイしますか?
私たちは1人の開発者と、すべてのコードを含む1つのsvnリポジトリから始めました。 ^/foo/trunk/module-a ^/foo/trunk/module-b ^/foo/trunk/module-b/submodule-b1 ^/foo/trunk/website1 (当時、これは大きな改善でした)。これが少し成長する機会を得た後、循環依存、テストスイートの遅延、コードの再利用に関する一般的な問題が発生し始めました(たとえば、website1の機能セットが他の汎用モジュールaに侵入したため)。 コードベースをモジュール化して、まもなくgitに移動することを期待して(そしてgitがsvn mega-reposを好きではないところを読んだことを期待して)、もっと細かい構造に移行しました: ^/module-a/trunk/ ^/module-b/trunk/ ^/module-b/trunk/sumbmodule-b1 ^/earlier-sub-sub-sub-module-c/trunk etc. (about 120 such modules) これは概念的に素晴らしかった。モジュール化されたコードの増加、テストスイートの高速化、ドキュメント化の容易化など。より一般的なコンポーネントの一部をオープンソース化し、すべてのモジュールをpipインストールpip install -e .可能にしました(developmentvirtualenv にインストールするために使用)。 ^/srv/trunkランタイム環境のフォルダ構造を含むリポジトリを作成しました。^/srv/trunk/libモジュール、/srv/trunk/src残りの部分^/foo/trunk、^/srv/trunk/wwwウェブサイトなど そして最後に(非常に長い時間前に使用したperforceからのアイデア([ https://www.perforce.com/perforce/r12.1/manuals/cmdref/client.html]))を作成し、「vcs-関連するすべてのリポジトリと、それらを開発環境にチェックアウトする場所と、それに対応するコマンドをリストしたテキストファイル。たとえば、vcs-fetc行: svn srv/lib/module-a ^/module-a/trunk いずれかを引き起こします(初回) cd /srv/lib && svn co ^/module-a/trunk module-a または(後で) cd /srv/lib/module-a && svn up そして同様にgithub repos(私たち自身と変更された/変更されていないベンダーパッケージの両方)についても同様です。 本番環境の作成には同じvcs-fetchプロセスを使用しましたが、vcs-fetchを実行した後、prodで実行されていたバージョンを知る方法がないことはすぐにわかります。 mega-repoを使用すると、トランクから製品を更新する前にリビジョン番号をメモするだけで済み、戻るのは簡単でしたsvn -r nnn up .。svnとgitの両方のコード(およびhgの1つのモジュール)と〜120リポジトリでは、これを行う方法は明らかではありません。 …

5
開発中、企業はどのようにしてWebサイトを非表示にしますか?
私はこれに不慣れで、19歳の新しいPHP開発者を雇ったばかりなので、これがどのように機能するのかわかりません。多くの企業は、Webサイトを開発するときに、サイトがインデックスに登録されないようにしています。html5 / cssとphp / mysqlの作業を検索エンジンから非表示にする方法は何ですか?私が間違っていなければ、これらはテクニックです: オフライン開発:ローカルストレージを使用してhtml / cssをレンダリングします。PHP / mysqlがどのように機能するかはわかりません。 .htaccessを使用してアクセスを防止する VPNを使用してアクセスを防止します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.