Jenkins CICD

Jenkins CICD

01.部署jenkins服务器

环境:git仓库、Jenkins、java后端
安装git客户端:
[root@jenkins-server ~]# yum install -y git   #安装git客户端
[root@jenkins-server ~]# ssh-keygen
[root@jenkins-server ~]# ssh-copy-id -i root@192.168.246.210   #拷贝到后端java服务器
开始部署jenkins:
1.上传jdk
[root@jenkins-server ~]# tar xvzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
[root@jenkins-server ~]# mv /usr/local/jdk1.8.0_191/  /usr/local/java
2.安装tomcat
[root@jenkins-server ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.52/bin/apache-tomcat-9.0.52.tar.gz
[root@jenkins-server ~]# tar xvzf apache-tomcat-8.5.93.tar.gz -C /usr/local/
[root@jenkins-server ~]# mv /usr/local/apache-tomcat-8.5.93/ /usr/local/tomcat
3.安装maven
[root@jenkins-server ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
[root@jenkins-server ~]# tar xvzf apache-maven-3.9.3-bin.tar.gz  -C /usr/local/java/
[root@jenkins-server ~]# mv /usr/local/java/apache-maven-3.9.3/  /usr/local/java/maven
设置变量:
[root@jenkins-server ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export MAVEN_HOME=/usr/local/java/maven
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
[root@jenkins-server ~]# source /etc/profile
验证:
[root@jenkins-server ~]# java -version 
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@jenkins-server ~]# mvn -v 
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/java/maven
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"

下载jenkins的安装包:
安装jenkins:2.267  ----通过官网直接下载war包。
官网:http://updates.jenkins-ci.org/download/war/
[root@jenkins-server ~]# wget https://get.jenkins.io/war-stable/2.346.3/jenkins.war --no-check-certificat
部署jenkins
[root@jenkins-server ~]# cd /usr/local/tomcat/webapps/
[root@jenkins-server webapps]# rm -rf * 
[root@jenkins-server webapps]# cp /root/jenkins.war .
[root@jenkins-server webapps]# ../bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

02.访问界面:

在这里插入图片描述

[root@jenkins-server ~]# cat /opt/jenkins/secrets/initialAdminPassword
b36b8b04c5b84e659701304dfe848999    ---复制这个密码粘贴到上面提示的空格里面。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我的密码设置的为123456

在这里插入图片描述
在这里插入图片描述

3.安装插件
安装插件:
所需的插件:
• Maven插件 Maven Integration plugin
• 发布插件 Deploy to container Plugin
需要安装插件如下:
=======================================================
安装插件
Deploy to container    ---支持自动化代码部署到tomcat容器
GIT pligin  可能已经安装
Maven Integration   :jenkins利用Maven编译,打包所需插件
Publish Over SSH  :通过ssh连接将打包的war包拷贝到后端服务器
ssh  插件
Email Extension Plugin  安装邮件插件
安装过程:
系统管理--->插件管理---->可选插件--->过滤Deploy to container---->勾选--->直接安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入插件名后按回车!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装gitlab插件

以上所有插件安装完成

开始配置ssh

在这里插入图片描述
在这里插入图片描述
在最下面:
在这里插入图片描述

key:指的是jenkins服务器用哪个用户去远程连接程序服务器就是那个用户的私钥。

[root@jenkins-server .ssh]# cat id_rsa
4.添加远程ssh-server:

在这里插入图片描述

扩展邮件通知(用于之后项目构建后发送邮件)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

邮件主题:
构建通知:${BUILD_STATUS} - ${PROJECT_NAME} - Build # ${BUILD_NUMBER} !
邮件内容:
<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>    
</head>    
    
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    
    offset="0">    
    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">    
        <tr>    
            本邮件由系统自动发出,无需回复!<br/>            
            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> 
            <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   
        </tr>    
        <tr>    
            <td><br />    
            <b><font color="#0B610B">构建信息</font></b>    
            <hr size="2" width="100%" align="center" /></td>    
        </tr>    
        <tr>    
            <td>    
                <ul>    
                    <li>项目名称 : ${PROJECT_NAME}</li>    
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    
                    <li>触发原因: ${CAUSE}</li>    
                    <li>构建状态: ${BUILD_STATUS}</li>    
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    
                </ul>    

<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>

<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>

            </td>    
        </tr>    
    </table>    
</body>    
</html>
设置邮箱触发器

在这里插入图片描述

可根据实际情况选择触发条件,此处选择 总是

在这里插入图片描述

管理监控配置—>系统管理员邮件地址:along@163.com,要和下面的用户名一致;

邮件通知,配置如下:可以点击测试,是否配置成功
在这里插入图片描述
在这里插入图片描述
然后应用保存

5.配置jdk,maven命令,git全局配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

6.构建发布任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

7.调用mave命令

在这里插入图片描述

配置构建后操作模块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.部署java服务器,做jenkins打包上线
[root@java-server ~]# mkdir -p /data/application
上传jdk
[root@java-server ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
[root@java-server ~]# cd /usr/local/
[root@java-server local]# mv jdk1.8.0_191/ java
下载tomcat
[root@java-server ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz
[root@java-server ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /data/application/
[root@java-server ~]# cd /data/application/
[root@java-server application]# mv apache-tomcat-8.5.42/ tomcat
设置环境变量
[root@java-server ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/data/application/tomcat
[root@java-server ~]# source /etc/profile
测试:
[root@java-server ~]# java -version 
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
删除tomcat默认发布目录下面的内容:
[root@java-server ~]# rm -rf /data/application/tomcat/webapps/*
[root@java-server ~]# cd /data/application/tomcat/webapps/
[root@java-server webapps]# ls
创建目录和脚本:
[root@java-server ~]# mkdir /opt/script  #创建脚本目录
[root@java-server ~]# vim app-jenkins.sh   #创建脚本
脚本内容在后面
[root@java-server ~]# chmod +x app-jenkins.sh  #添加执行权限
[root@java-server ~]# mv app-jenkins.sh /opt/script/
9.回到jenkins页面开始构建任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
10.登陆java-server服务器查看:
在这里插入图片描述
在这里插入图片描述

脚本内容:
[root@java-server script]# cat app-jenkins.sh 
#!/usr/bin/bash
#本脚本适用于jenkins持续集成,实现备份war包到代码更新上线!使用时请注意全局变量。
#================
#Defining variables
export JAVA_HOME=/usr/local/java
webapp_path="/data/application/tomcat/webapps"
tomcat_run="/data/application/tomcat/bin"
updata_path="/data/update/`date +%F-%T`"
backup_path="/data/backup/`date +%F-%T`"
tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`
files_dir="easy-springmvc-maven"
files="easy-springmvc-maven.war"
job_path="/root/upload"

#Preparation environment
echo "Creating related directory"
mkdir -p $updata_path
mkdir -p $backup_path

echo "Move the uploaded war package to the update directory"
mv $job_path/$files $updata_path

echo "========================================================="
cd /opt
echo "Backing up java project"
if [ -f $webapp_path/$files ];then
	tar czf $backup_path/`date +%F-%H`.tar.gz $webapp_path
	if [ $? -ne 0 ];then
		echo "打包失败,自动退出"
		exit 1
	else
		echo "Checking if tomcat is started"
		if [ -n "$tomcat_pid" ];then
			kill -9 $tomcat_pid
			if [ $? -ne 0 ];then
				echo "tomcat关闭失败,将会自动退出"
				exit 2
			fi
		fi
		cd $webapp_path
		rm -rf $files && rm -rf $files_dir
		cp $updata_path/$files $webapp_path
		cd /opt
		$tomcat_run/startup.sh
		sleep 5
		echo "显示tomcat的pid"
		echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
		echo "tomcat startup"
		echo "请手动查看tomcat日志。脚本将会自动退出"
	fi
else
	echo "Checking if tomcat is started"
        if [ -n "$tomcat_pid" ];then
        	kill -9 $tomcat_pid
                if [ $? -ne 0 ];then
                	echo "tomcat关闭失败,将会自动退出"
                       	exit 2
                fi
        fi
	cp $updata_path/$files $webapp_path
	$tomcat_run/startup.sh
        sleep 5
        echo "显示tomcat的pid"
        echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
        echo "tomcat startup"
        echo "请手动查看tomcat日志。脚本将会自动退出"
fi

jenkins参数化构建实现版本回退

通过回滚git仓库的版本号实现

1.git机器安装git
[root@gitlab-server ~]# yum install -y git
创建裸库
[root@gitlab-server ~]# mkdir /git-test
[root@gitlab-server ~]# useradd git
[root@gitlab-server ~]# passwd git
[root@gitlab-server ~]# cd /git-test/
[root@gitlab-server git-test]# git init --bare pm-test
[root@gitlab-server git-test]# chown git.git /git-test -R
利用后端服务器充当git客户端创建密钥
[root@java-server ~]# ssh-keygen
[root@java-server ~]# ssh-copy-id -i git@172.16.229.150  #将秘钥传输到git服务器中的git用户
[root@java-server ~]# git clone git@172.16.229.150:/git-test/pm-test  #克隆仓库
正克隆到 'pm-test'...
warning: 您似乎克隆了一个空版本库。
[root@java-server ~]# ls
anaconda-ks.cfg  pm-test
模拟开发角色在后端服务器充当开发端提交代码
[root@java-server ~]# yum install -y git
[root@java-server ~]# git config --global user.email "soho@163.com"
[root@java-server ~]# git config --global user.name "soho"
[root@java-server opt]# git clone https://github.com/bingyue/easy-springmvc-maven --克隆源代码
[root@java-server opt]# cd easy-springmvc-maven/
[root@java-server easy-springmvc-maven]# cp -r * /root/pm-test/  #将代码复制到自己的仓库中

提交代码到master
[root@java-server opt]# cd easy-springmvc-maven/
[root@java-server pm-test]# git add .
[root@java-server pm-test]# git commit -m 'test 1'
[master 0f556ca] test 1
 9 files changed, 286 insertions(+), 3 deletions(-)
 create mode 100644 pom.xml
 create mode 100644 src/main/java/spring/demo/control/DemoController.java
 create mode 100644 src/main/java/spring/demo/service/DemoService.java
 create mode 100644 src/main/webapp/WEB-INF/applicationContext.xml
 create mode 100644 src/main/webapp/WEB-INF/dispatcher-servlet.xml
 create mode 100644 src/main/webapp/WEB-INF/web.xml
 create mode 100644 src/main/webapp/index.jsp
 create mode 100644 src/main/webapp/result.jsp
[root@java-server pm-test]# git push origin master
Counting objects: 22, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 5.16 KiB | 0 bytes/s, done.
Total 20 (delta 1), reused 0 (delta 0)
To git@172.16.229.150:root/pm-test.git
   f341e1d..0f556ca  master -> master
[root@java-server pm-test]# 
配置jenkins页面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@jenkins-server ~]# cat .ssh/id_rsa  

在这里插入图片描述
在这里插入图片描述
将jenkins服务器上面的root用户的公钥添加到git服务的git用户中

[root@jenkins-server ~]# ssh-copy-id -i git@172.16.229.150

jenkins界面已经ok
在这里插入图片描述
在这里插入图片描述
添加执行shell命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

定义ssh传输内容

第一个不需要写,写下面的就可以了

在这里插入图片描述

这里的脚本需要修改
[root@java-server ~]# cat /opt/script/app-jenkins.sh
#!/usr/bin/bash
#本脚本适用于jenkins持续集成,实现备份war包到代码更新上线!使用时请注意全局变量。
#================
#Defining variables
export JAVA_HOME=/usr/local/java
webapp_path="/data/application/tomcat/webapps"
tomcat_run="/data/application/tomcat/bin"
updata_path="/data/update/`date +%F-%T`"
backup_path="/data/backup/`date +%F-%T`"
tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`
#files_dir="easy-springmvc-maven"  #注释掉
files="*.war" #修改为*.war
job_path="/root/upload"

#Preparation environment
echo "Creating related directory"
mkdir -p $updata_path
mkdir -p $backup_path

echo "Move the uploaded war package to the update directory"
mv $job_path/$files $updata_path

echo "========================================================="
cd /opt
echo "Backing up java project"
if [ -f $webapp_path/$files ];then
        tar czf $backup_path/`date +%F-%H`.tar.gz $webapp_path
        if [ $? -ne 0 ];then
                echo "打包失败,自动退出"
                exit 1
        else
                echo "Checking if tomcat is started"
                if [ -n "$tomcat_pid" ];then
                        kill -9 $tomcat_pid
                        if [ $? -ne 0 ];then
                                echo "tomcat关闭失败,将会自动退出"
                                exit 2
                        fi
                fi
                cd $webapp_path
                rm -rf $files && rm -rf *  #这里也需要修改
                cp $updata_path/$files $webapp_path
                cd /opt
                $tomcat_run/startup.sh
                sleep 5
                echo "显示tomcat的pid"
                echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
                echo "tomcat startup"
                echo "请手动查看tomcat日志。脚本将会自动退出"
        fi
else
        echo "Checking if tomcat is started"
        if [ -n "$tomcat_pid" ];then
                kill -9 $tomcat_pid
                if [ $? -ne 0 ];then
                        echo "tomcat关闭失败,将会自动退出"
                        exit 2
                fi
        fi
        cp $updata_path/$files $webapp_path
        $tomcat_run/startup.sh
        sleep 5
        echo "显示tomcat的pid"
        echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
        echo "tomcat startup"
        echo "请手动查看tomcat日志。脚本将会自动退出"
fi

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

登陆jenkins服务器编写脚本

这里需要理解:
在 Jenkins 部署脚本当中加入 git rev-parse HEAD 命令记录每次发布的版本的唯一版本号,并将此记录在一个log文件里,如果需要回滚,则由脚本取出上一次发布的版本号(命令为:tail -n $version+1 version.log | head -n 1)进行版本的回退,而后在回退的基础上再发布即可。
============================================
我这里的脚本是每构建一次将会的当前版本库的版本号记录下来。当回滚的时候通过看那个version.log文件里面的版本号的顺序,最新构建的版本号在最下面也就是当前版本号,在脚本里面当前版本号定义的是1,如果想回退一版那么这个版本号就在倒数第二行,两版就是倒数第三行,依次类推。那么在参数化构建的时候在version的那一栏里面输入对应数字1,就是回退上一版本,输入数字2回退上上次版本。
脚本里面定义的是Newversion=`expr $version + 1`
$version默认为0
git rev-parse HEAD >> $WORKSPACE/version.log:将版本号记录在工作目录下面的version.log文件里面,方便版本回退
[root@jenkins-server ~]# cd /opt/
[root@jenkins-server opt]# vim version.sh
#!/bin/bash
#本脚本用于参数化构建,项目发布与版本回滚,请慎用!
#============================
#time 2018.08
#Author 轩哥
#----------------------------------------------
deploy(){
echo "deploy: $option"
cd $WORKSPACE
git rev-parse HEAD >> $WORKSPACE/version.log
}
rollback(){
Newversion=`expr $version + 1`
Head=`tail -n $Newversion $WORKSPACE/version.log | head -n 1`
cd $WORKSPACE
git rev-parse HEAD >> $WORKSPACE/version.log
git reset --hard $Head
}

case $option in
deploy)
deploy
;;
rollback)
rollback
;;
*)
echo $"Usage: {deploy|rollback}" 
exit 1
;;
esac
[root@jenkins-server opt]# chmod +x version.sh

回到jenkins页面发布
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看版本号jenkins服务器

[root@jenkins-server ~]# cd .jenkins/workspace/pm-test
[root@jenkins-server pm-test]# ls
pom.xml  README.md  src  target  version.log
[root@jenkins-server pm-test]# cat version.log 
f1a9440c7095457617c3e714fc3124c90415b962

查看后端服务器

[root@java-server ~]# cd /data/application/tomcat/webapps/
[root@java-server webapps]# ls
easy-springmvc-maven  easy-springmvc-maven.war
[root@java-server webapps]# netstat -lntp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      66398/java 

再次构建新的版本war包

注意:为了区分,这里重新找了一个源代码重新上传到仓库中去。
1.将代码包上传
[root@java-server ~]# ls
anaconda-ks.cfg  upload  Client.zip
[root@java-server ~]# yum install -y unzip
[root@java-server ~]# unzip Client.zip

克隆自己的仓库
[root@java-server ~]# git clone git@172.16.229.150:root/pm-test.git
正克隆到 'pm-test'...
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 23 (delta 1), reused 0 (delta 0), pack-reused 0
接收对象中: 100% (23/23), 5.35 KiB | 0 bytes/s, done.
处理 delta 中: 100% (1/1), done.
[root@java-server ~]# cd pm-test/
[root@java-server pm-test]# rm -rf *
[root@java-server pm-test]# cp /root/Client
Client/     Client.zip  
[root@java-server pm-test]# cp -r /root/Client/* .
将代码提交到仓库
[root@java-server pm-test]# git add -A
[root@java-server pm-test]# git commit -m "test 2"
[root@java-server pm-test]# git push origin master

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

登陆后端服务器查看

[root@java-server ~]# netstat -lntp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      66594/java          
[root@java-server ~]# cd /data/application/tomcat/webapps/
[root@java-server webapps]# ls
Client  Client.war
[root@java-server webapps]# cd /data/backup/  #查看是否备份成功
[root@java-server backup]# ls
2020-11-22-17:40:59
开始回滚
将现在的client的war包回滚到easy-springmvc-maven.war包
查看版本号,回滚到上个版本
[root@jenkins-server pm-test]# cat version.log 
0f556ca96f02549c177c7c70ca95a7fb5e2308c3
b5d6458e56c9c7d9c52ad0fc66bc088daeeab1d4

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

验证

[root@java-server ~]# netstat -lntp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      122877/java         
[root@java-server ~]# cd /data/application/tomcat/webapps/
[root@java-server webapps]# ls
easy-springmvc-maven  easy-springmvc-maven.war
[root@java-server webapps]# cd /data/backup/
[root@java-server backup]# ls
2020-11-22-17:40:59 2020-11-22-18:33:46

到此根据git仓库每次提交的版本号回滚成功!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值