gitlab的ci功能測試之旅
阿新 • • 發佈:2019-04-03
簡述:gitlab ci ,依賴runner 來執行 Pipelines,Pipelines包含對多個階段中job的定義。
第一步:安裝runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash sudo yum install gitlab-ci-multi-runner
第二步:註冊runner
需要兩個東西 :私服地址URL 和 TOKEN,可以在gitlab專案的設定->ci/cd中找到
sudo gitlab-ci-multi-runner register
回車後按提示輸出url 和 token
注意:通過gitlab-ci-multi-runner register註冊的Runner配置會儲存在/etc/gitlab-runner/config.toml中,如果需要修改可直接編輯該檔案
注意事項:這裡我自己對git-runner service 進行了 工作空間修改,這裡要對注意一下新目錄的許可權問題
git-runner 配置詳解
第三步:在 gitlab 私服配置ci/di配置檔案 gitlab-ci.yml
gitlab-ci.yml 官方詳解
# 定義 stages,我暫時只定義了兩個階段 構建、釋出 stages: - build - deploy # 定義 job build-job: stage: build script: - mvn clean compile # 定義 job deploy-job: stage: deploy script: - /data/script/deploy.sh
這裡注意一下:我們的專案是依賴maven 構建的,所以需要在runner的伺服器上需要安裝 maven
附加一下我測試用的構建部分程式碼:為了匹配歷史專案,正規專案跟進自己的需求修改構建程式碼
<build>
<finalName>freezing</finalName>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<outputDirectory>${deploy.path}/WEB-INF/classes/com/</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/webapp</directory>
<excludes>
<exclude>WEB-INF/**/*.*</exclude>
<exclude>templates/default/z/**/*.*</exclude>
</excludes>
<targetPath>${deploy.path}/</targetPath>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/*.*</exclude>
</excludes>
</resource>
<resource>
<directory>${basedir}/src/main/config</directory>
<excludes>
<exclude>**/*.*</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArguments>
<verbose />
<extdirs>${basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>process-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/main/webapp/WEB-INF/lib</outputDirectory>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
附加重啟tomcat指令碼
#!/bin/bash
# tomcat 目錄
p='/data/tomcat7'
# tomcat 服務地址
sname='/etc/init.d/tomcat7'
work=${p}'/work/'
`rm -rf ${work}`
tomcatpath=${p}'/bin'
echo 'operate restart tomcat: '$tomcatpath
pid=`ps aux | grep $tomcatpath | grep -v grep | awk '{print $2}'`
echo 'exist pid:'$pid
if [ -n "$pid" ]
then
{
echo ===========shutdown================
$sname stop
sleep 2
pid=`ps aux | grep $tomcatpath | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
{
sleep 2
echo ========kill tomcat begin==============
echo $pid
kill -9 $pid
echo ========kill tomcat end==============
sleep 2
echo ===========startup.sh==============
$sname start
}
else
$sname start
fi
}
else
echo ===========startup.sh==============
$sname start
fi
第四步:驗證
通過push程式碼,觸發工作流,然後檢視執行日誌
這篇文章是很基礎的操作,讓你快速感受它的簡單易用,高階功能可以參考官方文件,或者後期可能會更新一下部