連続統合を学ぶ:自己ホスティングドローンCI



最初のもの最初:なぜ連続積分(CI)はとにかく?
外は競争が多い.あなたが見ているすべての企業は、共通の1つのものを持っている-顧客を幸せに.あなたは品質と高速新機能を提供すると、ゲームに勝つ.全世界は、毎日配達される良質なソフトウェアに向けられます.
あなたはその野菜配達会社を見ます、それは実はソフトウェア会社です.はい、あなたは行くことができるとどのように自分のウェブサイト上で自分の注文を取得する方法を参照してくださいチェックすることができますどのように注文を処理し、納期と時刻を設定し、最終的に顧客に野菜を提供します.誰がこれらのすべてのステップは非常に速く、組織的な方法で一歩一歩ですか?開発者によるソフトウェア
そういうわけで、すべての会社は、最近ソフトウェア会社になっています.
連続的な統合は、あなたのソフトウェア配信を自動化する最初のステップです.名前が示すように、開発者は別の開発者による仕事の統合を含みます.そこでは、開発者が自分のコードを非常に頻繁に変更し、メインブランチにマージし、コードコミットが発生したときに自動ビルドをトリガーし、指定されたテストのコードを検証します.これは開発者が開発プロセスの初期にバグとエラーを見つけ、生産環境に入るのを防ぎます.
ドローンを知らない人のために、我々が始める前に、簡単な導入はここにあります.ドローンは、自動的に構築、テスト、およびワークフローを解放する近代的なオープンソースCIプラットフォームです.ドローンは、特にDockerコンテナのために作成され、それはGOで書かれています.

ゴール
Drone CIを使用することは、コードがすべてうまく動作していることを確認するコードをテストし、コードコミットが発生するたびにコンテナーをビルドすることです.

シナリオ
開発者はGithubでコードをコミットし、これはドローンCIをトリガします.ドローンCIは、指定されたテストに対してコードとテストを統合し、コンテナーイメージを構築し、それをあなたのドッキングハブアカウントにプッシュします.


事前の要件
  • ギタブアカウント
  • あらゆるクラウド・プロバイダ
  • からの仮想マシン

    ドローンCIの設定を始めましょう
  • 私たちのローカルWebサーバを公開するためにパブリックURLを設定する必要があります.これを行うには、ngrokで[ ngrok ] https://ngrok.com/を使用できます.それを設定するCOMとfollow these instructions.仮想マシンへのアクセスがあれば、これを省略できます.私は仮想マシンを使ってドローンCiをセットアップしてアクセスします.
  • あなたの好みのクラウドベンダーを選択し、仮想マシンを取得し、実行します.この例では、仮想マシンを作成するためにAzureクラウドサービスを使用しています.VMの公開IPアドレスを書き留め、HTTP経由で公開することを確認してください.
  • 今、あなたのGitHubアカウントにログインし、新しいOAuthアプリを作成します.このためには、VMのIPアドレスを用意する必要があります.これに加えて、クライアントIDとクライアントの秘密を保存する必要があります(この場合は、この手順で生成する必要があります).ログインするAuAuthアプリケーションを作成するには、ホームページのURLで指定するIPアドレスを介してgithub認証します.

  • サーバーは、サーバーランナーモデルで動作します.サーバはドローン設定ファイル(ドローン設定ファイル:. drone . yaml)に従ってどうするかについてランナーに指示します
    今、無人サーバーとランナーを設定します.これはDockerを通して行われます.ファイル名を作成します.envと以下のように環境変数を指定します.
    # Server configuration
    DRONE_SERVER_HOST=<ngrok hostname>
    DRONE_SERVER_PROTO=http
    DRONE_GITHUB_CLIENT_ID=<github client ID>
    DRONE_GITHUB_CLIENT_SECRET=<github secret>
    DRONE_RPC_SECRET=<Drone secret>
    DRONE_TLS_AUTOCERT=false
    DRONE_USER_CREATE=username:<github_username>,admin:true# Runners configuration
    DRONE_RPC_HOST=<ngrok hostname>
    DRONE_RPC_PROTO=http
    DRONE_RUNNER_NAME="Drone.io_runner" # It CANNOT contain spaces!
    
    私たちはngrokの代わりにVMを使っているので、私たちはVMのIPアドレスをDroneHow ServerRankホストの場所に共有します.
    あなたの端末に以下のコマンドを実行することによって
    openssl rand -hex 16
    
    あなたのVMのIPアドレス
  • 仮想マシンを起動し、ssh
  • 経由で接続します.
  • 現在、Docker Composeという名前のファイルを作成する必要があります.両方の無人サーバーとランナーを次のコンテンツを起動する
  • version: '3.8'services:
      drone:
        image: 'drone/drone:2'
        volumes:
          - "/var/run/docker.sock:/var/run/docker.sock"
          - "./volumes/drone:/data"
          - '/etc/localtime:/etc/localtime:ro'
        restart: always
        ports:
          - 80:80
        env_file:
        - .env  drone-agent:
        image: drone/drone-runner-docker:1
        command: agent
        restart: always
        depends_on:
          - drone
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - '/etc/localtime:/etc/localtime:ro'
        env_file:
          - .env
    
  • 次のステップは、仮想マシンにこれらのファイルを格納/保存する必要があります.
  • [コマンドを使ってファイルを作成して保存することで、これを行うことができます.
    VimENVプレスエンター
    ファイルの内容を入力し、ペーストをコピーするには、ウィンドウを取得します.ファイルの内容
    ESC + Shift , Semicolon + W + Q +コマンドでファイルを保存します.ヒットエンター
    Dockerの作成のために同じことをしてください.YMLファイル
  • 仮想マシンにインストールされたDockerとDockerの両方を作成します.
  • 以下はサンプルスクリプトです.
    curl https://gist.githubusercontent.com/hrittikhere/3117497bfaf1736a144b0a3d9463c807/raw/07f6dc8c7f3c4aad093d4075e5ebcca106304c72/pavan.sh | bash
    
    それから、
  • は、sudo Dockerがドローンを始めるために準備するのをします.ホストパブリックIPをコピーしてブラウザに貼り付けてください.
  • タナヤ!
  • は続けて、名前、電子メールIDなどのような必要な詳細を加えます
  • 次のステップで
  • 、ドローンはあなたのSCMツール
  • で認証するようお願いします
  • あなたはドローンダッシュボードにリストされたリポジトリを見ることができます.
  • 今、Githubに新しいリポジトリを作成します.ドローン.ドローンに指示を与えるルートフォルダのYMLファイル.また、何をすべきかについてコンテナに指示を与えるためにDockerFileを作成します.ところで、あなたはローカルでこれらのすべてのことをすることができて、GitHubにあなたのコードを押すこともできます.
  • ドローンMYLは、コミットをテストするための指示を含めることができます.しかし、このチュートリアルでは、より簡単なワークフローになります.
    .ドローン.YMLファイルは次のようになります.
    kind: pipeline
    type: docker
    name: hello-world
    
    steps:
    - name: docker  
      image: plugins/docker
      settings:
        # registry: docker.io
        repo: pavansa/bangaloretour
        username:
          from_secret: docker_username
        password:
          from_secret: docker_password
        tags: 
          - latest
    
    注意:[ DockerHukesユーザー名で、DockerHubのユーザ名を指定]
    Dockefileコンテナをビルドする手順が含まれます.しかし、このチュートリアルでは、以下に示すように、より簡単なdockefileを使います.
    FROM alpine
    CMD ["echo", "Hello World"]
    
    我々の無人機CIをテストするために、
  • は、我々のイメージを保存するためにDocker Hubの上に類似した倉庫をつくります.
  • あなたの無人ダッシュボードに移動し、ちょうどあなたがGithubに作成した新しいリポジトリを同期します.回同期が完了すると、特定のリポジトリに行くと秘密を設定します.あなたが設定タブにし、秘密に行くことによって行うことができます.

  • 最初の秘密としてDockerRainユーザー名を加えて、値を指定してください
    番目の秘密としてDockerRageパスワードを追加し、値を指定します
  • したら、あなたの秘密を追加し、それらを保存すると、右上隅に+新しいビルドタブに行くことができますし、それをクリックして、新しいタブは、以下に示すようにポップアップ表示され、作成をクリックします.
  • 前の手順でCreateをクリックすると、リポジトリからの変更を取得してドローンを聞いているドローンが表示されます.YMLファイル
  • は、ビルドが正常に始まり、ダッシュボードが
  • のように表示されます
  • すべてがうまくいけば、実行スレッドをクリックし、ビルドが成功したことを確認できます.

  • これは、我々がイメージをつくって、それをDockerハブに押しつけている方法です.
    最新の変更と最新の場合は、あなたのDockerハブに行くことによってこれを確認できます.

    さて、私たちはマシン上でdri ciをローカルにインストールしました:)
    ところで、あなたのパイプラインのグラフィカルな表現が表示されるグラフビューもあります.あなたはステージのいずれかをクリックすることができますし、それはあなたにもログが表示されます.それは簡単にあなたの問題をデバッグし、できるだけ早くそれらを修正することができます.

    ところで、ハーネスの連続配信は現在入手可能です!あなたはhereを試すことができます.
    ドローンCIの詳細については、official websiteを参照してください