Skip to content

Commit 47d6421

Browse files
authored
Add manual & auto release action (#36)
* feat: update dockerfile * feat: add docker build action * feat:add manual release action
1 parent 1f3aa9e commit 47d6421

8 files changed

Lines changed: 110 additions & 43 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created
22
# For more information see: https://github.com/actions/setup-java#publishing-using-gradle
33

4-
name: release
4+
name: docker image latest push
55

66
on:
77
push:
8-
tags:
9-
- 'v*'
8+
branches:
9+
- 'master'
1010

1111
jobs:
1212
release:
@@ -21,19 +21,25 @@ jobs:
2121
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
2222
settings-path: ${{ github.workspace }} # location for the settings.xml file
2323

24-
- name: add permission to gradle
24+
- name: Gradle Permission Grant
2525
run: chmod +x ./gradlew
2626

27-
- name: build with gradle
27+
- name: Gradle Build
2828
run: ./gradlew api:build -x checkstyleMain -x checkstyleTest
2929

30-
- name: release jar
31-
uses: softprops/action-gh-release@v1
32-
if: startsWith(github.ref, 'refs/tags/')
30+
- name: Login to Docker Hub
31+
uses: docker/login-action@v1
3332
with:
34-
files: api/build/libs/databasir.jar
35-
draft: true
36-
fail_on_unmatched_files: true
37-
env:
38-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
33+
username: ${{ secrets.DOCKER_HUB_USERNAME }}
34+
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
3935

36+
- name: Set up Docker Buildx
37+
uses: docker/setup-buildx-action@v1
38+
39+
- name: Docker Image Release
40+
uses: docker/build-push-action@v2
41+
with:
42+
context: .
43+
file: ./local.Dockerfile
44+
push: true
45+
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/databasir:latest
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
tag:
7+
required: true
8+
description: 'release tag version'
9+
10+
jobs:
11+
release:
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- uses: actions/checkout@v2
16+
- name: Set up JDK 11
17+
uses: actions/setup-java@v1
18+
with:
19+
java-version: '11'
20+
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
21+
settings-path: ${{ github.workspace }} # location for the settings.xml file
22+
23+
- name: Gradle Permission Grant
24+
run: chmod +x ./gradlew
25+
26+
- name: Gradle Build
27+
run: ./gradlew api:build -x checkstyleMain -x checkstyleTest
28+
29+
- name: Application Jar Release
30+
uses: softprops/action-gh-release@v1
31+
if: startsWith(github.ref, 'refs/tags/')
32+
with:
33+
tag_name: ${{ github.event.inputs.tag }}
34+
files: api/build/libs/databasir.jar
35+
draft: true
36+
fail_on_unmatched_files: true
37+
env:
38+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39+
40+
- name: Login to Docker Hub
41+
uses: docker/login-action@v1
42+
with:
43+
username: ${{ secrets.DOCKER_HUB_USERNAME }}
44+
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
45+
46+
- name: Set up Docker Buildx
47+
uses: docker/setup-buildx-action@v1
48+
49+
- name: Docker Image Release
50+
uses: docker/build-push-action@v2
51+
with:
52+
context: .
53+
file: ./local.Dockerfile
54+
push: true
55+
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/databasir:${{ github.event.inputs.tag }}

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ EXPOSE 8080
1111
#-Ddatabasir.datasource.username=${databasir.datasource.username}
1212
#-Ddatabasir.datasource.password=${databasir.datasource.password}
1313
#-Ddatabasir.datasource.url=${databasir.datasource.url}
14-
ENTRYPOINT ["sh", "-c","java ${JAVA_OPTS} -jar /app/databasir.jar"]
14+
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"]

README/build.md

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ Databasir 采用了前后端分离的模式进行开发和部署,项目仓库
77
- 后端应用: https://github.com/vran-dev/databasir
88
- 前端应用: https://github.com/vran-dev/databasir-frontend
99

10-
11-
1210
## 后端
1311

1412
**一、环境要求**
@@ -17,22 +15,18 @@ Databasir 采用了前后端分离的模式进行开发和部署,项目仓库
1715
2. Mysql
1816
3. Intellij IDEA
1917

20-
21-
2218
**二、主要框架**
2319

2420
1. Gradle:构建工具
2521
2. Spring-boot:核心框架
26-
1. Web
27-
2. Security
22+
1. Web
23+
2. Security
2824
3. Quartz:定时任务调度
2925
4. JOOQ:ORM 框架
3026
5. Lombok:代码生成
3127
6. Mapstruct:代码生成
3228
7. Flyway:数据库脚本管理
3329

34-
35-
3630
**三、项目结构**
3731

3832
项目结构采用了分层结构
@@ -49,8 +43,6 @@ Databasir 采用了前后端分离的模式进行开发和部署,项目仓库
4943

5044
项目数据库脚本放在 dao/src/main/resources/db/migration 目录下
5145

52-
53-
5446
**四、项目启动**
5547

5648
1、通过 Java Main 方法启动
@@ -78,8 +70,6 @@ spring.flyway.locations=classpath:db/migration
7870

7971
启动完成后,可以通过 http://localhost:8080 访问
8072

81-
82-
8373
2、通过 Gradle 启动
8474

8575
与 Java 启动模式一样,首先需要准备配置文件
@@ -89,14 +79,12 @@ spring.flyway.locations=classpath:db/migration
8979
```properties
9080
server.port=8080
9181
logging.level.org.jooq=INFO
92-
9382
# 必须:数据库配置
9483
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
9584
spring.datasource.username=root
9685
spring.datasource.password=123456
9786
spring.datasource.url=jdbc:mysql://localhost:3306/databasir
9887
spring.jooq.sql-dialect=mysql
99-
10088
# 可选:flyway 配置
10189
spring.flyway.enabled=true
10290
spring.flyway.baseline-on-migrate=true
@@ -111,8 +99,6 @@ spring.flyway.locations=classpath:db/migration
11199

112100
启动完成后,可以通过 http://localhost:8080 访问
113101

114-
115-
116102
## 前端
117103

118104
一、依赖
@@ -122,8 +108,6 @@ spring.flyway.locations=classpath:db/migration
122108
3. element-plus
123109
4. axios
124110

125-
126-
127111
二、运行
128112

129113
```shell

README/deploy.md

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ Databasir 采用了前后端分离的模式进行开发和部署,项目仓库
2323
3. 在 Databasir.jar 所在目录创建 config 目录,并在目录下创建 `application.properties` 配置,配置中配置 MYSQL 的用户名、密码和连接
2424

2525
```properties
26-
# 端口号,默认8080
26+
# 端口号,默认 8080
2727
server.port=8080
2828
# 数据库用户名
29-
databasir.datasource.username=root
29+
databasir.db.username=root
3030
# 数据库密码
31-
databasir.datasource.password=123456
31+
databasir.db.password=123456
3232
# 数据库地址
33-
databasir.datasource.url=127.0.0.1:3306
33+
databasir.db.url=127.0.0.1:3306
3434
```
3535

3636
4. 通过 java -jar Databasir.jar 启动应用即可
@@ -44,8 +44,6 @@ databasir.datasource.url=127.0.0.1:3306
4444

4545
通过该账号登录应用既可以进行管理
4646

47-
48-
4947
### Docker 部署
5048

5149
目前镜像没有上传到 DockerHub,需要用户自己在本地手动构建
@@ -59,13 +57,28 @@ git clone https://github.com/vran-dev/databasir.git
5957
2. 构建镜像
6058

6159
```shell
62-
docker build -t databasir:v1 .
60+
docker build -f Dockerfile -t databasir:v1 .
61+
```
62+
63+
如果你本地有 Java 环境的话我建议通过 gradle 先编译项目再构建镜像,这样会更快
64+
```shell
65+
# 先编译项目
66+
./gradlw api:build
67+
68+
# 再构建镜像
69+
docker build -f local.Dockerfile -t databasir:v1 .
6370
```
6471

6572
3. 启动项目
6673

74+
通过 Docker 启动项目也需要通过环境变量来配置数据库信息
75+
76+
- DATABASIR_DB_URL 数据库地址
77+
- DATABASIR_DB_USERNAME 数据库用户
78+
- DATABASIR_DB_PASSWORD 数据库密码
79+
6780
```shell
68-
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
81+
docker run --name databasir-demo -e DATABASIR_DB_URL=local_default:3306 -e DATABASIR_DB_USERNAME=root -e DATABASIR_DB_PASSWORD=123456 databasir:v1
6982
```
7083

7184
## Docker Compose 本地部署

api/src/main/resources/application.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
server.port=8080
22
# datasource
33
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
4-
spring.datasource.username=${databasir.datasource.username}
5-
spring.datasource.password=${databasir.datasource.password}
6-
spring.datasource.url=jdbc:mysql://${databasir.datasource.url}/${databasir.datasource.database-name:databasir}
4+
spring.datasource.username=${databasir.db.username}
5+
spring.datasource.password=${databasir.db.password}
6+
spring.datasource.url=jdbc:mysql://${databasir.db.url}/${databasir.db.name:databasir}
77
# jooq
88
spring.jooq.sql-dialect=mysql
99
# flyway

local.Dockerfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM openjdk:11.0.13-jre
2+
WORKDIR /app
3+
ADD api/build/libs/databasir.jar /app/databasir.jar
4+
EXPOSE 8080
5+
6+
#-Ddatabasir.datasource.username=${databasir.datasource.username}
7+
#-Ddatabasir.datasource.password=${databasir.datasource.password}
8+
#-Ddatabasir.datasource.url=${databasir.datasource.url}
9+
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"]

0 commit comments

Comments
 (0)