1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLServerだからといって諦めずに、CircleCIでテスト自動化する(2021年更新版)

Last updated at Posted at 2021-01-23

はじめに

2017年に書いた「SQLServerだからといって諦めずに、CircleCIでテスト自動化する」が色々古かったので、アップデートしてみました。

尚、記事と合わせてソースコードも更新しました。
imunew/php-with-docker-mssql

変更点

変更したポイントを列挙していきます。

Microsoft SQL Server on Linuxが新しくなった

詳しくは「Docker内の php から SQL Server に接続する(2020年版)」を参照いただきたいのですが、DockerイメージとPHP用のドライバを更新しました。

FROM php:7.4

# Install basic packages and extensions
RUN apt-get update \
  && apt-get install -y zlib1g-dev libzip-dev wget gnupg \
  && docker-php-ext-install zip opcache

# Composer install
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
ENV COMPOSER_ALLOW_SUPERUSER 1

# Install SQL Server extensions
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
RUN apt-get install -y unixodbc-dev libgssapi-krb5-2
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN docker-php-ext-enable sqlsrv
RUN docker-php-ext-enable pdo_sqlsrv

CMD ['php']

CircleCIの設定ファイルをv1からv2

CircleCIの設定ファイルをv2形式で書き直しました。
以下のドキュメントが参考になりました。

.circleci/config.yml
version: 2
jobs:
  test:
    docker:
      - image: php:7.4
        environment:
          DEFAULT_DSN: sqlsrv:Server=localhost;
          DEFAULT_USERNAME: sa
          DEFAULT_PASSWORD: p@ssw0rd
      - image: mcr.microsoft.com/mssql/server:2017-latest
        environment:
          ACCEPT_EULA: Y
          SA_PASSWORD: p@ssw0rd
    resource_class: medium
    steps:
      - run:
          name: Install packages and PHP extensions
          command: |
            apt-get update \
            && apt-get install -y zlib1g-dev libzip-dev unzip wget gnupg git \
            && docker-php-ext-install zip opcache
      - run:
          name: Install MSSQL PHP extensions
          command: |
            curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
            curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
            apt-get update
            ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
            apt-get install -y unixodbc-dev libgssapi-krb5-2
            pecl install sqlsrv
            pecl install pdo_sqlsrv
            docker-php-ext-enable sqlsrv
            docker-php-ext-enable pdo_sqlsrv
      - run:
          name: Install composer
          command: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
      - checkout
      - run:
          name: Install dependencies
          command: |
            composer install --no-interaction --prefer-dist
      - run:
          name: Run Tests by phpunit
          command: |
            php app/bootstrap.php
            vendor/bin/phpunit
workflows:
  version: 2
  build-workflow:
    jobs:
      - test

docker-compose.ymlVersion 1からVersion 3

docker-compose.ymlのフォーマットが古かったので、Version 3で書き直しました。

docker-compose.yml
version: "3"

services:
  php:
    build: ./docker/php
    env_file: ./docker/php/.env
    volumes:
      - .:/app/
    working_dir: /app

  mssql:
    image: mcr.microsoft.com/mssql/server:2017-latest
    env_file: ./docker/mssql/.env
    ports:
      - "1433:1433"

おわりに

3年でこんなに変わるのかと思って調べてみたら、以下のような時系列でした。

ソフトウェアの寿命は本当に短いですね。
ではでは。

追記(2021−01−27)

CircleCI Japanさんにこの記事を紹介してもらいました。
https://twitter.com/CircleCIJapan/status/1354225129207836673?s=20
ありがとうございます :bow:

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?