1. 首页 > Linux教程 > 正文

Linux教程FG377-CI/CD流水线部署

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

风哥提示:

本文档介绍CI/CD流水线的部署和配置方法。

Part01-GitLab部署

1.1 安装GitLab

# 安装依赖
[root@gitlab ~]# dnf install -y curl policycoreutils-python-utils openssh-server perl

# 配置防火墙
[root@gitlab ~]# firewall-cmd –permanent –add-service=http
success
[root@gitlab ~]# firewall-cmd –permanent –add-service=https
success
[root@gitlab ~]# firewall-cmd –reload
success

# 添加GitLab源
[root@gitlab ~]# curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash

# 安装GitLab
[root@gitlab ~]# EXTERNAL_URL=”http://gitlab.fgedu.net.cn” dnf install -y gitlab-ce

# 配置GitLab
[root@gitlab ~]# cat > /etc/gitlab/gitlab.rb << 'EOF' external_url 'http://gitlab.fgedu.net.cn' # 时区设置 gitlab_rails['time_zone'] = 'Asia/Shanghai' # 邮件配置 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.fgedu.net.cn" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "gitlab@fgedu.net.cn" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_domain'] = "fgedu.net.cn" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rai更多学习教程公众号风哥教程itpux_comls['gitlab_email_from'] = 'gitlab@fgedu.net.cn' # 备份配置 gitlab_rails['backup_keep_time'] = 604800 gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" # 禁用不需要的服务 prometheus_monitoring['enable'] = false grafana['enable'] = false EOF # 重新配置 [root@gitlab ~]# gitlab-ctl reconfigure Starting Chef Infra Client,更多视频教程www.fgedu.net.cn version 17.10.0 Patents: https://www.chef.io/patents resolving cookbooks for run list: ["gitlab"] Synchronizing Cookbooks: - gitlab (0.0.1) Installing Cookbook Gems: Compiling Cookbooks... Recipe: gitlab::default ... Chef Infra Client finished, 500/1000 resources updated in 5 minutes gitlab Reconfigured! # 查看状态 [root@gitlab ~]# gitlab-ctl status run: alertmanager: (pid 12345) 100s; run: log: (pid 12346) 100s run: gitaly: (pid 12347) 100s; run: log: (pid 12348) 100s run: gitlab-exporter: (pid 12349) 100s; run: log: (pid 12350) 100s run: gitlab-kas: (pid 12351) 100s; run: log: (pid 12352) 100s run: gitlab-workhorse: (pid 12353) 100s; run: log: (pid 12354) 100s run: logrotate: (pid 12355) 100s; run: log: (pid 12356) 100s run: nginx: (pid 12357) 100s; run: log: (pid 12358) 100s run: postgres: (pid 12359) 100s; run: log: (pid 12360) 100s run: prometheus: (pid 12361) 100s; run: log: (pid 12362) 100s run: puma: (pid 12363) 100s; run: log: (pid 12364) 100s run: redis: (pid 12365) 100s; run: log: (pid 12366) 100s run: registry: (pid 12367) 100s; run: log: (pid 12368) 100s run: sidekiq: (pid 12369) 100s; run: log: (pid 12370) 100s

1.2 配置GitLab Runner

# 安装GitLab Runner
[root@runner ~]# curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | bash
[root@runner ~]# dnf install -y gitlab-runner

# 注册Runner
[root@runner ~]# gitlab-runner register
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://gitlab.fgedu.net.cn
Enter the registration token:
xxxxxxxxxxxxx
Enter a description for the runner:
[runner]: Shared Runner
Enter tags for the runner (comma-separated):
docker,shell
Enter optional maintenance note for the runner:

WARNING: Support for registration tokens and runner parameters in the ‘register’ command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872
Registering runner… succeeded runner=xxxxxxxx
Enter an executor: custom, docker, parallels, ssh, docker-ssh+machine, kubernetes, docker-ssh, shell, virtualbox, docker+machine, instance:
shell
Runner registered successfully. Feel free to start it, but if it’s running already the config should be automatically reloaded!

# 查看Runner状态
[root@runner ~]# gitlab-runner list
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
Shared Runner Executor=shell Token=xxxxxxxx URL=http://gitlab.fgedu.net.cn

# 启动Runner
[root@runner ~]# systemctl enable –now gitlab-runner
Created symlink /etc/systemd/system/multi-user.target.wants/gitlab-runner.service → /usr/lib/systemd/system/gitlab-runner.service.

Part02-配置CI/CD流水线

2.1 创建.gitlab-ci.yml

# 创建CI/CD配置文件
[root@gitlab ~]# cat > /var/opt/gitlab/git-data/repositories/root/demo.git/.gitlab-ci.yml << 'EOF' stages: - build - test - deploy variables: APP_NAME: "demo-app" DEPLOY_SERVER: "192.168.1.100" build: stage: build script: - echo "Building application..." - mvn clean package -DskipTests - echo "Build completed." artifacts: paths: - target/*.jar expire_in: 1 hour test: stage: test script: - echo "Running tests..." - mvn test - echo "Tests completed." dependencies: - build deploy_staging: stage: deploy script: - echo "Deploying to staging..." - scp target/*.jar root@$DEPLOY_SERVER:/opt/app/ - ssh root@$DEPLOY_SERVER "systemctl restart app" - echo "Deployed to staging." environment: name: staging url: http://staging.fgedu.net.cn only: - develop deploy_production: stage: deploy script: - echo "Deploying to production..." - scp target/*.jar root@$DEPLOY_SERVER:/opt/app/ - ssh root@$DEPLOY_SERVER "systemctl restart app" - echo "Deployed to production." environment: name: production url: http://www.fgedu.net.cn only: - main when: manual EOF # Docker执行器配置 [root@runner ~]# cat > /etc/gitlab-runner/config.toml << 'EOF' cofrom PG视频:www.itpux.comncurrent = 4 [[runners]] name = "docker-runner" url = "http://gitlab.fgedu.net.cn" token = "xxxxxxxxxxxxx" executor = "docker" [runners.docker] image = "maven:3.8-openjdk-17" privileged = true volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"] [runners.cache] Insecure = false EOF # 重启Runner [root@runner ~]# systemctl restart gitlab-runner
风哥针对CI/CD建议:

  • 使用分支策略管理代码
  • 配置代码审查流程
  • 实施自动化测试
  • 配置多环境部署
  • 启用部署审批机制

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息