LoginSignup
2
2

More than 5 years have passed since last update.

自動テストがやりにくかったSQLServerに対して、CircleCIで自動テストをする道のり

Last updated at Posted at 2018-12-06

はじめに

弊社システムはAWSで動いているものやAzureで動いているものなど色々な物があります
今回は、Azureで動いているSQLServerについてとりあげてみたいと思います

やりたいこと

単体テストをいっぱい書いたけど、SQLServerが個人の環境にしかないので、CI上でテストが通ることを確認したい

SQLServerについて

注意点

実際の利用方法

circleci/config.yml
ersion: 2

jobs:
  build:
    docker:
      - image: microsoft/mssql-server-linux:2017-CU8
        environment:
          - ACCEPT_EULA: Y            # 認証をパスさせる
          - SA_PASSWORD: 1234abcD     # rootのパス

使ってみようとして気づいた事

あれ。。これ、立ち上げただけでDBないじゃん。。。。
プログラムから利用しようとしても出来ないじゃん。。。

そんなわけでDB作成スクリプト

<?php
$sql = <<<SQL
IF DB_ID(N'testing') IS NULL
  CREATE DATABASE testing;
SQL;

$username = getenv('DB_USERNAME');
$password = getenv('DB_PASSWORD');

$pdo = new PDO('dblib:host=localhost', $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$pdo->query($sql);

PDOで入れたので、SQLにつなぐライブラリもインストール

- run: sudo ln -s /usr/lib/x86_64-linux-gnu/libsybdb.a /usr/lib/
- run: sudo pecl install sqlsrv-5.3.0 pdo_sqlsrv-5.3.0
- run: echo -e "extension=pdo_sqlsrv.so" | sudo tee /usr/local/etc/php/php.ini > /dev/null
- run: echo -e "extension=sqlsrv.so" | sudo tee /usr/local/etc/php/php.ini > /dev/null

うーん。結構面倒だった。。。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2