首页 > 其他分享 >Github Actions实现Spring Boot自动化部署(第二弹)

Github Actions实现Spring Boot自动化部署(第二弹)

时间:2023-10-21 22:32:20浏览次数:41  
标签:Github name secrets Spring Boot back SERVER && docker

Github Actions实现Spring Boot自动化部署(第二弹)

前言

​ 今天就来讲述一下如何使用GitHub结合Actions实现Spring Boot程序从提交代码到打包、容器化、部署全过程自动化。首先咱们得现有一个能够在本地运行的Spring Boot程序,并且在Github上拥有一个仓库。

一、自动化部署

1.1 提交代码到Github

back-project

1.2 设置服务器密钥、GitHub私钥、DockerHub账号

secret value remark
DOCKER_HUB_ACCESS_TOKEN 1234567890 dockerhub账号私钥
DOCKER_HUB_USERNAME bubaiwantong dockerhub账号
SERVER_HOST 127.0.0.1 服务器IP地址
SERVER_PASSWORD 1234567890 服务器密码
SERVER_PORT 22 服务器开放端口
SERVER_PRIVATE_KEY 1234567890 服务器私钥
SERVER_USERNAME root 服务器账号
TOKEN 1234567890 Github的Token
1.2.1 设置服务器密钥

设置服务器密钥

1.2.2 设置Github私钥

设置Github私钥-图1

设置Github私钥-图2

设置Github私钥-图3

设置Github私钥-图4

1.2.3 设置DockerHub账号

设置DockerHub账号

1.3 新增工作流文件

maven.yml

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缓存,不加的话每次都会去重新拉取,会影响速度
      - 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连接服务器执行脚本
      - 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

Dockerfile文件

#基础镜像
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

#设置时区
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone

#挂载目录到容器
#VOLUME ["/data"]
#环境变量设置
#ENV #开放端口
EXPOSE 8088
#启动时执行的命令
CMD ["/bin/bash"]
#启动时执行的命令
ENTRYPOINT ["java","-jar","/usr/local/back-0.0.1-SNAPSHOT.jar"]

1.5 编写服务器启动脚本

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 开启自动化部署

提交代码到master,在GitHub中的Actions即可发现项目正在自动化部署

Github Actions

在浏览器地址栏打开网站首页 就可以发现自动化部署成功啦!

网站首页

三、写在最后

如果这篇【文章】有帮助到你,希望可以给【JavaGPT】点个赞

标签:Github,name,secrets,Spring,Boot,back,SERVER,&&,docker
From: https://blog.51cto.com/u_14725510/7969896

相关文章

  • 基于SpringBoot与Vue技术的高校毕设管理平台-计算机毕业设计源码+LW文档
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏览器数据库部分表:DROPTABLEIFEXISTSbisheketi;/*!40101SET@saved_cs_client=@@characte......
  • SpringBoot与jdk版本冲突
    问题:SpringBoot项目无法正常启动原因:SpringBoot2.0以上版本最低需要java8支持;SpringBoot3.0以上的版本最低需要java17支持。只需要降低pom文件中springboot版本即可。SpringBoot版本参见于https://spring.io/projects/spring-boot#learn文章参考了https://www.cnblogs.co......
  • 基于Springboot框架的优质衣产品系统-计算机毕业设计源码+LW文档
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏览器前台用户模块涵盖了:用户登录、注册功能,包括消费者进行优质衣产品系统的登录可进行衣产品的选购等......
  • 基于SpringBoot框架的教学评价系统的设计与实现-计算机毕业设计源码+LW文档
    摘要随着时代的发展,我国的教育水平在不断的提高,但是很多时候为了更好的提高教学的质量,会让学生对当前的教学进行评价,教育工作者根据学生的评价发现当下教学中的一些不足,从而更好的提高教学质量,为了让教学评价变的更加的方便我们开发了本次的教学评价系统。本系统从用户的角度出......
  • 基于springboot洗衣店管理系统-计算机毕业设计源码+LW文档
    摘要随着时代的发展,人们的工作也学习压力越来越大,很多时候空闲时间也越来也少,经常没有时间去洗自己的衣服,很多商家在看到这种情况之后开设了洗衣机店专门用于服务这些没有时间洗衣服的人,但是传统的洗衣店都是用手动的的模式在管理,这种模式很落后,为了改善这一情况很多地方开设了线......
  • springboot使用form标签在两个html页面之间实现界面跳转,出现405问题,但是一刷新就能出
    问题描述在我使用form标签的action属性实现两个html页面之间的跳转,但是出现了这样的问题:问题解决我尝试将这一块内容去掉:然后再次尝试:页面出来啦~问题解决啦~~......
  • JavaWeb-初识Spring
    目录Spring简介Spring项目Bean管理基于xml的Bean管理创建对象属性注入基于xml+注解的Bean管理创建对象属性注入基于纯注解的Bean管理内容Spring简介Spring是什么Spring是于2003年兴起的一个轻量级的Java的开放源代码的设计层面框架......
  • 企业级github api
    参考: GitHubAPIforJava–(kohsuke.org)依赖:<dependency><groupId>org.kohsuke</groupId><artifactId>github-api</artifactId><version>1.135</version></dependency> publicGithubClient(Stringaccess......
  • uboot为LED添加DM驱动--Apple的学习笔记
    一,前言开始玩所有板子一般都是先点灯,比如我可以在汇编中点灯,可以在board_init中用writel写寄存器点灯,当我要进一步熟悉下设备树驱动模型,不管学习linux还是学习uboot这块我理解类似,所以我要通过添加设备树及配置开关来实现默认打开led0和led1的功能。二,实现的过程1,先有了dts信息,我从......
  • IDEA新建SpringBoot项目突然报错问题的解决
    问题描述在我使用IDEA新建SpringBoot项目时,突然出现这个错误:之前也是一直这么新建项目,这次突然出现这样的错误,哎呦,我真服啦~问题解决就是说吧,在我看了网上解决问题的教程之后,发现都没有问题,然后我就不死心地又试了试,发现就成功创建了,具体怎么解决的,我确实是不太清楚了。......