目录html
Gitlab Runner
实现gitlab runner
# 按照架构自行选择 本文选择的是 Linux x86-64 # Linux x86-64 wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # Linux x86 wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386 # Linux arm wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
chmod +x /usr/local/bin/gitlab-runner
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner gitlab-runner start
Runner
gitlab
上找到须要用的URL与tokenProject-> Settings -> CI/CD -> Runners -> Expand
gitlab
的ssl证书点击浏览器连接的左边锁头
能够下载证书。本文下载的格式是cer
java
将下载好的证书上传到要部署的服务器上。linux
runner
gitlab-runner register --tls-ca-file=/home/gitlab-runner/test.cer # 根据提示 依次输入以下内容 Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): https://example.com/ Please enter the gitlab-ci token for this runner: 2312132dfa2fdafeafdafewaf Please enter the gitlab-ci description for this runner: [centos.localdomain]: test Please enter the gitlab-ci tags for this runner (comma separated): test Registering runner... succeeded runner=nZsc7EsF Please enter the executor: docker-ssh+machine, parallels, shell, ssh, virtualbox, docker+machine, kubernetes, custom, docker, docker-ssh: shell Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! #——————————————————————————注—————————————————————————— 本文的executor选择的是shell # 注册成功后再次run一下gitlab-runner [root@centos target]# gitlab-runner start # 注册成功后生成 /etc/gitlab-runner/config.toml [root@centos target]# cat /etc/gitlab-runner/config.toml concurrent = 1 check_interval = 0 [session_server] session_timeout = 1800 [[runners]] name = "test" url = "https://example.com/" token = "adsfasfdsafdsafdafdsfdafa" tls-ca-file = "/home/gitlab-runner/11111.cer" executor = "shell" [runners.custom_build_dir] [runners.cache] [runners.cache.s3] [runners.cache.gcs]
.gitlab-ci.yml
文件.gitlab-ci.yml
注: 只作了本次部署的配置,具体其余配置能够查看官网https://docs.gitlab.com/ee/ci/yaml/README.htmlgit
stages: - build before_script: - export MVN_HOME # export Envionment Variable - export JAVA_HOME - java -version - sh /home/gitlab-runner/kill.sh # 定义 job test: stage: build # stage tags: - first # runner tag you configured only: - test # branch support regex script: #command - mvn clean - mvn package - cd ./target - nohup java -Xms3g -Xmx3g -jar test-new-0.0.1-SNAPSHOT.jar --server.port=9999 > test.log 2>&1 &
.gitlab-ci.yml
的正确性能够在gitlab
上使用CI Lint
验证上面yml
文件的正确行。CI Lint
在 CI/CD
里面。下面是个人验证结果。web
Status: syntax is correct Parameter Value Build Job - test export MVN_HOME export JAVA_HOME java -version sh /home/gitlab-runner/kill.sh mvn clean mvn package cd ./target nohup java -Xms3g -Xmx3g -jar test-new-0.0.1-SNAPSHOT.jar --server.port=9999 > test.log 2>&1 & Tag list: first Only policy: refs, test Except policy: Environment: When: on_success
.gitlab-ci.yml
文化中指定的 runner tag必定要存在[不然找不到runner会一直pending]fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.x.com/root/cmop.git/': Peer's Certificate issuer is not recognized.
# 关闭ssl校验 [root@gitlab-runner ~]# su - gitlab-runner [gitlab-runner@gitlab-runner ~]$ git config --global http."sslVerify" false # 查看 [gitlab-runner@gitlab-runner ~]$ cat /home/gitlab-runner/.gitconfig [http] sslVerify = false
jenkins
1. 访问 : https://jenkins.io/download/。本文采用的使用是`war`包安装 2. 下载: `wget http://ftp-chi.osuosl.org/pub/jenkins/war-stable/2.190.2/jenkins.war` 3. 运行 :`nohup java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war --httpPort=8888 > jenkins.log 2>&1 &` 注: `-Dhudson.util.ProcessTree.disable=true`参数很重要,为了避免让jenkins杀掉job建立的进程。若是不加的话,即使是`nohup`执行的命令也会在job执行以后杀掉。
ip:8888
进行初始化设置注:若是以前安装过jenkins
,会自动升级,并保留以前的数据docker
Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: # 使用下面的密码进入,实际是一个md5的串 1111111111111111111111111
plugins
本文直接选择了 suggestions plugins
,部分插件安装失败能够直接跳过。shell
从新设置一个密码centos
# 忘记秘密: 到`/root/.jenkins/users` `admin`用户下找到config.xml,修改下面的内容 <passwordHash>#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq</passwordHash> 这个密码是`123456`
jenkins
中配置Gitlab
实现自动部署gitlab
插件1. 依次访问:`Manage Jenkins`->`Manage Plugins` 2. 在:`Available`中搜索`Gitlab`,安装`Gitlab`插件 3. 等待安装。
gitlab
链接[可不作]1. 依次访问:`Manage Jenkins`->`Configure System` 2. 找到 Gitlab 标签页 3. 依次填入`Connection name`,`Gitlab host URL` 4. 添加一个`Credntials`,选择`Gitlab API token` 5. 填入在gitlab上设置的`Personal Access Tokens` 6. 点开`Advanced`,勾上`Ignore SSL Certificate Errors` 注:若是不勾上步骤6的话,gitlab是https的将会不成功。 7. 点击`Test Connnection` 8. 保存
Freestyle project
的Jobtest
此时能够先不作任何配置,直接保存。浏览器
test
job gitlab
仓库1. 在job`test`页面点击`Configure` 2. 找到`Source Code Management`选择`Git` 3. 配置`Repository URL`并添加一个`Credentials` 注:此处想使用`Personal Access Tokens`添加不上,最后使用的帐号密码 4. 保存
test
job Triggers
1. 在job`test`页面点击`Configure` 2. 找到`Build Triggers`选择`Build when a change is pushed to GitLab`其余默认就行 3. 保存
webhook
1. 到`Gitlab`项目页面->`Settings`->`Integrations` 2. 输入上一步配置后面的`url` 3. 返回错误`Url is blocked: Requests to the local network are not allowed` 4. 上面的解决办法: 管理员帐号登陆gitlab,在Admin area中,左侧Settings -> Network -> Outbound requests,勾选Allow requests to the local network from hooks and services 可是没有gitlab管理员权限,咱们将采起别的办法
test
job Triggers
改成Poll SCM
1. 配置每分钟刷新一次 */1 * * * *
bulid
执行命令export MVN_HOME # export Envionment Variable export JAVA_HOME java -version sh /home/gitlab-runner/kill.sh cd /root/.jenkins/workspace/test mvn clean mvn package cd ./target nohup java -Xms3g -Xmx3g -jar test-new-0.0.1-SNAPSHOT.jar --server.port=9999 > test.log 2>&1 & # 这些也能够写到一个shell脚本中,jenkins调用脚本
gitlab-ci
gitlab
完美兼容gitlab
有提供jenkins
webhook
,或者像本文同样轮询jdk
mvn
能够在设置中配置,不须要构建