定义执行的各个阶段及顺序,本次构建的阶段:build package deploy
stages:
-
build
-
upload
-
deploy
使用 maven 镜像打包项目
-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。
打包 Job配置:
job_build:
stage: build
image: maven:3.5.0-jdk-8
script:
- mvn package -Dmaven.test.skip=true
cache:
key: m2-repo
paths:
- .m2/repository
artifacts:
paths:
- target/$jar_name
这里使用 ictu/sshpass 这个镜像,是为了使用 sshpass 命令
配置:UserKnownHostsFile=/dev/null和 StrictHostKeyChecking=no。
作用:SSH登陆时会忽略known_hsots的访问。
原因:ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。
only:- master:限制只有master的分支
job_upload_prod:
stage: upload
image: ictu/sshpass
script:
-
ls -l target/
-
sshpass -f u a t s s h p a s s w o r d s c p − o U s e r K n o w n H o s t s F i l e = / d e v / n u l l − o S t r i c t H o s t K e y C h e c k i n g = n o t a r g