2017-05-26 11 views
0

まずはCIとGitLabを初めて使うので、実際には意味をなさないものを言うかもしれません。それが起こった場合私は謝罪し、詳細/情報を求めてください。GitLabでパイプラインを実行しているときに外部データベースを使用

私はGitLabでホストされているプロジェクト(Laravel)を持っており、そのCIを使ってテストを実行しています。現時点では、私のテストではデータベースを使用せず、すべて正常に動作します。

私は今、データを含むいくつかのテストを行う必要がある状況にあります。私が直面している問題は、3つのデータベースがあります.1つはアプリケーションで管理し、もう1つはレガシーデータベースです。

パイプラインが実行されるたびに、アプリケーションによって管理されるものが再作成されます。テスト用には使い捨てであり、データ用のファクトリを使用します。だからここに問題はない。

しかし、他の2つは、私が言ったように、遺産であり、データを読み取ることを離れて、私はそれらを支配しません。

私のテストでは、それらのデータベースのデータが必要ですが、別のサーバー(UATサーバー)でホストされているデータベースを使用するためにgitlab-ci YAMLファイルを書き込む方法がわかりません。

誰かが助けてくれることを願っています。

+0

しかし、問題は何ですか?あなたはあなたのテストをデータベースに向けるだけで、それを使用します。セキュリティで保護された接続を設定する方法についてもっと詳しく知りたいですか?おそらく、ローカルネットワークの構内で実行されているデータベースに接続する方法はありますか?レガシーデータベースからデータをダンプし、CIで再作成する方法は? –

+0

データベースを指し示すには、YAMLファイルにユーザー名とパスワードが必要です。セキュリティ上の理由から、私は好きではありません。私は何とか(私はすでに私のウェブサイトのIPアドレスに基づいています)何らかの形でアクセスを制限することができればそれを検討しますが、CIのためにそれを達成する方法を考えることはできません。 データベースを再作成するたびに高価になり、ダンプをどこかに保存する必要があります。これはセキュリティの理由から好きではありません。 – giuliot

+0

最初のものはhttps://docs.gitlab.com/ee/ci/variables/#secret-variablesで解決できます。多分安全な接続を設定するためのVPNです。あるいは、レガシーデータベースと同じLAN上に専用のランナーを設定することもできます。しかし、あなたの問題は、CIの設定ではなく、セキュリティに関するあなたの懸念の詳細です。 –

答えて

0

私は@ jakub-kaniaとのやりとりの後、私自身の質問に答えています。

私がやったことは、gitlabランナーとDBをホストしているサーバーとの間にsshトンネルを作成し、GitLabの秘密変数を使用してDBのユーザー名とパスワードを格納することでした。

これはあなたがする必要があります。

  1. 秘密鍵と公開鍵のペアを作成します。別の場所でどこにコピーするかは問題ではありません。

  2. DBをホストしているサーバーで新しいユーザーを作成します。これは厳密には必要ではありませんが、既存のユーザーを使用することもできますが、安全性が向上します(--disabled-password--disabled-loginのオプションを使用して作成できます)。

  3. 先ほど作成した公開鍵を新しいユーザーのauthorized_keysファイルに追加します。

  4. このページの指示に従いますhttps://docs.gitlab.com/ee/ci/ssh_keys/README.html#ssh-keys-when-using-the-docker-executor

  5. BLOG_DB_USERNAMEBLOG_DB_PASSWORDという2つのDBユーザー名とパスワードの秘密変数を作成します。

  6. 秘密変数に格納されているユーザー名とパスワードを使用するようにアプリケーションを構成します。私の場合、私はLaravelのアプリを持っているので、私は、私は、これはあまりにも他の誰かを役に立てば幸い私の.gitlab-ci.ymlファイル

    - echo >> .env 
    - echo "BLOG_DB_USERNAME=$BLOG_DB_USERNAME" >> .env 
    - echo "BLOG_DB_PASSWORD=$BLOG_DB_PASSWORD" >> .env 
    

のスクリプトセクションに以下を追加しました。

関連する問題