在Linux中使用GitLab進行持續集成(CI)和持續部署(CD)涉及幾個關鍵步驟。以下是一個基本的指南,幫助你搭建一個完整的CI/CD管道。
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce
sudo yum update
sudo yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-Python
curl -L https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
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-ci-multi-runner -y
sudo gitlab-ci-multi-runner register --url https://gitlab.com --token your-token
.gitlab-ci.yml
文件在項目的根目錄下創建一個名為 .gitlab-ci.yml
的文件,用于定義CI/CD流程。以下是一個簡單的示例:
stages:
- build
- test
- deploy
build_job:
stage: build
image: maven:3.6.3-jdk-8
script:
- echo "開始構建打包"
- mvn install
artifacts:
paths:
- target/
test_job:
stage: test
image: maven:3.6.3-jdk-8
script:
- echo "開始執行代碼測試任務"
- mvn test
deploy_job:
stage: deploy
image: docker:dind
variables:
DOCKER_HOST: tcp://docker:2375
script:
- docker login -u "CI_REGISTRY_USER" -p "CI_REGISTRY_PASSWORD" CI_REGISTRY
- docker build -t CI_REGISTRY_IMAGE:CI_COMMIT_SHA .
- docker push CI_REGISTRY_IMAGE:CI_COMMIT_SHA
你可以使用各種工具來實現自動化測試和部署,例如Maven、Gradle、npm、Docker等。在 .gitlab-ci.yml
文件中,你可以定義變量和緩存,以便在構建過程中使用。
GitLab提供了詳細的CI/CD管道視圖,你可以在項目的CI/CD菜單下查看所有的作業及其狀態、持續時間和日志。這有助于你監控構建和部署的狀態,并在出現問題時進行調試。
GitLab支持代碼審查和合并請求功能,你可以在 .gitlab-ci.yml
文件中定義代碼審查任務,例如使用SonarQube進行靜態代碼分析。
sonarqube_check:
stage: test
image: sonarsource/sonar-scanner-cli
variables:
SONAR_USER_HOME: "{CI_PROJECT_DIR}/.sonar"
GIT_DEPTH: "0"
cache:
key: "{CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- sonar-scanner -Dsonar.qualitygate.waittrue allow_failure: true