feat: 内网 gitlab runner 部署到外网服务器
This commit is contained in:
parent
692d8324b4
commit
6d46aaff84
|
|
@ -1,4 +1,8 @@
|
||||||
@servers(['localhost' => '127.0.0.1'])
|
@if($remote)
|
||||||
|
@servers(['localhost' => '127.0.0.1', 'remote' => $remote])
|
||||||
|
@else
|
||||||
|
@servers(['localhost' => '127.0.0.1'])
|
||||||
|
@endif
|
||||||
|
|
||||||
@setup
|
@setup
|
||||||
if (empty($repository)) {
|
if (empty($repository)) {
|
||||||
|
|
@ -17,21 +21,45 @@
|
||||||
$branch = 'master';
|
$branch = 'master';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$release_no = date('YmdHis');
|
||||||
|
|
||||||
$releases_dir = $app_dir . '/releases';
|
$releases_dir = $app_dir . '/releases';
|
||||||
$storage_dir = $app_dir . '/storage';
|
$storage_dir = $app_dir . '/storage';
|
||||||
$public_vendor_dir = $app_dir . '/vendor';
|
$public_vendor_dir = $app_dir . '/vendor';
|
||||||
$release_no = date('YmdHis');
|
|
||||||
$new_release_dir = $releases_dir .'/'. $release_no;
|
$new_release_dir = $releases_dir .'/'. $release_no;
|
||||||
|
|
||||||
|
if ($remote) {
|
||||||
|
if (empty($remote_dir)) {
|
||||||
|
throw new Exception('Need --remote_dir param', 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($remote_app_user)) {
|
||||||
|
throw new Exception('Need --remote_dir param', 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$remote_releases_dir = $remote_dir . '/releases';
|
||||||
|
$remote_storage_dir = $remote_dir . '/storage';
|
||||||
|
$remote_public_vendor_dir = $remote_dir . '/vendor';
|
||||||
|
$remote_new_release_dir = $remote_releases_dir .'/'. $release_no;
|
||||||
|
}
|
||||||
|
|
||||||
@endsetup
|
@endsetup
|
||||||
|
|
||||||
@story('deploy')
|
@story('deploy')
|
||||||
clone_repository
|
clone_repository
|
||||||
|
@if($remote)
|
||||||
|
ssh_create_release_dir
|
||||||
|
ssh_copy_to_remote
|
||||||
|
run_composer_on_remote
|
||||||
|
update_symlinks_on_remote
|
||||||
|
change_owner_on_remote
|
||||||
|
@endif
|
||||||
run_composer
|
run_composer
|
||||||
update_symlinks
|
update_symlinks
|
||||||
change_owner
|
change_owner
|
||||||
@endstory
|
@endstory
|
||||||
|
|
||||||
@task('clone_repository')
|
@task('clone_repository', ['on' => 'localhost'])
|
||||||
echo 'Cloning repository'
|
echo 'Cloning repository'
|
||||||
[ -d {{ $app_dir }} ] || mkdir {{ $app_dir }}
|
[ -d {{ $app_dir }} ] || mkdir {{ $app_dir }}
|
||||||
[ -d {{ $releases_dir }} ] || mkdir {{ $releases_dir }}
|
[ -d {{ $releases_dir }} ] || mkdir {{ $releases_dir }}
|
||||||
|
|
@ -51,13 +79,13 @@
|
||||||
|
|
||||||
@endtask
|
@endtask
|
||||||
|
|
||||||
@task('run_composer')
|
@task('run_composer', ['on' => 'localhost'])
|
||||||
echo "Starting deployment ({{ $release_no }})"
|
echo "Starting deployment ({{ $release_no }})"
|
||||||
cd {{ $new_release_dir }}
|
cd {{ $new_release_dir }}
|
||||||
composer install --prefer-dist --no-scripts -q -o
|
composer install --prefer-dist --no-scripts -q -o
|
||||||
@endtask
|
@endtask
|
||||||
|
|
||||||
@task('update_symlinks')
|
@task('update_symlinks', ['on' => 'localhost'])
|
||||||
echo "Linking storage directory"
|
echo "Linking storage directory"
|
||||||
rm -rf {{ $new_release_dir }}/storage
|
rm -rf {{ $new_release_dir }}/storage
|
||||||
|
|
||||||
|
|
@ -89,9 +117,66 @@
|
||||||
fi
|
fi
|
||||||
@endtask
|
@endtask
|
||||||
|
|
||||||
@task('change_owner')
|
@task('change_owner', ['on' => 'localhost'])
|
||||||
chown -R {{ $app_user }} {{ $app_dir }}
|
chown -R {{ $app_user }} {{ $app_dir }}
|
||||||
chown -R {{ $app_user }} {{ $releases_dir }}
|
chown -R {{ $app_user }} {{ $releases_dir }}
|
||||||
chown -R {{ $app_user }} {{ $storage_dir }}
|
chown -R {{ $app_user }} {{ $storage_dir }}
|
||||||
chown -R {{ $app_user }} {{ $new_release_dir }}
|
chown -R {{ $app_user }} {{ $new_release_dir }}
|
||||||
|
@endtask
|
||||||
|
|
||||||
|
{{-- Remote --}}
|
||||||
|
@task('ssh_create_release_dir', ['on' => 'remote'])
|
||||||
|
echo 'Create remote directory via ssh'
|
||||||
|
[ -d {{ $remote_dir }} ] || mkdir {{ $remote_dir }}
|
||||||
|
[ -d {{ $remote_releases_dir }} ] || mkdir {{ $remote_releases_dir }}
|
||||||
|
@endtask
|
||||||
|
|
||||||
|
@task('ssh_copy_to_remote', ['on' => 'localhost'])
|
||||||
|
echo 'Copy code file to remote via ssh'
|
||||||
|
scp -BCqr {{ $new_release_dir }} {{ $remote }}:{{ $remote_releases_dir }}
|
||||||
|
@endtask
|
||||||
|
|
||||||
|
@task('run_composer_on_remote', ['on' => 'remote'])
|
||||||
|
echo "Starting deployment ({{ $release_no }}) on remote"
|
||||||
|
cd {{ $remote_new_release_dir }}
|
||||||
|
composer install --prefer-dist --no-scripts -q -o
|
||||||
|
@endtask
|
||||||
|
|
||||||
|
@task('update_symlinks_on_remote', ['on' => 'remote'])
|
||||||
|
echo "Linking storage directory"
|
||||||
|
rm -rf {{ $remote_new_release_dir }}/storage
|
||||||
|
|
||||||
|
if [ ! -d {{ $remote_storage_dir }} ]; then
|
||||||
|
mkdir {{ $remote_storage_dir }}
|
||||||
|
mkdir {{ $remote_storage_dir }}/framework
|
||||||
|
mkdir {{ $remote_storage_dir }}/framework/cache
|
||||||
|
mkdir {{ $remote_storage_dir }}/framework/sessions
|
||||||
|
mkdir {{ $remote_storage_dir }}/framework/views
|
||||||
|
fi
|
||||||
|
ln -nfs {{ $remote_storage_dir }} {{ $remote_new_release_dir }}/storage
|
||||||
|
|
||||||
|
if [ ! -d {{ $remote_public_vendor_dir }} ]; then
|
||||||
|
mkdir {{ $remote_public_vendor_dir }}
|
||||||
|
fi
|
||||||
|
ln -nfs {{ $remote_public_vendor_dir }} {{ $remote_new_release_dir }}/public/vendor
|
||||||
|
|
||||||
|
echo 'Linking current release'
|
||||||
|
ln -nfs {{ $remote_new_release_dir }} {{ $remote_dir }}/current
|
||||||
|
|
||||||
|
echo 'Linking .env file'
|
||||||
|
if [ ! -f {{ $remote_dir }}/.env ]; then
|
||||||
|
cp {{ $remote_new_release_dir }}/.env.example {{ $remote_dir }}/.env
|
||||||
|
ln -nfs {{ $remote_dir }}/.env {{ $remote_new_release_dir }}/.env
|
||||||
|
cd {{ $remote_dir }}/current && php artisan key:generate
|
||||||
|
else
|
||||||
|
ln -nfs {{ $remote_dir }}/.env {{ $remote_new_release_dir }}/.env
|
||||||
|
cd {{ $remote_dir }}/current && php artisan migrate
|
||||||
|
fi
|
||||||
|
@endtask
|
||||||
|
|
||||||
|
@task('change_owner_on_remote', ['on' => 'remote'])
|
||||||
|
chown -R {{ $remote_app_user }} {{ $remote_dir }}
|
||||||
|
chown -R {{ $remote_app_user }} {{ $remote_releases_dir }}
|
||||||
|
chown -R {{ $remote_app_user }} {{ $remote_storage_dir }}
|
||||||
|
chown -R {{ $remote_app_user }} {{ $remote_new_release_dir }}
|
||||||
@endtask
|
@endtask
|
||||||
Loading…
Reference in New Issue
Block a user