nodejs前端项目
- pipeline配置(根据k8s的yaml进行配置)
podTemplate(label: 'jnlp-slave', cloud: 'kubernetes')
{
node ('jnlp-slave') {
stage('git-npm') {
sh '''
mkdir -p /root/.ssh
cp -r /kubectl/.ssh/id_rsa /root/.ssh/
chmod 0600 /root/.ssh/id_rsa
echo "StrictHostKeyChecking no">>/etc/ssh/ssh_config
echo "UserKnownHostsFile /dev/null" >>/etc/ssh/ssh_config
git clone -b $branch $gitURL
cd $PROJECT_NAME
npm install
npm run build
'''
}
stage('docker_build') {
withCredentials([usernamePassword(credentialsId: '074faeca-f34f-43ba-9807-b988044123c5', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
sh "docker login hub.kce.ksyun.com -u $USERNAME -p $PASSWORD"
}
sh '''
cd $PROJECT_NAME
tar zcvf dist.tar.gz dist
cd kubernetes
mv ../dist.tar.gz ./
TAG=$(date +%y%m%d%H%M)
docker build -t $DOCKER_IMG/${PROJECT_NAME}:$TAG -f Dockerfile .
docker push $DOCKER_IMG/${PROJECT_NAME}:$TAG
echo "y"| docker system prune -a
echo "推送镜像到金山云仓库成功"
echo "开始development"
if [ $ENV = pre ];
then
cp -r /kubectl/pre/.kube /root/
echo "is pre"
else
echo "RUN DOCKER FAIL"
fi
cp /kubectl/kubectl /usr/local/bin/
mkdir -p yaml
cp -r /kubectl/pre/nodejs/projec.yaml ./yaml/
cp -rf /kubectl/pre/service/service.yaml ./yaml/
sed -i "s#IMG_NAME:IMG_TAG#${DOCKER_IMG}/${PROJECT_NAME}:$TAG#g" yaml/*
sed -i "s#project_name#${PROJECT_NAME_PRE}#g" yaml/*
sed -i "s#_port_#${PORT}#g" yaml/*
number=$(kubectl get pods -n default | awk '{print $1}' | grep ${PROJECT_NAME_PRE}|wc -l)
if [ $number != 0 ];then kubectl delete -f ./yaml && kubectl create -f ./yaml ;else kubectl create -f ./yaml ;fi
sleep 10s
kubectl get all -n default | grep ${PROJECT_NAME_PRE}
'''
}
}
}
- pipeline (利用kubectl set 命令直接修改镜像版本)
podTemplate(label: 'jnlp-slave', cloud: 'kubernetes')
{
node ('jnlp-slave') {
stage('git-npm') {
sh '''
mkdir -p /root/.ssh
cp -r /kubectl/.ssh/id_rsa /root/.ssh/
chmod 0600 /root/.ssh/id_rsa
echo "StrictHostKeyChecking no">>/etc/ssh/ssh_config
echo "UserKnownHostsFile /dev/null" >>/etc/ssh/ssh_config
git clone -b $branch $gitURL
cd $PROJECT_NAME
npm install
npm run build
'''
}
stage('docker_build') {
withCredentials([usernamePassword(credentialsId: '074faeca-f34f-43ba-9807-b988044123c5', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
sh "docker login hub.kce.ksyun.com -u $USERNAME -p $PASSWORD"
}
sh '''
cd $PROJECT_NAME
tar zcvf dist.tar.gz dist
cd kubernetes
mv ../dist.tar.gz ./
TAG=$(date +%y%m%d%H%M)
docker build -t $DOCKER_IMG/${PROJECT_NAME}:$TAG -f Dockerfile .
docker push $DOCKER_IMG/${PROJECT_NAME}:$TAG
echo "y"| docker system prune -a
echo "推送镜像到金山云仓库成功"
echo "开始development"
if [ $ENV = pre ];
then
cp -r /kubectl/pre/.kube /root/
echo "is pre"
else
echo "RUN DOCKER FAIL"
fi
cp /kubectl/kubectl /usr/local/bin/
kubectl set image deployment/${PROJECT_NAME_PRE} -n default ${PROJECT_NAME_PRE}=${DOCKER_IMG}/${PROJECT_NAME}:$TAG
sleep 10s
kubectl get all -n default | grep ${PROJECT_NAME_PRE}
'''
}
}
}
Java 后端
podTemplate(label: 'jnlp-slave', cloud: 'kubernetes')
{
node ('jnlp-slave') {
stage('git-maven') {
sh '''
export MAVEN_HOME=/maven
export PATH=$MAVEN_HOME/bin:$PATH
'''
sh '''
mkdir -p /root/.ssh
cp -r /kubectl/.ssh/id_rsa /root/.ssh/
chmod 0600 /root/.ssh/id_rsa
git clone -b $branch $gitURL
cd $PROJECT_NAME
/maven/bin/mvn clean install -Dmaven.test.skip=true
ls *
'''
}
stage('docker_build') {
withCredentials([usernamePassword(credentialsId: '074faeca-f34f-43ba-9807-b988044123c5', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
sh "docker login hub.kce.ksyun.com -u $USERNAME -p $PASSWORD"
}
sh '''
cd $PROJECT_NAME
cd kubernetes
mv ../aiot-build-device-service/target/aiot-build-device-service-1.0-SNAPSHOT.jar ./
TAG=$(date +%y%m%d%H%M)
docker build -t ${PROJECT_NAME}:$TAG .
docker tag ${PROJECT_NAME}:$TAG $DOCKER_IMG/${PROJECT_NAME}:$TAG
docker push $DOCKER_IMG/${PROJECT_NAME}:$TAG
echo "y"| docker system prune -a
echo "推送镜像到金山云仓库成功"
echo "开始development"
if [ $ENV = pre ];
then
cp -r /kubectl/pre/.kube /root/
echo "is pre"
else
echo "RUN DOCKER FAIL"
fi
cp /kubectl/kubectl /usr/local/bin/
cp -r /kubectl/yaml ./
echo "#cp -rf /kubectl/service/service.yaml ./yaml/#"
sed -i "s#IMG_NAME:IMG_TAG#${DOCKER_IMG}/${PROJECT_NAME}:$TAG#g" yaml/*
sed -i "s#project_name#${PROJECT_NAME}-pre#g" yaml/*
sed -i "s#_port_#${PORT}#g" yaml/*
sed -i "s#ENV#$ENV#g" yaml/*
number=$(kubectl get pods -n default | awk '{print $1}' | grep ${PROJECT_NAME}|wc -l)
if [ $number != 0 ];then kubectl delete -f ./yaml && kubectl create -f ./yaml ;else kubectl create -f ./yaml ;fi
sleep 60s
kubectl get all -n default | grep ${PROJECT_NAME}
'''
}
}
}
- pipeline(根据k8s的kubectl进行配置)
podTemplate(label: 'jnlp-slave', cloud: 'kubernetes')
{
node ('jnlp-slave') {
stage('git-maven') {
sh '''
export MAVEN_HOME=/maven
export PATH=$MAVEN_HOME/bin:$PATH
'''
sh '''
mkdir -p /root/.ssh
cp -r /kubectl/.ssh/id_rsa /root/.ssh/
chmod 0600 /root/.ssh/id_rsa
git clone -b $branch $gitURL
cd $PROJECT_NAME
/maven/bin/mvn clean install -Dmaven.test.skip=true
ls *
'''
}
stage('docker_build') {
withCredentials([usernamePassword(credentialsId: '074faeca-f34f-43ba-9807-b988044123c5', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
sh "docker login hub.kce.ksyun.com -u $USERNAME -p $PASSWORD"
}
sh '''
cd $PROJECT_NAME
cd kubernetes
mv ../aiot-build-device-service/target/aiot-build-device-service-1.0-SNAPSHOT.jar ./
TAG=$(date +%y%m%d%H%M)
docker build -t $DOCKER_IMG/${PROJECT_NAME}:$TAG .
docker push $DOCKER_IMG/${PROJECT_NAME}:$TAG
echo "y"| docker system prune -a
echo "推送镜像到金山云仓库成功"
echo "开始development"
if [ $ENV = pre ];
then
cp -r /kubectl/pre/.kube /root/
echo "is pre"
else
echo "RUN DOCKER FAIL"
fi
cp /kubectl/kubectl /usr/local/bin/
kubectl set image deployment/${PROJECT_NAME_PRE} -n default ${PROJECT_NAME_PRE}=${DOCKER_IMG}/${PROJECT_NAME}:$TAG
sleep 60s
kubectl get all -n default | grep ${PROJECT_NAME}
'''
}
}
}