记录自己使用gitee和jenkins

发布于:2025-08-05 ⋅ 阅读:(12) ⋅ 点赞:(0)

这里不建议用windows的docker desktop,我没成功过

所以使用的是自己的linux服务器

这里所有操作的都在linux服务器上


1.安装docker,再用docker安装jenkins

安装docker,然后用docker安装jenkins。没学过docker的自己补一下,或者问ai

我这里使用的是尚硅谷雷丰阳老师的自己封装的jenkins镜像(好像是2024-6月份的时候封装的,现在的版本有点老,不过没事)。

(这个封装的jenkins镜像里面是一个docker + jenkins,我觉得非常好用,里面的docker.sock缺失了,所以需要自己挂载进去就好了)

sudo apt install -y docker-io
sudo apt install -y docker-compose

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.1ms.run"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker


docker run -d \
  --name myjenkins \
  -p 8080:8080 \
  -p 50000:50000 \
  --restart=always \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /etc/localtime:/etc/localtime:ro \
  -e JAVA_OPTS="-Duser.timezone=Asia/Shanghai" \
  leifengyang/jenkins:2.455-jdk21


2.进入jenkins主页

我们已经运行了jenkins了,映射在8080端口。我用的云服务器,别忘了安全组放行8080端口。

里面如果要填cider地址块,就是为0.0.0.0/0,不是0.0.0.0/24,别写错了。

(如果用了bt面板,自己还要在bt面板中设置一下)

然后自己 http://<云服务器ip>:8080 访问 jenkins吧


3.进入jenkins进行初始化

我快速说一遍。

1️⃣本地密码其实在第一次启动jenkins时看日志可以找到,docker logs myjenkins。

2️⃣选择安装推荐的插件(一定会失败的,因为这个版本太老了)。

3️⃣继续,设置第一个管理员用户就行。(看图)

4️⃣基本都是不要动,直接无脑下一步


4.更新jenkins和安装插件

1️⃣最重要的一步找到设置->插件管理->里面有一个更新jenkins的按钮,一定要先更新jenkins再说,需要重启。

2️⃣然后就是把之前installed plugins 全选更新一遍,也需要重启

3️⃣在 available plugin 中搜索docker,下载前四个插件。搜索blueocean,下载第一个插件。下载完也要重启。

⚠️注意!!搜索的词不要缺一个少一个字母,否则搜出来结果不一样。


5.构建一个流水线(一个自动拉取git项目的流水线)

1️⃣新建任务,选中流水线,输入任务名,确定。

2️⃣点进去创建的任务,点击配置,进入配置页面

3️⃣下拉找到流水线, 把定义改成 Pipeline script from SCM

4️⃣然后SCM改成GitRepository URL写gitee的仓库地址(像这样https://gitee.com/duoshuijiao/vitepress-jenkins-cicd-demo.git

5️⃣如果报这个错了,那就是因为你这个仓库是私有的,要配gitee账号和密码。

Credentials下面的添加按钮 -> Jenkins -> 里面只要填写用户名、密码,ID、描述想写就写。

6️⃣Credentials下拉框选中刚才创建的登录凭证

最后保存即可了。这样你执行这个流水线的时候,jenkins会自动拉一遍代码了。


6.配置gitee仓库,让他检测有人push后,触发jenkins的流水线

1️⃣进入gitee仓库 -> 设置 -> WebHooks -> 添加WebHooks,(停在这个页面)

2️⃣去jenkins中,找到你刚刚新建的流水线任务,还是配置里面,找到triggers。如下图

记住这个JENKINS_URL/view/all/job/demo/build?token=TOKEN_NAME 

JENKINS_URL就是jenkins的访问地址,就是2.中的http://<云服务器ip>:8080。

TOKEN_NAME就是刚刚配的mytoken

3️⃣回到gitee页面,把这一串

http://xxxxx:8080/view/all/job/demo/build?token=mytoken,填进去

4️⃣所以要把jenkins的账号密码配在里面。我在 3.进入jenkins进行初始化 里面配的账号是admin,密码是123456。所以变成了这样:http://admin:123456@xxxxx:8080/view/all/job/demo/build?token=mytoken

5️⃣然后点击添加就可以了。

7.在你的git项目中写Jenkinsfile

这里项目根目录里写Jenkinsfile

不了解Jenkinsfile的,去学习把,这里给个示例文件。

// jenkinsfile 流水线文件
pipeline{
    agent any
    stages{
        stage("编译项目并打包"){
            steps{
                echo "正在编译项目并打包......"
                sh "ls -al"
                withDockerContainer('node:24-alpine3.21'){
                    sh 'node -v'
                    sh 'npm config set registry https://registry.npmmirror.com/'
                    sh 'npm install'
                    sh 'npm run docs:build'
                    sh 'ls -al .vitepress/'
                }
            }
        }


        stage("打成一个压缩包(打包制品)"){
            steps{
                echo "正在打成一个压缩包(打包制品)......"
                dir('.vitepress/dist'){
                    sh 'ls -al'
                    // 这里漏了要加版本号了
                    sh 'tar -zcvf docs.tar.gz *'
                    archiveArtifacts artifacts: 'docs.tar.gz',
                                                    allowEmptyArchive: true,
                                                    fingerprint: true,
                                                    onlyIfSuccessful: true
                    sh 'ls -al'

                }

            }
        }
        stage("部署"){
            steps{
                echo "正在部署项目......"
                dir('.vitepress/dist'){
                    sh 'ls -al'
                    // dockerfile里面的ADD比起COPY有解压功能,尤其是tar.gz的压缩包
                    writeFile file: 'Dockerfile',
                              text: '''FROM nginx
                                      ADD docs.tar.gz /usr/share/nginx/html/'''
                    sh 'docker build -t docs-app:latest . '
                    // 不要忘了删除新项目
                    sh 'docker rm -f app'
                    sh 'docker run -d -p 80:80 --name app docs-app:latest'
                }
            }
        }
    }
}

8.大功告成了

这样你每次 git push一遍,就会执行这个Jenkinsfile一遍。

接6.如果觉得把密码配在地址太不安全了,可以试试jenkins 的apikey

只要自己去全局安全配置了里面,拿出apikey,然后把 “6.” 中地址中的123456改成这个apikey,也是可以的。我自己用的是这个

http://admin:11535cb6bdc285ddbde50b90d0cf685490@xx.xx.xx.xx:8080/view/all/job/demo/build?token=mytoken


jenkinsfile里面有用到很多插件的语法,jenkins安装了这些插件,自带文档,自己查阅就好。


网站公告

今日签到

点亮在社区的每一天
去签到