DevOps

自動テスト、継続的デリバリー、サービス統合と監視、およびSDLCインフラストラクチャーの構築に取り組んでいるソフトウェアエンジニアのためのQ&A

3
Jenkinsプラグインを展開する前に、どのように変更をテストしますか?
いくつかの機能を壊したプラグインのアップグレードにかまれたことがあるなら、この問題について考えたことがあるに違いありません。Jenkinsプラグインのアップグレードポリシーはどうあるべきでしょうか?変更を展開する前にどのようにテストしますか? 新しいバージョンをテストするためにダミージョブを実行するテストインスタンスを持っている人はいますか、バージョンをアップグレードしても何も壊れないことを祈っていますか?

1
curlを使用してRESTful APIをテストする体系的な方法は?
統合テスト中に、実際にRESTful API(または一般的なHTTPインターフェイス)を使用して繰り返し使用するケースに取り組んでいることに気付きました。bash+ cURLで確認します。 それはかなり乱雑に見え始め、維持するのが難しくなります。なぜ混乱をもたらすのですか? 典型的な使用例は次のとおりです。 URLがhttp応答コードを返すことを確認してください(例:200) その場合、コンテンツタイプが必要なMIMEと一致することを確認します 返されたコンテンツが何らかのパターンに一致することを確認するか、抽象的な検証手順に合格する 私がこれまでに見つけたのは、車輪を再発明することなく実行可能なオプションを検討することです。 PyCurlを試してください-すべてのcURLオプションを完全に実装することを期待してください。プロキシだけでなく、私が必要とするかもしれない他のスイッチ Pythonの組み込みユニットテストを使用する 次に、たとえば、チェックするサービスごとに1つのユニットテストを実行できます。 import unittest, pycurl class TestService (unittest.TestCase): def test_1(self): self.assertEqual(pycurl.returncode("some_url"), 200) def test_2(self): self.assertTrue(pycurl.response("some_url").matches ("xxx") ) def test_3(self): self.assertTrue (pycurl.ContentType("some_url").equal("xxx")) if __name__ == '__main__': unittest.main() これは理にかなっていますか、またはより高度な(しかし、複雑すぎずに取り上げて統合できない)ツールがありますか?

1
従来の開発および運用モデルとサイト信頼性エンジニアリングの違いは何ですか?
「SREは、ソフトウェアエンジニアに運用チームの設計を依頼すると発生します。」– サイト信頼性エンジニアリング Googleのサイト信頼性エンジニアリングブックがリリースされて以来、複数回、SREは既存の運用モデルまたはアプリケーションサポートモデルの拡張であると言われました。 Sysの違いを定義する質問がいくつかありました。管理者、DevOpsエンジニア、およびサイト信頼性エンジニア: SysadminとDevOpsエンジニアの違いは何ですか? SREとDevOpsの違いは何ですか? DevOpsを初心者に紹介するための有効な定義は何でしょうか? ただし、これらの質問や回答のいずれも、システム管理者とサイト信頼性エンジニアの違いを説明していません。 広義には、Googleのサイト信頼性エンジニアリングの実践と、ビジネス内の従来の分離された開発および運用機能との主な違いは何ですか。


5
チェックインとチェックアウトの違いは何ですか?
Software Configuration Managementを初めて使用する学生にSCMクラスを教えると、「What's the difference between checkin and checkout?」のような質問が出てきます。 そしてそのバリエーションは、そのような学生がこれらのSCMの概念について混乱することです(彼らはそれらを他の方法として理解しています)。 では、この重要なSCMの概念をそのような聴衆に説明するために、どのようなメタファーを使用できますか?
14 terminology  scm 

2
クラウドリソースの使用状況を追跡するにはどうすればよいですか?
JenkinsでAWSアプリケーションのデプロイを自動化しようとしています。 現在、UATなどのいずれかの環境でアプリケーションを更新する場合は、Dockerイメージをビルドし、現在のECSタスクを見つけて新しいイメージで更新し、実行中のECSクラスターを見つけて、タスクを更新します。 概して、継続的インテグレーション環境でクラウドリソースID(ECSクラスターID、ECSタスクID、EC2 IDなど)を追跡するためのベストプラクティスは何ですか?

1
パイプラインジョブでバックグラウンドプロセスを実行する
Jenkins宣言型パイプラインを使用して、バックグラウンドでjavaプロセスを実行する方法を探しています。以下はコードのスニペットです stage('Deploy'){ steps{ script{ withEnv(['BUILD_ID=dontkill']) { sh "nohup java -jar test-0.0.1-SNAPSHOT.war &" } } } } JenkinsのProcessTreeKillerを既に認識しており、すべての回答が同じことを提案しています。私は、運のないステップブロック内の環境を使用しようとしました。 Jenkinsバージョン:2.60.1 パイプラインプラグイン:1.1.7 どんな助けも大歓迎です。

2
chrootとDockerの違い
dockerとchrootの違いがわかりません。はい、レジストリのパッケージ化の点でいいです。しかし、どういうわけか私は余分なベルとホイッスルを備えたちょうどそのchrootの感じを得る。 何かが足りないのはわかっています。それらがどのように異なっているか、そしてchrootが同様のことをすることができるならdockerの必要性を知ることは素晴らしいことでしょう。 私はこのChroot対Dockerも十分に明確に見つけることができませんでした。

2
Dockerコンテナーをホストと内部の両方のブリッジネットワークに接続する
プライベート(--internal)Dockerネットワークと事前定義hostネットワークの間のルーターとしてDockerコンテナーを実行しようとしています。つまり、コンテナには2つのネットワークインターフェースが必要です。1つは「外部」インターフェースであり、すべてのホストIPアドレスにアクセスでき、もう1つは「内部」インターフェースであり、内部Dockerネットワーク内のコンテナーのゲートウェイとして機能します。 ルーターコンテナー自体は、コンテナーとの間でネットワークトラフィックのNATを実行します。 これら2つのインターフェースでコンテナーを実行するようにDockerを構成する方法は見つかりませんでした。私が得ることができる最も近いbridgeものは、割り当てられた2つのインターフェースを持っていることです。 手動で接続しようとすると、エラーが発生します。 # docker network connect host root_router_1 Error response from daemon: Container cannot be disconnected from host network or connected to host network 誰かがこれを達成する方法を、できればDocker Composeでさえ教えてもらえますか?

2
Kubernetes展開のDocker
兄弟ドッカーコンテナーを作成するサードパーティライブラリを使用しています: docker run -d /var/run/docker.sock:/var/run/docker.sock ... 上記のコンテナからKubernetesデプロイメントを作成しようとしていますが、現在次のようになっています: unix:///var/run/docker.sockにあるDockerデーモンに接続できません。Dockerデーモンは実行されていますか? /var/run/docker.sockデプロイメントyamlでボリュームとして宣言していないため、これは予期されています。 問題は、これを行う方法がわからないことです。/var/run/docker.sock展開yamlのボリュームとしてマウントすることは可能ですか? そうでない場合、Kubernetes展開/ポッド内からdocker兄弟コンテナを実行するための最良のアプローチは何ですか?

6
人員不足のDevOpsチームの兆候は何ですか?
DevOpsチームの人員不足の典型的な兆候とシグナルは何ですか?チームへの新規追加のリクエストをどのように正当化/説明しますか? 質問を一般的なものにしたいと思いますが、いくつかの追加情報があります。 現在、2人のDevOpsスペシャリストがチームとして一緒に働いていますが、製品の需要と量と複雑さが増大しています。チームへの新たな追加をリクエストすることを考えていますが、それが良いアイデアである理由を説明し、証明するのが困難です。

1
Jenkinsfilesをオンラインで検証できるツールはありますか?
現時点では、Jenkinsfileを編集していて、Jenkinsが問題を報告しない限り、実行させます。このアプローチには多くの時間がかかります。Jenkinsfileをコミットする前に構文を検証することを好みます。この問題を解決するツールはありますか? でgitlab URI、すなわちがあり/ci/lint、gitlabファイルを提出し、チェックボタンをクリックし、UIは、構文が正しいかどうかを示しますすることが可能になるという。

3
Jenkins宣言型パイプラインでArtifactoryプラグインを使用する
Jenkins Declarative Pipelineを使用して、ビルドプロセスを自動化します。特定の条件(Sonar、Checkmarx)に合格した場合にのみ、アーティファクトをリモートJFrogリポジトリに公開します。 少し調査した結果、Artifactoryプラグインがこれに役立つことがわかりました。しかし、宣言型パイプラインに統合する方法に関するドキュメントを見つけることができません。以下は、Jenkinsfileのコードスニペットです。 stages{ stage('Pre-Build'){ steps{ script{ def server = Artifactory.server 'LocalJfrog' def rtGradle = Artifactory.newGradleBuild() rtGradle.resolver server: server, repo: 'gradle-dev-local' rtGradle.deployer server: server, repo: 'gradle-release-local' rtGradle.useWrapper = true } } } } 自動公開を無効にしてもサーバー変数を再利用できないため、上記のコードでは条件付き公開を実行できません。

3
ローカル(特にWindows)を含め、どのようにgitの動作を強制していますか?
この.NETショップをsvnからgitに移行することに焦点を当てており、スイッチを切り替える前に解決策を見つけたいと思ういくつかの付随的な問題を特定しました。 この質問で特に質問しているのは、行末強制です。デフォルトでは、Windows用のgitは 'checkout crlf、commit lf'でインストールされます。これは、crlfの末尾のみで構成される(私が知る限り)ソースの束に対しては機能しません。 私は与えられた開発者が指示を与えられてもこれを正しく設定することを盲目的に信頼していることを知らないので、次のいずれか(または両方)を検討していますが、ここの誰かが別のルートを行った場合は興味がありました。 lf行の末尾(またはすべてのlf行の末尾)をチェックし、そのイベントで拒否する事前コミットフック。 グローバル設定に「現状のまま」を設定する、開発者に配布されるインストールスクリプト。 PSこれを書いているときに、svnからgitへの最初の変換がデフォルトの方法をコミットする可能性があり、人々がデフォルトに固執している限り、それもかなりシームレスです。デフォルトではない「現状のまま」でgitをインストールした.NETショップでgitを使用して開発者だったので、私もそこに自分の問題を作成しました(到着する前にすべてデフォルトになりました) 。ですから、私はまだ何らかの強制メカニズムに傾いています。
13 git  scm  windows 

2
複数のiOSプロジェクトの継続的統合インフラストラクチャ
iOS開発者として、私はこれまでに開発中のiOSプロジェクト用にCIおよびCCQ(= Continuous Code Quality)インフラストラクチャを作成しようとしていました。ほぼすべてのWebおよびAndroidプロジェクトにJenkinsとSonarQubeを使用しています(VM foreachプロジェクトを使用し、CIとCCQのインストールと構成は自動化されています)。しかし、iOSプロジェクトの場合、JenkinsはmacOSを実行しているコンピューターでビルドを行う必要があるため、そのための完璧なソリューションがあるかどうかはわかりません。 macOSを仮想化するソリューションを探していました。各プロジェクトで、仮想macOSを作成し、ビルドを処理するためにそこにJenkinsをスレーブとしてインストールします。ソリューションは完璧に見えましたが、macOSで2つ以上のVMを実行することは違法であるようです(もちろん、Macコンピューターでのみ) http://images.apple.com/legal/sla/docs/macOS1012.pdf ->ポイント2.B。したがって、これは私の場合の解決策ではありません。 私が読んだ別の一般的な解決策は、すべてのプロジェクトのすべてのビルドを処理するMacコンピューター(MacMiniかもしれません)を持つことです。この実装についてどう思いますか?いくつのプロジェクトを処理できますか?開発者は自分のプロジェクト(特にSonarQube)でいくつかの設定を行う必要があるかもしれませんが、安全ですか? 異なるポートを使用して、同じマシン上で複数のJenkinsおよびSonarQubeインスタンスを使用できますか?これは考慮すべき解決策でさえありますか? 上記のソリューションよりも優れている可能性のある他の実行可能なソリューションはありますか? 注:Jenkins + SonarQubeのデュオにはこだわりません。iOS開発に適した他のツールがある場合は、それらを共有してください。

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