Docker安装并启动Jenkins
docker run \
--name jenkins \
-u root \
-d \
-p 80:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart always \
jenkins/jenkins
访问Jenkins
按步骤做初始化操作
初始密码挂载路径
/var/lib/docker/volumes/jenkins-data/_data/secrets/initialAdminPassword
安装插件
第一次访问Jenkins时,选择安装推荐使用的插件
再安装以下插件
- Maven Intergration(用于构建Maven项目)
- Publish Over SSH
- NodeJS(用于构建Vue项目)
Jenkins插件更新网络问题解决
系统管理 -> 插件管理 -> 高级 -> 升级站点
修改为http://mirror.esuni.jp/jenkins/updates/update-center.json
Jenkins全局工具配置
系统管理 -> 全局工具配置
配置JDK
/opt/java/openjdk
配置Git
/usr/bin/git
安装Maven
安装NodeJS
SSH远程应用服务器配置
系统管理 -> 系统配置
构建并部署Maven项目
配置源码管理
配置构建前操作
清理之前构建的数据
rm -rf /opt/languageTrainer
mkdir -p /opt/languageTrainer
配置构建
配置构建后操作
传输应用jar文件,并修改文件名
mv /opt/languageTrainer/*.jar /opt/languageTrainer/LanguageTrainer.jar
传输DockerFile
传输shell脚本
chmod +x /opt/languageTrainer/*.sh
/opt/languageTrainer/clean.sh
/opt/languageTrainer/run.sh
clean.sh
#!/bin/bash
sudo echo "-----Cleaning the container of Language Trainer begins.-----"
containerId=$(sudo docker ps | grep -w language-trainer | head -1 | awk '{print $1}')
if [ "$containerId" ]; then
sudo echo "The container of Language Trainer exists, and it is running now."
sudo echo "Stop the container. Container Id:$containerId"
sudo docker update --restart=no "$containerId"
sudo docker stop "$containerId"
sudo echo "Remove the container. Container Id:$containerId"
sudo docker rm "$containerId"
else
containerId=$(sudo docker ps -a | grep -w language-trainer | head -1 | awk '{print $1}')
if [ "$containerId" ]; then
sudo echo "The container of Language Trainer exists, but it is not running now."
sudo echo "Remove the container. Container Id:$containerId"
sudo docker rm "$containerId"
else
sudo echo "The container of Language Trainer doesn't exists."
fi
fi
sudo echo "-----Cleaning the container of Language Trainer ends.-----"
sudo echo "-----Cleaning the image of Language Trainer begins.-----"
imageId=$(sudo docker images | grep -w language-trainer | head -1 | awk '{print $3}')
if [ "$imageId" ]; then
sudo echo "The image of Language Trainer exists."
sudo echo "Remove the image. Image Id:$imageId"
sudo docker rmi "$imageId"
else
sudo echo "The image of Language Trainer doesn't exists."
fi
sudo echo "-----Cleaning the image of Language Trainer ends.-----"
run.sh
#!/bin/bash
sudo docker build -f /opt/languageTrainer/Dockerfile -t "language-trainer" /opt/languageTrainer/
sudo docker run -p 8080:8080 --name "language-trainer" --restart always -d "language-trainer"
配置Jenkins最后清理工作
构建并部署Vue项目
配置源码管理
配置构建环境
配置构建
#!/bin/bash
node -v &&
npm config set registry https://registry.npm.taobao.org &&
npm install &&
npm run build &&
tar -zcvf dist.tar.gz dist/*
配置构建后操作
传到应用服务器,部署到Nginx
tar -zxvf /opt/language-trainer-vue/dist.tar.gz -C /opt/language-trainer-vue
rm -rf /opt/volume/nginx/html/*
mv /opt/language-trainer-vue/dist/* /opt/volume/nginx/html
rm -rf /opt/language-trainer-vue
清理工作空间
PREVIOUSBuefy使用
NEXTDockerFile指南