タグ付けされた質問 「continuous-integration」

継続的インテグレーション(CI)は、開発者の作業コードコピーを共有コードベースに頻繁にマージして、統合の問題を防止または最小化するプロセスです。[Jenkins]や[Travis-CI]などの特定のCIシステムに関する質問については、代わりにこれらのタグを使用してください。

3
米国にないiOS用のホストされたCI / CD?
TL; DR:アジア、または少なくともヨーロッパにデータセンター/ビルドボックスを持っているiOS向けのホスティングCI / CDプロバイダーをご存知ですか?(ビルドとデプロイの両方を提供するが、ビルドはMVPである場合のボーナスポイント) 裏話: 私たちはiOSとAndroidで大規模なCI / CDを実行しています。Merge-Requestブランチのテスト/検証と、テスターと利害関係者へのトランクビルドのデプロイの両方で、10以上の同時ビルドを実行しています。私たちは、満足しているSaaS /クラウドプロバイダーを使用しています。 情報源と同様に、私たちはアジアにいます。クライアントは規制の厳しい業界に属しており、規制当局はまだクラウド内のソースを処理できないと考えているため、ソースをオンプレミスに保つために懸命に闘っています。この前提を受け入れてください。彼らがそれを手放す必要がある理由を理解しています。しかし、今のところ...できないと思います。 つまり、ソースはアジアにありますが、それを構築するCI / CDプロバイダーはすべて米国にあるようです(Circle、Buddybuildなど)。太平洋を越えた帯域幅は、特にアジアの営業日にひどい。すべてのビルドが急増する前にすべてのクローンが費やす時間は、営業日のほとんど60分を超えます。 CI / CDのオンプレミスは、DockerコンテナーでのAndroidビルドでは非常に簡単です。しかし、iOSが問題です。OSXを管理してビルドボックスの艦隊を運用し続けるように人々に教えるビジネスに身を置く必要があるか、専門家にその問題を解決させる必要があります。 ノート: SEコミュニティ、私は推奨事項を求めていません!これは事実上の技術的な質問です。特定の地域で、特定の技術要件を満たす特定のサービスを利用できますか? MacStadiumがアイルランドでMacOS VMを提供できることはわかっています。ただし、これは、独自のCIプロセス全体を管理する必要があることを意味します。さらに、避けたい多くの低レベルのシステム管理タスクも必要になります。もちろん、ビルドとデプロイメントを分離することも意味します。しかし、待ち時間は許容範囲のようです。 私たちは、クラウドCI / CDプラットフォームを私たちの近くに持っている他の人々を知っています...しかしiOS / MacOSのサポートがありません。 浅いクローンは必要な帯域幅が少ないため問題が軽減されることはわかっていますが、現在のプロバイダーがまだサポートしていないことを意味する他の複雑さもあります。そして、彼らはどんな場合でも問題を完全に解決するわけではありません。 オフプレミスのGitHubミラーを使用して実験しましたが、これは問題の一部を解決しますが、規制の問題には対応していません。また、多くのWebhook、特に新しいコードのCIパイプラインにとって重要なMerge-Request Webhookでは機能しません。Webhookを監視し、APIコマンドを他のサービスプロバイダーに強制的にリレーするエージェントを作成することもできますが、それは実際にフープを飛び越えているだけでなく、維持するための実質的な新しいコードを作成しているはずです。

2
C ++ / VBAおよび.NET(C#)プロジェクトで記述されたライブラリを構築できるCIは何ですか?
私はオートメーション/開発会社のIT部門で働いており、CIをツールのセットに実装/追加しようとしています。そして、私たちはどれを選ぶか困難を抱えています。 現在、これらのシステムについて考えています。 ジェンキンス CircleCI TravisCI 質問:システムが持つべきCIのソフトの主要な属性は何ですか? 編集:私たちはCIに標準的なものを期待しています:アプリケーションの構築、テストの実行(Unit / Integration / Performance / ..)、統計の保存、および電子メール/ページ(レポート)による情報の提供。 問題は、さらに機能がある場合、どの機能なのかわからないということです。これは、「キー属性」という言葉の下で私が探しているものです。上記の名前は、私は答えを探しています、あくまでも参考のためのものである「使用理由やこれやが」オーバー簡素化「これを使用するか、ということ」。 一部のライブラリはC ++ / VBAで記述され、.NET(C#)環境で開発しています。

3
開発者は、プッシュ後にCIパイプラインが完了するのを待つか、次のタスクを開始する必要がありますか
私の会社はCI / CDを統合しています。これまでのところ、私が理解しているものからCIを実装しています。現在、開発者がコードをgitリポジトリにプッシュすると、CIパイプラインが実行されます。 現在、CIパイプラインには、プロジェクトの構築と静的コード分析の実行が含まれており、コーディング標準に適合していることを確認しています。次にテストを実施します。ビルドと静的コードの分析には、現在約3分かかります。私が読んだことからすぐに問題を修正することは、CI / CDにとって重要です。単体テストを追加すると、パイプラインの実行に約10分かかることが予想されます。 したがって、私の質問は、CIパイプラインが完了するのを待つか、次のタスクに進んでパイプラインの問題が存在する場合はそれを修正するためにプル/マージリクエストを行う必要があるかということです。または、座ってパイプラインの実行を監視する必要がありますか?

3
Python Webアプリケーションを作成する1人の開発者にとって、良いdevopsアプローチは何ですか?
一部の読者にとってこの質問は信じられないほど些細なことのように思われますが、開発者であるが、マニュアル以外の方法でアプリをデプロイした経験がほとんどない人としては、ある意味で、期待どおりに、それが理解できることを願っていますさまざまなアプローチやツールの数を確認するのは非常に難しいので、正しい方向に進むために少しアドバイスをすることができました。 私は開発者ですが、今は限られた時間の中でのみです。これまで私はJavaを使用してWebアプリケーションを構築しており、warファイルをTomcat環境にデプロイして、物事を適切にカプセル化しておくことにかなり満足しています。 私は現在PythonとDjangoで作業していますが、デプロイする必要があるポイントに近づいたら、できる限り自動化し、確実にデプロイできるようにするための確固たるdevopsワークフローをセットアップしたいと思いますが、使用例は比較的単純です。自分のニーズに合わせて過剰に設計され、時間の多大な投資を必要とする大きな脂肪のツールセットを学習したくないので、アプリのコーディングを使用します。 ですから、大きな開発エコシステムのセットアップと学習に膨大な時間を費やすことなく、確実にアプリをデプロイして管理することができる中立的な立場を探しています。 さらに詳細... 環境 Macで開発し、PyCharmを使用してDjango 2、Python 3をビルドしています。 ソフトウェアのバージョン管理にはgit(githubではない)を使用しています。 私は他の言語やスクリプト言語に慣れており、bashはあまり好きではありませんが、いくつかの(おそらくかなりアマチュアっぽい)bashスクリプトを書いています。私はPerlにも手を出しましたが、これは実際には手を出すための言語ではないことに気付きました(つまり、適切に学習するために時間を費やす必要があります)。 VPS環境、おそらくDigitalOceanに展開するつもりです。 私のアプリはミッションクリティカルではありませんが、サイトがダウンした場合、それがアプリを再起動するか、サーバーを再起動するか、別のサーバーに移動するかにかかわらず、ダウンした場合に確実に回復する方法が必要です(またはその他)。 特定の要件 アプリを受け取るための新しい環境をセットアップする機能。 これまで私が学んでいる間、これは手動で行われ、それを行うたびに、新しいDropletをゼロから始めました。これをはるかに単純化(自動化)して、緊急時に新しい環境をセットアップしなければならない場合でも確実に行えるようにしたいと思います。 可能な限りライブと同じステージング環境にアプリをデプロイする機能。理想的には、継続的インテグレーションアプローチを使用してgit pushによってトリガーされる自動化プロセス(これまで行ったことがない)と同じです。 ステージング環境でのアプリに満足したときに「ボタンを押す」機能。理想的には自動的にライブ環境にプッシュします。 サイトを監視する方法(ページへの投票だけで十分です) ライブサイトでアプリまたはサーバーの障害から回復する必要がある場合に、ライブサイトを別のサーバーに切り替える方法。青緑のアプローチがうまくいくと思いますか? 何を試したり検討したりしましたか? Djangoアプリを使用してライブ環境を手動で設定し、変更があった場合は新しいコードベースを手動でコピーします。これは人為的なミスが発生しやすいと感じており、デプロイでミスをすると回復不可能なエラーが発生することを恐れています。 Docker。Dockerについて知ったときは夢が叶ったように思えますが、少し実験と研究を行った後、これを実行して管理するためにどれだけ多くのことを学び、知る必要があるかに悩んでいます。いったん機能するようになるとリスクは非常に低くなるので、これは価値があるかもしれませんが、現時点では、私が期待しているよりも大きな時間を投資しているように感じます。 Bashスクリプト。それらを使用して、元の環境をセットアップし、アプリの更新などの特定のタスクを実行します。これについての私の心配は、スクリプトがテストを必要とするコードになることであり、この方法で信頼できるツールセットを構築するには多くの時間がかかるのではないかと心配しています。 私は、フローティングIPアドレスに関するDigital Oceanのオプションと、かなり賢明なように見える「ブルーグリーン」アプローチのために2つのサーバーを使用する機能を見てきました。このルートに進んだ場合でも、展開を自動化できる必要があります。 だから...私は、リスクの最小化(例:更新によってライブアプリが破損するリスク、または障害から回復できなくなるリスク)と時間の最小化の間の適切なバランスを見つけるdevopsアプローチに関するアドバイスを探しています環境とワークフローをセットアップするために必要な投資。

2
データサイエンスパイプラインとモノリティックモデルblob
通常、DevOpsの重要なトピックの1つは、ソフトウェアアーティファクトの自動作成と配信をどのように処理するかです。 データサイエンスの台頭により、新しいタイプのアーティファクトが存在します。たとえば、訓練されたニューラルネットや他の機械学習モデルを表すモノリティックバイナリブロブです。このようなblobはサイズが数GBになる可能性があり、その作成は組織をCI以前の時代に戻す標準化されたAFAIKにはまだなっていません。それにもかかわらず、彼らは自分のバージョンと関連するトレーニングデータのコレクション(コーパス)を持っています。これらは急速に成長する傾向があります。 DevOpsメソッドを使用してこの新しい課題に対処するためのベストプラクティスは何ですか?

2
JFrog ArtifactoryまたはJFrog Bintrayのどちらを使用するか?
私たちは実際にプロジェクトのパッケージ管理システムを探しています。ターゲットはシンプルで、パッケージ(アプリとミドルウェア)を保持し、CI / CDツール(Jenkins、Ansible、Docker ...)で使用するための集中システムを備えています。 JFrog ArtifactoryとJFrog Bintrayを発見したオプションを探しました。彼らは両方とも同じ仕事をしているように見えますが、JFrogが同じオプションで2つの並行製品を維持しているとは思いません。 ArtifactoryとBintrayの違いは何ですか? どのようにしてどちらを選ぶか、そしてその理由は?

1
gitlab-runnerをgitlabと同じdockerホストで実行するように構成するにはどうすればよいですか?
Doclabコンテナでgitlabインスタンスを実行しています。次に、同じホストでgitlab-runnerをセットアップします。両方が実行されています: docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 279473dceb2f gitlab/gitlab-runner:alpine "/usr/bin/dumb-ini..." About a minute ago Up About a minute gitlab-runner 6d7af0d6b946 gitlab/gitlab-ce:latest "/assets/wrapper" 2 hours ago Up 2 hours (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8022->22/tcp gitlab Dockerイメージを共有ランナーとして登録しました。 concurrent = 1 check_interval = 0 [[runners]] name = "default shared …

1
JenkinsからAWS Lambda関数をデプロイするにはどうすればよいですか?
私はジェンキンスを通じてデプロイしようとしている単純なラムダ関数を持っています- public String handleRequest(String input, Context context) { String output = ""; if (input.isEmpty()) { output = "No input provided"; } else { output = "Hello, " + input + "! Checking invocation - 1"; } return output; } 私は問題なくEclipseのAWS Lambdaプラグインを介してこれをデプロイして呼び出すことができます。 私はJenkinsのAWS Lambdaプラグインを使用しており、そのドキュメントに従っています。 私はGitリポジトリをソースとして提供しています。 アーティファクトの場所- src/main/java/ ハンドラー名- lambda.Hello(lambdaはパッケージ名、Helloはクラス名です)。lambda.Hello.handleRequest、 lambda.Hello::handleRequestおよびその他のバリエーションも使用してみました。 Jenkinsはビルドは成功したと言っていますが、AWSコンソールでテストすると、 …

3
Jenkins Pipelineとstash Pull Request BuilderがPRの作成/更新で機能しない
以下は、Jenkins Pipelineを使用するために必要な要件であり、Jenkins Pipelineに初めて参加しました。 開発作業を完了し、変更をBitbucketにプッシュした後、ユーザーはプルリクエストを作成します。 プルリクエストを承認するには、成功したJenkinsビルドが少なくとも1つ必要です。これにより、プルリクエスト用にチェックインされたコードのビルド結果のみを取得したいと思います。 プルリクエストが作成/更新されると、Jenkinsは実際の継続的な統合のために自動的にトリガーされます。 ビルド結果はBitbucketに報告されます。 Stash Pull Request Builderとstash Notifierを使用して、通常のフリースタイルプロジェクトで機能する上記のプロセスを実行しました。 Jenkinsパイプラインを使用して同様の機能を移行する必要があるため、以下のようにjenkinsジョブを作成しました。 PRブランチをチェックアウトしてビルドをトリガーするパイプラインスクリプトは次のとおりです node { stage('Checkout') { checkout( [ $class: 'GitSCM', extensions: [ [$class: 'CleanCheckout'], ], branches: [ [name: ''] ], userRemoteConfigs: [[ credentialsId: 'id', url: 'repourl.git' refspec: ('+refs/pull-requests/*/from:refs/remotes/origin/pr/*/from'), branch: ('origin/pr/${pullRequestId}/from') ]] ]) } stage('Build') { sh 'make' } …

2
.NETプロジェクトのバイナリリポジトリの最良の方法
私は.NETプロジェクトに非常に慣れていないので、.NETプロジェクトのバイナリを保存するのに最適なツールはどれかと思います。.NETプロジェクトのバイナリをアーティファクトに保存するのはどのように良いのですか。その理由は何ですか。一般的に1つの回答が可能ですコメントは役に立ちます。

4
事前検証された変更が正常に行われると、捕捉されるべきであった回帰がどのように引き起こされるのでしょうか?
CIのコンテキストでは、統合ブランチの品質レベルを上げるために一般的に使用される指標の1つは、コミット前の品質検証の必須セットです(通常、一部のアーティファクトの構築、ユニットテストの実行、さらには機能/統合テストの一部も含まれます)。 ただし、CIシステム検証では、これらの必須の事前コミット検証でカバーされると想定されていた領域で、一部の回帰(ビルドの破損、さまざまなテストの失敗)が検出されます。 これらの回帰の分析中によく聞かれる議論は、回帰の根本原因として識別された変更をコミットした開発者が、そのようなすべての検証に成功したというものです。そして多くの場合、この主張は次のことを示す確固たる証拠によって裏付けられています。 変更の最終バージョンに達した後、ブランチの先端に基づいて新しいワークスペースに移植されました 必要なアーティファクトはゼロからビルドされました(そのため、ビルドは完全に問題なく、キャッシュ関連の問題などはありませんでした) 問題の領域をカバーし、回帰を検出する必要があるものを含む、すべての必須テストに合格 断続的な誤検知はそれぞれの検証に影響しません ブランチへの変更をコミットするときにファイルのマージは検出されませんでした 新しいワークスペースがプルされたため、変更されているファイルのいずれもブランチでコミットされた他の変更の影響を受けなかった 規定されたすべてのプロセスと実践に正しく従っているにもかかわらず、ソフトウェアの変更がそのような退行を引き起こすことは本当に可能ですか?どうやって?

3
非常に大規模なプロジェクト/チームの継続的な統合はどのように拡張できますか?
従来、CIシステムは、統合ブランチ内のコードの品質のみを監視し、回帰が発生したときに通知します。修理には人間の介入が必要です。 同じブランチで作業する開発者の数が増えると、破損/閉塞のリスクが高まります。最終的には、破損が修正されるまでに平均して新しい破損が現れるポイントに到達します。ブランチの進行は実質的に無視できます。 後でマージされる別々の統合ブランチでそれぞれ作業する複数のチームに分割することは役立つかもしれませんが、関連するチャーン/ノイズ/技術部門を追加しながら、必要な統合を後で遅らせるだけなので、プロジェクトの期間を大幅に延長します個々のブランチのマージによる部分的な統合。また、各ブランチのCIセットアップ、それぞれ独自のビルド/ QAリソースなどにより、コストも増加します。また、全体的な品質が必ずしも向上するとは限りません。 スケーラビリティは、せいぜい、疑わしいものです。 このような大規模なプロジェクトを実際にスケーリングする方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.