1.准备好需要准备的springboot项目,新建Dockerfile文件
#Dockerfile文件内容
FROM openjdk:8-jdk-alpine
ADD ./target/wechart-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
<!--DockerFile依赖-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${project.artifactId}</repository>
</configuration>
</plugin>
2.新建阿里云镜像仓库
3.新建githup仓库,根据提示,推送代码
4.新建访问秘钥TOKEN
5.配置项目所需要的环境信息,找到项目下的setting设置,点击secrets,开始配置
TOKEN为刚新建的令牌
6.在.github\workflows文件夹下新建yml文件
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Java CI with Maven
#在push本地main分支时启动action
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
#在ubuntu-latest下执行
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master #下来master分支
- name: Set up JDK 8
uses: actions/setup-java@master
with:
java-version: '8'
distribution: 'adopt'
cache: maven
- name: Build with Maven #打包命令
run: mvn clean package --file pom.xml
- name: BuildDockerImage #使用dockerFile文件制作镜像,并且推送到阿里云镜像仓库
run: |
docker login --username=${{ secrets.YUN_USERNAME }} --password ${{ secrets.YUN_PASSWORD }} registry.cn-hangzhou.aliyuncs.com
docker build . -t ${{ secrets.REGISTRY }}:$GITHUB_RUN_NUMBER
docker push ${{ secrets.REGISTRY }}:$GITHUB_RUN_NUMBER
docker tag $(docker images ${{ secrets.REGISTRY }}:$GITHUB_RUN_NUMBER -q) ${{ secrets.REGISTRY }}:latest
docker push ${{ secrets.REGISTRY }}:latest
pull-docker: #登录外网服务器,拉取刚刚推送的镜像,然后启动镜像
needs: [build]
name: Pull Docker
runs-on: ubuntu-latest
steps:
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
docker stop $(docker ps -a | grep -w registry.cn-hangzhou.aliyuncs.com/bjiang123/git_action| awk '{print $1}')
docker rm -f $(docker ps -a | grep -w registry.cn-hangzhou.aliyuncs.com/bjiang123/git_action| awk '{print $1}')
docker rmi -f $(docker images registry.cn-hangzhou.aliyuncs.com/bjiang123/git_action:latest -q)
docker login --username=${{ secrets.YUN_USERNAME }} --password ${{ secrets.YUN_PASSWORD }} registry.cn-hangzhou.aliyuncs.com
docker pull registry.cn-hangzhou.aliyuncs.com/bjiang123/git_action:latest
docker run -d -p 8080:8080 registry.cn-hangzhou.aliyuncs.com/bjiang123/git_action:latest
7.点击提交,开始执行,点击action,查看执行过程,执行完成后,登录服务器,查看项目是否发布成功
#不使用docker镜像仓库
name: Java Maven
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
compile:
runs-on: ubuntu-latest
name: Running Java
steps:
- uses: actions/checkout@master
- name: Set up JDK 8
uses: actions/setup-java@master
with:
java-version: '8'
distribution: 'adopt'
cache: maven
- name: Build with Maven
run: mvn clean package --file pom.xml
- name: 将 JAR 包部署到服务器
uses: garygrossgarten/github-action-scp@release
with:
local: target/wechart-0.0.1-SNAPSHOT.jar
remote: /home/wechart/wechart-0.0.1-SNAPSHOT.jar
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
# 部署到服务器
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
cd /home/wechart
nohup java -jar wechart-0.0.1-SNAPSHOT.jar > wechart.log 2>&1 &