2017-02-20 9 views
0

gitlab-ciを使用して展開プロセスを自動化したいと思います。私は現時点でssh経由で手動で行っています。手順は次のとおりです。gitlab-ciを使ってdockerで.NETコアプロジェクトを構築する

ビルド:

  • DOTNETが
  • DOTNET

を公開。これは、の.dllの完全なディレクトリを私に残しを復元します。私は、ドッキングウィンドウコンテナにこれらを展開したいので、私は実行します。

  • ドッキングウィンドウは
  • ドッキングウィンドウの実行

は、しかし、私がいる

  • ドッカRMを停止
  • ドッキングウィンドウを構築します同じ.gitlab.ci.ymlファイルで両方を行う適切な方法を見つけることが困難です。

    microsoft/dotnet:latestのドットネットツールとdocker:latestのドッカーcliツールが必要です。

    これらの画像のそれぞれに基づいて2つの段階を試みましたが、出力は共有されていません。これを解決するために、私はartifactを使ってみましたが、アップロードに失敗しました。

    私はこのオンラインの例を見つけることができないので、私はやってはならないことをやっているのだろうかと思います。

  • 答えて

    1

    docker runをビルドパイプラインで実行している理由、またはartifactが機能しない理由がわかりません。この正確なことは、artifactdependenciesでステージに向かっています。

    あなたのニーズに合わせてビルドイメージをカスタマイズしなければならないのは、とにかく普通のことです。ビルドイメージの場合、dockerdotnetが必要なようです。ビルドイメージとして使用するDockerfileを作成し、microsoft/dotnetから継承させます。次に、そのイメージにdockerをインストールします。コンテナがドッカーデーモンを使用できるように、/var/run/docker.sockにマウントすることを忘れないでください。

    新しいDockerfileは次のようになります。お使いのコンピュータ上の画像を実行するには

    FROM microsoft/dotnet 
    
    RUN echo deb http://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list && \ 
    apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D && \ 
    apt-get update && \ 
    apt-get install -y docker-engine 
    

    あなたはあなたがすることができます、その後、ランナー構成ファイルで/var/run/docker.sockをマウントするGitLabを設定

    docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock yournewimage 
    

    を使用gitlab-ci.ymlに新しい画像を使用してください。

    +0

    アーティファクトの問題に悩まされている現在、実際にはドッカーを使用していません。しかし、最終的には、CIパイプラインで、各コミット時にイメージをマスターしてマスタにすることを望みます。 私はあなたのDockerfileを間違いなく試みます。人工物が働いていても、私はこの解決法を好むかもしれないと思う。私は現時点では少し忙しいですが、数日後にあなたのところに戻ってきます。 –

    +0

    Dockerfileありがとうございます。その部分は魅力的に機能しました。私はここに記載されているように私の設定を変更しなければならなかった:https:// gitlab。com/gitlab-org/gitlab-ci-multi-runner/issues/1905 アーティファクトの問題が発生しました。私は誤って、最後のものが同じイメージである限り中断したところで、各ステップを続けることができると考えました。 –

    +0

    ちょうどこれに戻ります。私は回避策を見つけたので、直接新しい問題を直接解決しました。私はしかし、nginxの背後にあるgitlabがアーティファクトの問題であり、nginxのリクエスト制限を増やすことでこの問題が解決するかもしれないと思われます。 –

    関連する問題