Github Actions實(shí)現(xiàn)Spring Boot自動(dòng)化部署(第二彈)
前言
? 今天就來講述一下如何使用GitHub結(jié)合Actions實(shí)現(xiàn)Spring Boot程序從提交代碼到打包、容器化、部署全過程自動(dòng)化。首先咱們得現(xiàn)有一個(gè)能夠在本地運(yùn)行的Spring Boot程序,并且在Github上擁有一個(gè)倉庫。
一、自動(dòng)化部署
1.1 提交代碼到Github
1.2 設(shè)置服務(wù)器密鑰、GitHub私鑰、DockerHub賬號(hào)
secret | value | remark |
---|---|---|
DOCKER_HUB_ACCESS_TOKEN | 1234567890 | dockerhub賬號(hào)私鑰 |
DOCKER_HUB_USERNAME | bubaiwantong | dockerhub賬號(hào) |
SERVER_HOST | 127.0.0.1 | 服務(wù)器IP地址 |
SERVER_PASSWORD | 1234567890 | 服務(wù)器密碼 |
SERVER_PORT | 22 | 服務(wù)器開放端口 |
SERVER_PRIVATE_KEY | 1234567890 | 服務(wù)器私鑰 |
SERVER_USERNAME | root | 服務(wù)器賬號(hào) |
TOKEN | 1234567890 | Github的Token |
1.2.1 設(shè)置服務(wù)器密鑰
1.2.2 設(shè)置Github私鑰
1.2.3 設(shè)置DockerHub賬號(hào)
1.3 新增工作流文件
maven.yml文件
name: Deploy with docker
on:
push:
# 分支
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
compile:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
java-version: '21'
distribution: 'adopt'
# maven緩存,不加的話每次都會(huì)去重新拉取,會(huì)影響速度
- name: Dependies Cache
uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
# 編譯打包
- name: Build with Maven
run: |
mvn package -Dmaven.test.skip=true
# 登錄Docker Hub
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
#build鏡像并push到中央倉庫中
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: ./
file: ./Dockerfile
push: true
tags: ${{secrets.DOCKER_HUB_USERNAME}}/back:latest
#push后,用ssh連接服務(wù)器執(zhí)行腳本
- name: SSH
# uses: fifsky/ssh-action@master
uses: appleboy/ssh-action@master
with:
# command: |
# cd /develop/work/education-back-server
# sh start.sh
host: ${{secrets.SERVER_HOST}}
username: ${{secrets.SERVER_USERNAME}}
port: ${{secrets.SERVER_PORT }}
# key: ${{secrets.SERVER_PRIVATE_KEY}}
password: ${{secrets.SERVER_PASSWORD}}
script:
sh /develop/work/education-back-server/start.sh
# sh start.sh
1.4 新增Dockerfile文件
Dockerfile文件
#基礎(chǔ)鏡像
FROM bubaiwantong/openjdk:21-jdk-alpine
#安裝字體
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* && mkfontscale && mkfontdir && fc-cache
RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
#添加文件
ADD education-back/target/back-0.0.1-SNAPSHOT.jar /usr/local
RUN chmod u+x /usr/local/back-0.0.1-SNAPSHOT.jar
#設(shè)置時(shí)區(qū)
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
#掛載目錄到容器
#VOLUME ["/data"]
#環(huán)境變量設(shè)置
#ENV #開放端口
EXPOSE 8088
#啟動(dòng)時(shí)執(zhí)行的命令
CMD ["/bin/bash"]
#啟動(dòng)時(shí)執(zhí)行的命令
ENTRYPOINT ["java","-jar","/usr/local/back-0.0.1-SNAPSHOT.jar"]
1.5 編寫服務(wù)器啟動(dòng)腳本
start.sh文件
#!/bin/bash
docker pull bubaiwantong/back:latest
docker tag docker.io/bubaiwantong/back:latest back:latest
docker stop back
docker rm back
docker run --name back -p 8088:8088 -d back:latest
docker image prune -
2.7 開啟自動(dòng)化部署
提交代碼到master,在GitHub中的Actions即可發(fā)現(xiàn)項(xiàng)目正在自動(dòng)化部署
在瀏覽器地址欄打開網(wǎng)站首頁 就可以發(fā)現(xiàn)自動(dòng)化部署成功啦!
文章來源:http://www.zghlxwxcb.cn/news/detail-719637.html
三、寫在最后
如果這篇【文章】有幫助到你,希望可以給【JavaGPT】點(diǎn)個(gè)贊??,創(chuàng)作不易,如果有對(duì)【后端技術(shù)】、【前端領(lǐng)域】感興趣的小可愛,也歡迎關(guān)注?????? 【JavaGPT】??????,我將會(huì)給你帶來巨大的【收獲與驚喜】??????!文章來源地址http://www.zghlxwxcb.cn/news/detail-719637.html
到了這里,關(guān)于Github Actions實(shí)現(xiàn)Spring Boot自動(dòng)化部署(第二彈)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!