2
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 5 years have passed since last update.

Deployer を使ってWindows環境とLinux環境に自動デプロイ出来るようにする

Posted at

はじめに

今日もニッチ記事
Windows環境とLinux環境の両方にデプロイしたい時の対応方法です
このような場合、コマンドの自由度が非常に高い Deployer が非常に有効です

大前提

Windows環境は PowerShell が入っている前提で色々書いてます

公式ドキュメント

最初のinstall

composer を使って管理しましょう!
composer がすでに入ってるPHP系のプロジェクトだと相性が良さそうですね
それ以外だと、composer から入れてください

$ composer require deployer/deployer --dev
$ composer require deployer/recipes --dev
$ ./vendor/bin/dep init

Hostの設定を使用

  • stage を WindowsLinux で分けたほうが deploy_path 管理的に楽
host('YourWindowsHostName')
    ->hostname('1.1.1.1')
    ->stage('windows')
    ->roles('apps')
    ->set('deploy_path', 'C:\Apps\application');
host('YourLinuxHostName')
    ->hostname('1.1.1.2')
    ->stage('linux')
    ->roles('apps')
    ->set('deploy_path', '/Apps/application');

task を作ろう

git から clonepull するだけのタスクを書いてみました


// New Task
desc('Update code');
task('deploy:deploy_code', function () {
    $repository = trim(get('repository'));
    $branch = get('branch');
    $stage = get('stage');
    $recursive = '--recursive'; // include subproject
    $quiet = '-q';              // quiet
    $delimiter = '/';           // path delimiter
    $command_delimiter = '&&';  // command delimiter
    $options = [
        'tty' => get('git_tty', false),
    ];
    if ('windows' === $stage) {
        $delimiter = "\\";
        $command_delimiter = ";";
    }
    $application_path = "{{deploy_path}}$delimiter{{application}}";
    if ('windows' === $stage) {
        $dir = run("Test-Path $application_path", $options);
    } else {
        $dir = run("if [ -d $application_path ]; then echo 'True'; fi");
    }
    if ($dir == "True") {
        run("git clone $recursive $quiet $repository $application_path 2>&1", $options);
    } else {
        run("cd $application_path $command_delimiter git pull $quiet 2>&1", $options);
    }
});

使い方

$ ./vendor/bin/dep deploy_code windows
$ ./vendor/bin/dep deploy_code webapp

ポイント

  • PowerShell が動けば基本何でもできる!
  • Windows特有の設定とLinux特有の設定は最初に定義すればほぼほぼ共通化出来る
  • WindowsとLinux同時にアップするのを考えるのは大変なので、LinuxとWindowsは別々にアップを実行するようにすれば設定は意外と簡単にかける

最後に

Windows環境の自動デプロイ(CD)ってのは事例が少ないですが、やろうと思えば出来ます
Windows環境だからといって諦めずにやってみてください!

2
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
2
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?