1. 程式人生 > >gitlab的ci功能測試之旅

gitlab的ci功能測試之旅

開發十年,就只剩下這套架構體系了! >>>   

簡述: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程式碼,觸發工作流,然後檢視執行日誌

這篇文章是很基礎的操作,讓你快速感受它的簡單易用,高階功能可以參考官方文件,或者後期可能會更新一下部