在CentOS上实现GitLab的自动化部署,通常涉及以下几个步骤:
安装必要的软件:
配置GitLab:
编写部署脚本:
设置Webhook:
下面是一个详细的步骤指南:
你可以从GitLab官方网站下载CentOS的安装包,或者使用包管理器安装。
# 添加GitLab仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
# 安装GitLab CE
sudo yum install gitlab-ce
sudo yum install nginx
sudo yum install passenger
编辑GitLab配置文件 /etc/gitlab/gitlab.rb
:
external_url 'http://your-gitlab-url'
nginx['listen_port'] = 80
nginx['ssl_certificate'] = "/etc/pki/tls/certs/your-ssl-cert.crt"
nginx['ssl_certificate_key'] = "/etc/pki/tls/private/your-ssl-cert.key"
然后运行以下命令应用配置:
sudo gitlab-ctl reconfigure
在项目根目录下创建 .gitlab-ci.yml
文件,定义CI/CD管道:
stages:
- deploy
deploy_to_production:
stage: deploy
script:
- 'scp -r build/* user@your-server:/path/to/deploy'
only:
- master
编写一个脚本来自动部署代码到生产环境。例如,创建一个名为 deploy.sh
的脚本:
#!/bin/bash
# 停止应用服务器
sudo systemctl stop your-app-service
# 备份旧版本
sudo mv /path/to/deploy /path/to/deploy-backup-$(date +%Y%m%d%H%M%S)
# 解压新版本
sudo tar -xzf build.tar.gz -C /path/to/deploy --strip-components=1
# 启动应用服务器
sudo systemctl start your-app-service
确保脚本有执行权限:
chmod +x deploy.sh
在GitLab项目中设置Webhook,当代码推送到仓库时,触发CI/CD管道。
Settings
-> Webhooks
。http://your-gitlab-url/api/v4/projects/YOUR_PROJECT_ID/trigger/pipeline
)。配置Nginx和Passenger来服务你的应用。编辑Nginx配置文件 /etc/nginx/conf.d/your-app.conf
:
server {
listen 80;
server_name your-gitlab-url;
root /path/to/deploy;
passenger_enabled on;
location / {
try_files $uri $uri/ =404;
}
}
然后重启Nginx:
sudo systemctl restart nginx
推送代码到GitLab仓库,观察CI/CD管道是否触发,并检查应用是否成功部署到生产环境。
通过以上步骤,你可以在CentOS上实现GitLab的自动化部署。根据你的具体需求,可能需要调整配置和脚本。