使用 gitlab-ci 在 digitalocean ubuntu .net 上停止服务器

Stop server on digitalocean ubuntu .net with gitlab-ci

我正在使用 gitlab-ci 在 Digitalocean 上部署 .net 应用程序。使用 gitlab 运行ner 我在 Gitlab 上构建项目,使用“dotnet build”,下一步我需要以某种方式停止 Digitalocean 上的服务器以 [​​=21=] rsync 新版本。

如果 .net 不在 docker 容器内,我该如何停止它。

我的步骤是这样的:

-
    - "dotnet build"
    - cd ..
    - ssh $SERVER_USER@$PROD_SERVER_IP '
    - /home/myproject
    // here needs step for stoping
    - rsync -az ./server/bin/ $SERVER_USER@$PROD_SERVER_IP:/home/myproject
    # Non interactive ssh gracefully reloads server
    - ssh $SERVER_USER@$PROD_SERVER_IP '.
      /etc/profile;
      systemctl restart nginx;'

一旦您创建了一个名为 unit.

的工作流程,Systemd 文件将允许通过提供 start, stop, restart, and log 功能来管理流程

进入 systemd 目录我创建了新服务 sudo nano my.service

[Unit]
Description=My application

[Service]
WorkingDirectory=/var/www/my-directory
ExecStart=/usr/bin/dotnet /var/www/my-directory/bin/Debug/netcoreapp3.1/publish/MyApplication.dll
Restart=always
RestartSec=10
SyslogIdentifier=movie
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

在我的例子中,由于 ConectionString 为空,问题出在我调用 dotnet 的目录中。如果您遇到此问题,请更改接下来的两行

WorkingDirectory=/var/www/my-directory/bin/Debug/netcoreapp3.1/publish/
ExecStart=/usr/bin/dotnet MyApplication.dll

里面 gitlab-ci

-
    - "dotnet build"
    - cd ..
    - ssh $SERVER_USER@$PROD_SERVER_IP '
    - /home/myproject
    # stop step
    - ssh $SERVER_USER@$PROD_SERVER_IP '.
      /etc/profile;
      systemctl stop my.service;'
    - rsync -az ./server/bin/ $SERVER_USER@$PROD_SERVER_IP:/home/myproject
    # Non interactive ssh gracefully reloads server
    - ssh $SERVER_USER@$PROD_SERVER_IP '.
      /etc/profile;
      systemctl start my.service;
      systemctl restart nginx;'