2017-07-05 11 views
0

Ruby on RailsプロジェクトのあるGitLabをホストしました。私はCIスクリプトを持っています。それはプロジェクトでDockerイメージを構築し、それをGitLabレジストリにプッシュします。最後に、そのイメージをステージングサーバーに展開する必要があります。GitLab CI + Docker +を使用してRailsアプリケーションを配備する方法はありますか?

stages: 
    - test 
    - build 
    - deploy 

# ... 

build_image: 
    stage: build 
    image: docker:latest 
    services: 
    - docker:dind 
    variables: 
    DOCKER_DRIVER: overlay 
    script: 
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab.host.com:4567 
    - docker build -t gitlab.host.com:4567/group/app:$CI_BUILD_REF_NAME . 
    - docker push gitlab.host.com:4567/group/app:$CI_BUILD_REF_NAME 
    only: 
    - master 

私はAnsibleとやり取りしていると考えていましたが、それを行う方法を理解できませんでした。誰かが何を探すか、何を読むかをお勧めしますか? Thanx

答えて

1

CIでAnsibleを使用しないことをお勧めします。これは通常、CIを実行しているコンテナがこれを動作させるためにAnsibleをインストールする必要があるため、事態を複雑にします。これは実行可能ですが、私はこのような設定をしています。別の欠点は、Anipalが出力を「食べる」ということです。エラーがある場合は、それをフォーマットされていない方法で印刷します。
あなたの意思がCIでAnsibleを使用していないのであれば、それをAnsibleと一緒に配備するだけでも、これに対しても助言をする必要があります。これにより、ステージングサーバーの更新を希望するすべての人があなたに連絡を取るか、ステージングサーバーとプレイ可能なプレイブックの両方にアクセスする必要があります。彼らはまた、最後の更新が行われたときに自分自身に尋ねるでしょう。

マシンにsshを実行する別のステップでコードを書き込む方がよいでしょう。イメージをプルして前のプロセスを停止し、新しいプロセスを起動します。 Gitlabで「ステージング」環境を定義することもできます。最後の更新が完了したときに通知されます。これは、他の開発者にとっては便利です。
秘密のssh鍵をGitlabの秘密変数に入れて、最初の展開ステップとして〜/ .ssh/id_rsaに入れることができます。これにより、ステージングマシンにアクセスできます。あなたは自分のユーザのgitlab-stagingを呼ぶべきである。そうすれば、ホスト上のアクセスログをこの設定に戻すことができる。

ご不明な点がございましたら、お気軽にお問い合わせください。

関連する問題