在CentOS上实现GitLab的自动化部署通常涉及以下几个关键步骤:
首先,需要在CentOS服务器上安装GitLab。可以通过添加GitLab的yum源来简化安装过程。例如,使用以下命令安装GitLab社区版:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
安装完成后,需要配置GitLab的访问地址和端口。可以通过编辑 /etc/gitlab/gitlab.rb
文件来完成:
sudo vi /etc/gitlab/gitlab.rb
在文件中设置 external_url
为你的服务器IP地址或域名,并重新配置GitLab以应用更改:
external_url 'http://your-gitlab-server-ip'
gitlab_workhorse['listen_network'] 'unix'
gitlab_workhorse['listen_addr'] "unix:/var/opt/gitlab/gitlab-workhorse/socket"
然后执行以下命令重新配置并重启GitLab:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
GitLab Runner是负责执行CI/CD任务的组件。你需要在CentOS上安装并注册GitLab Runner。
curl -L --output /etc/apt/trusted.gpg.d/gitlab.asc https://packages.gitlab.com/gitlab/gitlab-runner/gpgkey
echo "deb https://packages.gitlab.com/gitlab/gitlab-runner/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab-runner.list
sudo apt-get update
sudo apt-get install gitlab-runner
在GitLab项目页面,点击 Settings -> CI/CD -> Runners
,点击 Register an instance runner
。
复制提供的 Registration token
。
在你的CentOS服务器上,以root用户身份执行以下命令来注册Runner:
sudo gitlab-runner register --non-interactive --executor "docker" --docker-image alpine:latest --url "http://your-gitlab-server-ip" --registration-token "your-registration-token" --description "docker-runner" --tag-list "newdocker" --run-untagged "true" --locked "false" --docker-volumes /var/run/docker.sock:/var/run/docker.sock --docker-privileged "true" --access-level "not_protected"
sudo gitlab-runner start
在项目根目录下创建 .gitlab-ci.yml
文件,定义CI/CD流程。以下是一个简单的示例:
stages:
- build
- deploy
build_job:
stage: build
script:
- echo "Building the application..."
- ./build.sh
artifacts:
paths:
- build/
deploy_job:
stage: deploy
script:
- echo "Deploying the application..."
- scp target/*.jar user@your-server-ip:/path/to/deploy
only:
- master
你可以通过GitLab的Web界面触发CI/CD流程。将 .gitlab-ci.yml
文件添加到Git仓库中,并推送到GitLab服务器上。然后,在项目页面的侧边栏中选择 “CI/CD”,点击 “Run Pipeline” 按钮即可自动触发构建、测试和部署流程。
以上步骤提供了一个基本的框架,用于在CentOS上实现GitLab的自动化部署。具体的实现细节可能会根据实际需求和使用的工具版本有所不同。