jinnrry пре 2 година
родитељ
комит
ba5a53a4e2
5 измењених фајлова са 96 додато и 34 уклоњено
  1. 44 0
      .github/workflows/docker_build.yml
  2. 45 33
      .github/workflows/release.yml
  3. 3 0
      README.md
  4. 3 0
      README_CN.md
  5. 1 1
      server/config/config.go

+ 44 - 0
.github/workflows/docker_build.yml

@@ -0,0 +1,44 @@
+name: Docker Image CI
+
+on:
+  workflow_dispatch:
+  release:
+    types: [released]
+
+env:
+  REGISTRY: ghcr.io
+
+jobs:
+  build-and-push-image:
+    runs-on: ubuntu-latest
+    permissions:
+      contents: read
+      packages: write
+    steps:
+      - name: Get version
+        id: get_version
+        run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> ${GITHUB_ENV}
+
+      - uses: actions/checkout@v3
+
+      - name: set lower case repository name
+        run: |
+          echo "REPOSITORY_LC=${REPOSITORY,,}" >> ${GITHUB_ENV}
+        env:
+          REPOSITORY: '${{ github.repository }}'
+
+      - name: Log in to the Container registry
+        uses: docker/login-action@v2.1.0
+        with:
+          registry: ${{ env.REGISTRY }}
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Build and push Docker images
+        uses: docker/build-push-action@v4
+        with:
+          context: .
+          push: true
+          tags: |
+            ${{ env.REGISTRY }}/${{ env.REPOSITORY_LC }}:${{ env.VERSION }}
+            ${{ env.REGISTRY }}/${{ env.REPOSITORY_LC }}:latest

+ 45 - 33
.github/workflows/release.yml

@@ -1,44 +1,56 @@
-name: Docker Image CI
+name: Build and Release
 
 on:
-  push:
-    tags:
-      - "*"
-
-env:
-  REGISTRY: ghcr.io
+  workflow_dispatch:
+  release:
+    types: [released]
 
+      
 jobs:
-  build-and-push-image:
-    runs-on: ubuntu-latest
+  build:
     permissions:
-      contents: read
-      packages: write
+      contents: write
+    strategy:
+      matrix:
+        goos: [windows,  linux, darwin]
+        goarch: [amd64, arm64]
+    runs-on: ubuntu-latest
+    env: 
+        CGO_ENABLED: 0 
+        GOOS: ${{ matrix.goos }} 
+        GOARCH: ${{ matrix.goarch }} 
     steps:
       - name: Get version
         id: get_version
-        run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> ${GITHUB_ENV}
-
-      - uses: actions/checkout@v3
-
-      - name: set lower case repository name
+        run: echo "VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
+      - name: Checkout
+        uses: actions/checkout@v4.0.0
+      - name: Setup Node.js environment
+        uses: actions/setup-node@v3.8.1
+      - name: Install Dependencies
+        run: npm install --global yarn
+      - name: Setup Go environment
+        uses: actions/setup-go@v4.1.0
+      - name: Gen output name
+        run: echo "FILENAME=pmail_${{ matrix.goos }}_${{ matrix.goarch }}" >> ${GITHUB_ENV}
+      - name: Rename Windows File
+        if: matrix.goos == 'windows'
+        run: echo "FILENAME=pmail_${{ matrix.goos }}_${{ matrix.goarch }}.exe" >> ${GITHUB_ENV}
+      - name: FE Build
+        run: cd fe && yarn && yarn build
+      - name: BE Build
         run: |
-          echo "REPOSITORY_LC=${REPOSITORY,,}" >> ${GITHUB_ENV}
-        env:
-          REPOSITORY: '${{ github.repository }}'
-
-      - name: Log in to the Container registry
-        uses: docker/login-action@v2.1.0
+            cd server && cp -rf ../fe/dist http_server
+            go build -ldflags "-s -w -X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o ${{ env.FILENAME }}  main.go
+      - name: Upload files to Artifacts
+        uses: actions/upload-artifact@v3
         with:
-          registry: ${{ env.REGISTRY }}
-          username: ${{ github.actor }}
-          password: ${{ secrets.GITHUB_TOKEN }}
-
-      - name: Build and push Docker images
-        uses: docker/build-push-action@v4
+          name: ${{ env.FILENAME }}
+          path: ./server/${{ env.FILENAME }}
+      - name: Upload binaries to release
+        uses: svenstaro/upload-release-action@v2
         with:
-          context: .
-          push: true
-          tags: |
-            ${{ env.REGISTRY }}/${{ env.REPOSITORY_LC }}:${{ env.VERSION }}
-            ${{ env.REGISTRY }}/${{ env.REPOSITORY_LC }}:latest
+          repo_token: ${{ secrets.GITHUB_TOKEN }}
+          file: ./server/${{ env.FILENAME }}
+          tag: ${{ github.ref }}
+          file_glob: true

+ 3 - 0
README.md

@@ -55,6 +55,9 @@ Or
 
 `docker run -p 25:25 -p 80:80 -p 443:443 -p 465:465 -v $(pwd)/config:/work/config ghcr.io/jinnrry/pmail:latest`
 
+> [!IMPORTANT]
+> If your server has a firewall turned on, you need to open ports 25, 80, and 443.
+
 ## 3、Configuration
 
 Open `http://127.0.0.1` in your browser or use your server's public IP to visit, then follow the instructions to

+ 3 - 0
README_CN.md

@@ -59,6 +59,9 @@ PMail是一个追求极简部署流程、极致资源占用的个人域名邮箱
 
 `docker run -p 25:25 -p 80:80 -p 443:443 -p 465:465 -v $(pwd)/config:/work/config ghcr.io/jinnrry/pmail:latest`
 
+> [!IMPORTANT]
+> 如果你服务器开启了防火墙,你需要放行25、80、443这三个端口
+
 ## 3、配置
 
 浏览器打开 `http://127.0.0.1` 或者是用你服务器公网IP访问,然后按提示配置

+ 1 - 1
server/config/config.go

@@ -38,7 +38,7 @@ type Config struct {
 //go:embed tables/*
 var tableConfig embed.FS
 
-const Version = "2.2.2"
+const Version = "2.2.6"
 
 const DBTypeMySQL = "mysql"
 const DBTypeSQLite = "sqlite"