引言
java項目:
1、將項目通過maven進行編譯打包
2、將文件上傳到指定的服務器中
3、將war包放到tomcat的目錄中
4、通過Dockerfile將tomcat和war包轉成一個鏡像,由docker-compose去運行容器
項目更新后:將上述流程再次的從頭到尾的執行一次
go項目:
1、將項目通過go build編譯成二進制執行文件打包(或者直接將項目代碼打包壓縮)
2、將文件上傳到指定的服務器中
3、解壓文件到指定目錄
4、通過Dockerfile將go build后的二進制文件轉成一個鏡像,由docker-compose去運行容器 項目更新后:將上述流程再次的從頭到尾的執行一次
CI介紹和實現
CI (continuous intergration) 持續集成
持續集成:編寫代碼時,完成一個功能后,立即提交代碼到git倉庫中,將項目重新構建并測試。
1、快速發現錯誤
2、阻止代碼偏離主分支
實現持續集成
搭建gitlab服務器
1、創建一個全新的虛擬機,并且只是指定4G運行內存
2、安裝docker以及docker-compose
3、docker-compose.yml文件去安裝gitlab(下載和運行的時間比較長)
4、將ssh的默認端口22修改為60022 vim /etc/ssh/sshd_config 修改 port 22 --> 60022 systemctl restart sshd
docker-compose.yml文件
version: '2'
services:gitlab:image: 'gitlab/gitlab-ce:12.4.1-ce.0'restart: alwayscontainer_name: gitlabhostname: 'gitlab'environment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://47.119.16.196'nginx['enable'] = truenginx['redirect_http_to_https'] = truenginx['redirect_http_to_https_port'] = 80# 開啟 pages 功能pages_external_url 'http://47.119.16.196'gitlab_pages['inplace_chroot'] = truegitlab_rails['lfs_enabled'] = true# 設置時區為北京時間gitlab_rails['time_zone'] = 'PRC'gitlab_rails['gitlab_email_enabled'] = truegitlab_rails['gitlab_email_from'] = 'code@example.com'gitlab_rails['gitlab_email_display_name'] = 'code'gitlab_rails['gitlab_email_reply_to'] = 'code@example.com'gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = 'smtp.exmail.qq.com'gitlab_rails['smtp_port'] = 465gitlab_rails['smtp_user_name'] = 'code@example.com'gitlab_rails['smtp_password'] = '******'gitlab_rails['smtp_domain'] = 'exmail.qq.com'gitlab_rails['smtp_authentication'] = 'login'gitlab_rails['smtp_enable_starttls_auto'] = truegitlab_rails['smtp_tls'] = trueunicorn['worker_processes'] = 2unicorn['worker_timeout'] = 60sidekiq['concurrency'] = 4# 解決 GitLab 響應 Forbiddengitlab_rails['rack_attack_git_basic_auth'] = {'enabled' => true, 'ip_whitelist' => ["0.0.0.0"], 'maxretry' => 300, 'findtime' => 5, 'bantime' => 60}# 內存和CPU限制,worker_processes 配置聲明使用2核CPUmem_limit: 5500mcpu_shares: 200 #2核ports:- '443:443'- '80:80'- '22:22'volumes:# 掛載宿主機目錄可以根據實際情況掛載- '/opt/gitlab-docker/config:/etc/gitlab'- '/opt/gitlab-docker/logs:/var/log/gitlab'- '/opt/gitlab-docker/data:/var/opt/gitlab'- '/etc/localtime:/etc/localtime'
執行命令
docker-compose up -d
搭建gitlab-runner
步驟:
1、環境準備
創建目錄:/opt/gitlab-runner
配置daemon.json,私有化倉庫
{"registry-mirrors": ["https://registry.docker-cn.com"],"insecure-registries": ["39.108.227.113:5000"]
}
復制這個daemon.json 到/etc/docker/,并執行下面命令?
systemctl daemon-reload
systemctl restart docker
?2、在/opt/gitlab-runner目錄下創建一個docker-compose.yml文件
version: 'v2.2.2'
services:gitlab-runner:image: gitlab/gitlab-runnerrestart: alwayscontainer_name: gitlab-runnerprivileged: truevolumes:- ./config:/etc/gitlab-runner- /var/run/docker.sock:/var/run/docker.sock
然后執行命令
sudo chown root:root /var/run/docker.sock
最后啟動容器
docker-compose up -d --build
3、添加容器權限
保證容器可以使用宿主機器的docker,執行下面命令
docker exec -it gitlab-runner usermod -aG root gitlab-runner
4、注冊Runner信息到gitlab
docker exec -it gitlab-runner gitlab-runner register#輸入gitlab地址
Please enter the gitlab-ci coordinator URL
http://106.55.229.11/#輸入gitlab token
Please enter the gitlab-ci token for this runner:
xXapfgMsA_6eG5YUzTKb#輸入runner 說明,這里取個名字就可以了#設置tag,可以用于指定在構建規定的tag時觸發ci
Please enter the gitlab-ci tags for this runner :
deploy。。。