在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的自動化部署。具體的實現細節可能會根據實際需求和使用的工具版本有所不同。