Add manual & auto release action (#36)

* feat: update dockerfile

* feat: add docker build action

* feat:add manual release action
This commit is contained in:
vran 2022-03-06 15:06:59 +08:00 committed by GitHub
parent 1f3aa9e6d9
commit 47d642152d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 110 additions and 43 deletions

View File

@ -1,12 +1,12 @@
# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created # This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created
# For more information see: https://github.com/actions/setup-java#publishing-using-gradle # For more information see: https://github.com/actions/setup-java#publishing-using-gradle
name: release name: docker image latest push
on: on:
push: push:
tags: branches:
- 'v*' - 'master'
jobs: jobs:
release: release:
@ -21,19 +21,25 @@ jobs:
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file settings-path: ${{ github.workspace }} # location for the settings.xml file
- name: add permission to gradle - name: Gradle Permission Grant
run: chmod +x ./gradlew run: chmod +x ./gradlew
- name: build with gradle - name: Gradle Build
run: ./gradlew api:build -x checkstyleMain -x checkstyleTest run: ./gradlew api:build -x checkstyleMain -x checkstyleTest
- name: release jar - name: Login to Docker Hub
uses: softprops/action-gh-release@v1 uses: docker/login-action@v1
if: startsWith(github.ref, 'refs/tags/')
with: with:
files: api/build/libs/databasir.jar username: ${{ secrets.DOCKER_HUB_USERNAME }}
draft: true password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
fail_on_unmatched_files: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Docker Image Release
uses: docker/build-push-action@v2
with:
context: .
file: ./local.Dockerfile
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/databasir:latest

55
.github/workflows/manual-release.yml vendored Normal file
View File

@ -0,0 +1,55 @@
name: release
on:
workflow_dispatch:
inputs:
tag:
required: true
description: 'release tag version'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: '11'
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file
- name: Gradle Permission Grant
run: chmod +x ./gradlew
- name: Gradle Build
run: ./gradlew api:build -x checkstyleMain -x checkstyleTest
- name: Application Jar Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
tag_name: ${{ github.event.inputs.tag }}
files: api/build/libs/databasir.jar
draft: true
fail_on_unmatched_files: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- 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
uses: docker/setup-buildx-action@v1
- name: Docker Image Release
uses: docker/build-push-action@v2
with:
context: .
file: ./local.Dockerfile
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/databasir:${{ github.event.inputs.tag }}

View File

@ -11,4 +11,4 @@ EXPOSE 8080
#-Ddatabasir.datasource.username=${databasir.datasource.username} #-Ddatabasir.datasource.username=${databasir.datasource.username}
#-Ddatabasir.datasource.password=${databasir.datasource.password} #-Ddatabasir.datasource.password=${databasir.datasource.password}
#-Ddatabasir.datasource.url=${databasir.datasource.url} #-Ddatabasir.datasource.url=${databasir.datasource.url}
ENTRYPOINT ["sh", "-c","java ${JAVA_OPTS} -jar /app/databasir.jar"] ENTRYPOINT ["sh", "-c","java -Ddatabasir.db.url=${DATABASIR_DB_URL} -Ddatabasir.db.username=${DATABASIR_DB_USERNAME} -Ddatabasir.db.password=${DATABASIR_DB_PASSWORD} -jar /app/databasir.jar"]

View File

@ -7,8 +7,6 @@ Databasir 采用了前后端分离的模式进行开发和部署,项目仓库
- 后端应用: https://github.com/vran-dev/databasir - 后端应用: https://github.com/vran-dev/databasir
- 前端应用: https://github.com/vran-dev/databasir-frontend - 前端应用: https://github.com/vran-dev/databasir-frontend
## 后端 ## 后端
**一、环境要求** **一、环境要求**
@ -17,22 +15,18 @@ Databasir 采用了前后端分离的模式进行开发和部署,项目仓库
2. Mysql 2. Mysql
3. Intellij IDEA 3. Intellij IDEA
**二、主要框架** **二、主要框架**
1. Gradle构建工具 1. Gradle构建工具
2. Spring-boot核心框架 2. Spring-boot核心框架
1. Web 1. Web
2. Security 2. Security
3. Quartz定时任务调度 3. Quartz定时任务调度
4. JOOQORM 框架 4. JOOQORM 框架
5. Lombok代码生成 5. Lombok代码生成
6. Mapstruct代码生成 6. Mapstruct代码生成
7. Flyway数据库脚本管理 7. Flyway数据库脚本管理
**三、项目结构** **三、项目结构**
项目结构采用了分层结构 项目结构采用了分层结构
@ -49,8 +43,6 @@ Databasir 采用了前后端分离的模式进行开发和部署,项目仓库
项目数据库脚本放在 dao/src/main/resources/db/migration 目录下 项目数据库脚本放在 dao/src/main/resources/db/migration 目录下
**四、项目启动** **四、项目启动**
1、通过 Java Main 方法启动 1、通过 Java Main 方法启动
@ -78,8 +70,6 @@ spring.flyway.locations=classpath:db/migration
启动完成后,可以通过 http://localhost:8080 访问 启动完成后,可以通过 http://localhost:8080 访问
2、通过 Gradle 启动 2、通过 Gradle 启动
与 Java 启动模式一样,首先需要准备配置文件 与 Java 启动模式一样,首先需要准备配置文件
@ -89,14 +79,12 @@ spring.flyway.locations=classpath:db/migration
```properties ```properties
server.port=8080 server.port=8080
logging.level.org.jooq=INFO logging.level.org.jooq=INFO
# 必须:数据库配置 # 必须:数据库配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=123456 spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/databasir spring.datasource.url=jdbc:mysql://localhost:3306/databasir
spring.jooq.sql-dialect=mysql spring.jooq.sql-dialect=mysql
# 可选flyway 配置 # 可选flyway 配置
spring.flyway.enabled=true spring.flyway.enabled=true
spring.flyway.baseline-on-migrate=true spring.flyway.baseline-on-migrate=true
@ -111,8 +99,6 @@ spring.flyway.locations=classpath:db/migration
启动完成后,可以通过 http://localhost:8080 访问 启动完成后,可以通过 http://localhost:8080 访问
## 前端 ## 前端
一、依赖 一、依赖
@ -122,8 +108,6 @@ spring.flyway.locations=classpath:db/migration
3. element-plus 3. element-plus
4. axios 4. axios
二、运行 二、运行
```shell ```shell

View File

@ -23,14 +23,14 @@ Databasir 采用了前后端分离的模式进行开发和部署,项目仓库
3. 在 Databasir.jar 所在目录创建 config 目录,并在目录下创建 `application.properties` 配置,配置中配置 MYSQL 的用户名、密码和连接 3. 在 Databasir.jar 所在目录创建 config 目录,并在目录下创建 `application.properties` 配置,配置中配置 MYSQL 的用户名、密码和连接
```properties ```properties
# 端口号默认8080 # 端口号,默认 8080
server.port=8080 server.port=8080
# 数据库用户名 # 数据库用户名
databasir.datasource.username=root databasir.db.username=root
# 数据库密码 # 数据库密码
databasir.datasource.password=123456 databasir.db.password=123456
# 数据库地址 # 数据库地址
databasir.datasource.url=127.0.0.1:3306 databasir.db.url=127.0.0.1:3306
``` ```
4. 通过 java -jar Databasir.jar 启动应用即可 4. 通过 java -jar Databasir.jar 启动应用即可
@ -44,8 +44,6 @@ databasir.datasource.url=127.0.0.1:3306
通过该账号登录应用既可以进行管理 通过该账号登录应用既可以进行管理
### Docker 部署 ### Docker 部署
目前镜像没有上传到 DockerHub需要用户自己在本地手动构建 目前镜像没有上传到 DockerHub需要用户自己在本地手动构建
@ -59,13 +57,28 @@ git clone https://github.com/vran-dev/databasir.git
2. 构建镜像 2. 构建镜像
```shell ```shell
docker build -t databasir:v1 . docker build -f Dockerfile -t databasir:v1 .
```
如果你本地有 Java 环境的话我建议通过 gradle 先编译项目再构建镜像,这样会更快
```shell
# 先编译项目
./gradlw api:build
# 再构建镜像
docker build -f local.Dockerfile -t databasir:v1 .
``` ```
3. 启动项目 3. 启动项目
通过 Docker 启动项目也需要通过环境变量来配置数据库信息
- DATABASIR_DB_URL 数据库地址
- DATABASIR_DB_USERNAME 数据库用户
- DATABASIR_DB_PASSWORD 数据库密码
```shell ```shell
docker run -e JAVA_OPTS="-Ddatabasir.datasource.url=127.0.0.1:3306 -Ddatabasir.datasource.username=root -Ddatabasir.datasource.password=123456" -p 8080:8080 -d databasir:v1 docker run --name databasir-demo -e DATABASIR_DB_URL=local_default:3306 -e DATABASIR_DB_USERNAME=root -e DATABASIR_DB_PASSWORD=123456 databasir:v1
``` ```
## Docker Compose 本地部署 ## Docker Compose 本地部署

View File

@ -1,9 +1,9 @@
server.port=8080 server.port=8080
# datasource # datasource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=${databasir.datasource.username} spring.datasource.username=${databasir.db.username}
spring.datasource.password=${databasir.datasource.password} spring.datasource.password=${databasir.db.password}
spring.datasource.url=jdbc:mysql://${databasir.datasource.url}/${databasir.datasource.database-name:databasir} spring.datasource.url=jdbc:mysql://${databasir.db.url}/${databasir.db.name:databasir}
# jooq # jooq
spring.jooq.sql-dialect=mysql spring.jooq.sql-dialect=mysql
# flyway # flyway

9
local.Dockerfile Normal file
View File

@ -0,0 +1,9 @@
FROM openjdk:11.0.13-jre
WORKDIR /app
ADD api/build/libs/databasir.jar /app/databasir.jar
EXPOSE 8080
#-Ddatabasir.datasource.username=${databasir.datasource.username}
#-Ddatabasir.datasource.password=${databasir.datasource.password}
#-Ddatabasir.datasource.url=${databasir.datasource.url}
ENTRYPOINT ["sh", "-c","java -Ddatabasir.db.url=${DATABASIR_DB_URL} -Ddatabasir.db.username=${DATABASIR_DB_USERNAME} -Ddatabasir.db.password=${DATABASIR_DB_PASSWORD} -jar /app/databasir.jar"]