最近折騰了2天,終於完整得搭建了一套自動打包,自動部署得環境,裏面坑不少,分享出來,攢點人品,讓後來者避開這些坑。
部署機器:java
圖簡單得話,能夠直接將防火牆關閉,不然就須要開放這些服務用到得端口。這裏面gitlab使用13001,Jenkins使用13002.linux
vim /etc/sysconfig/iptablesgit
-A INPUT -p tcp -m state --state NEW -m tcp--dport 13001 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp--dport 13002 -j ACCEPTweb
:wqspring
service iptables restartapache
tar -zxvf jdk 將解壓後得文件夾放在/usr/local下面json
export JAVA_HOME=/usr/local/jdk1.8.0_11vim
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarcentos
export PATH=$PATH:$JAVA_HOME/bintomcat
source /etc/profile(讓改動生效)
mv apache-maven-3.5.0/* /usr/local/maven/
vim /etc/profile
exportM2_HOME=/usr/local/maven
exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH
source /etc/profile
配置倉庫信息和鏡像源,使用阿里雲:
在/usr/local/maven/conf/settings.xml下面配置倉庫信息:
<localRepository>/opt/maven/repo</localRepository>
<mirror>
<id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
A. 安裝依賴軟件
yum -y install policycoreutils openssh-server openssh-clientspostfix
B. 獲取rpm包並安裝
wget https://mirrors.tuna.tsinghua...
rpm -ivh gitlab-ce-9.3.6-ce.0.el7.x86_64.rpm
C. 自定義端口和存放路徑
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.0.94:13001'
git_data_dir "/oracle/gitlab"
增長一個 git_data_dir
D. 啓動gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
root用戶下:
下載依賴
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat...
導入祕鑰
sudo rpm --import https://pkg.jenkins.io/redhat...
安裝jenkins
yum install jenkins
配置jenkins的端口以及修改用戶爲root:
[root@localhost ~]# vi /etc/sysconfig/jenkin
配置jenkins得java路徑:
vim /etc/init.d/jenkins
找到 candidates,裏面加入你本機的實際java路徑
啓動jenkins: service jenkins restart
日誌位置:/var/log/jenkins/jenkins.log
一個注意得地方:
剛啓動jenkins得時候,會提示你該jenkins處於離線狀態,須要處理一下:
http://localhost:13002/pluginManager/advanced
package com.avictc.springlearn;
import com.alibaba.fastjson.JSONObject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
@RequestMapping("/test1")
public class SpringlearnApplication extends SpringBootServletInitializer {
@RequestMapping("/getJSon") public JSONObject returnJson(){ JSONObject o = new JSONObject(); o.put("hello","yes"); return o; } @RequestMapping("/getString") public String returnJson2(){ return "hello"; } public static void main(String[] args) { SpringApplication.run(SpringlearnApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringlearnApplication.class); }
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <packaging>war</packaging> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.avictc</groupId> <artifactId>springlearn</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springlearn</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- 添加fastjson--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.32</version> </dependency> <!-- 添加AOP--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> </dependencies> <build> <!-- 應與application.properties(或application.yml)中context-path保持一致 --> <finalName>springtest</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
</project>
打包命令:
mvn clean package -Dmaven.test.skip=true
注意:git須要配置到bin目錄下得git,其餘JDK,Maven只須要配置到主目錄便可。
系統管理-》系統設置,配置jenkins須要ssh到的服務器,好比192.168.0.93
須要首先在Jenkins所在的機器192.168.0.94
ssh-keygen -t rsa
生成了私鑰文件id_rsa,公鑰文件id_rsa.pub
將公鑰文件id_rsa.pub的內容追加到192.168.0.93中的/root/.ssh/authorized_keys中,這樣,94就能夠ssh到93這臺機器了。
源碼下載
觸發器暫時不考慮,手工點擊構建便可
使用maven進行打包構建
192.168.0.93上面的restartTomcat.sh文件內容:
export BUILD_ID=dontkillme
export JAVA_HOME=/opt/java/jdk1.8.0_11
PID=ps -ef |grep /opt/java/apache-tomcat-9.0.19/conf |grep -v grep | awk '{print $2}'
if [ ! "$PID" ];then
echo "tomcat not start"
else
echo "will kill tomcat process:$PID"
kill -9 $PID
fi
cd /opt/java/apache-tomcat-9.0.19/webapps
rm -rf springtest*
mv /opt/java/apache-tomcat-9.0.19/*.war /opt/java/apache-tomcat-9.0.19/webapps
cd /opt/java/apache-tomcat-9.0.19/bin/
nohup sh ./startup.sh
echo "tomcat start executes"
sleep 3s
注意:必定要export JAVA_HOME,不然Tomcat怎麼都啓動不了!!!
至此,能夠放心的一鍵部署了,完成了全部步驟。