diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..4292c3c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,52 @@ +permissions: + contents: write + packages: write +on: [release] +env: + IMAGE: RecordingTheSmile/likedream-go + REGISTRY: git.likedream.xyz +jobs: + Build-And-Upload: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + with: + buildkitd-flags: --debug + - name: Inspect builder + run: | + echo "Name: ${{ steps.buildx.outputs.name }}" + echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}" + echo "Status: ${{ steps.buildx.outputs.status }}" + echo "Flags: ${{ steps.buildx.outputs.flags }}" + echo "Platforms: ${{ steps.buildx.outputs.platforms }}" + - name: Login to ghcr + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.PASSWORD }} + - name: Extract metadata for Docker + id: meta + uses: docker/metadata-action@v3 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE }} + tags: | + type=ref,event=tag + - name: Show directory detail + run: | + echo "Current directory is $PWD" + ls -al + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + platforms: linux/amd64 + push: true + tags: ${{ steps.meta.outputs.tags }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..af2548f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM golang:alpine AS backend-builder +WORKDIR /build +COPY . . + +RUN go build -ldflags="-s -w" -o bin/server + +RUN apk add --no-cache upx + +RUN upx --best --lzma bin/server + +FROM alpine:latest +COPY --from=backend-builder /build/bin/server /app/server +COPY static /app/static +COPY static/*.so /app/ +WORKDIR /app +EXPOSE 8080 +RUN ls -a +CMD ["./server"] \ No newline at end of file diff --git a/go.mod b/go.mod index a8054f3..79892ac 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/aws/aws-sdk-go-v2 v1.36.6 github.com/aws/aws-sdk-go-v2/credentials v1.17.71 github.com/aws/aws-sdk-go-v2/service/s3 v1.84.1 + github.com/breml/rootcerts v0.3.3 github.com/bytedance/sonic v1.14.0 github.com/deatil/go-cryptobin v1.1.1005 github.com/go-sql-driver/mysql v1.9.3 diff --git a/go.sum b/go.sum index c72a6d5..6059d67 100644 --- a/go.sum +++ b/go.sum @@ -44,6 +44,8 @@ github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw= github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0= github.com/bmatcuk/doublestar v1.3.4/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/breml/rootcerts v0.3.3 h1://GnaRtQ/9BY2+GtMk2wtWxVdCRysiaPr5/xBwl7NKw= +github.com/breml/rootcerts v0.3.3/go.mod h1:S/PKh+4d1HUn4HQovEB8hPJZO6pUZYrIhmXBhsegfXw= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= diff --git a/main.go b/main.go index 1a0c997..ea28724 100644 --- a/main.go +++ b/main.go @@ -1,13 +1,27 @@ package main import ( - _ "go.uber.org/automaxprocs" "likedream-goframe/cmd/entc" "likedream-goframe/cmd/server" + "likedream-goframe/internal/cst" + "log" "os" + "time" + + _ "time/tzdata" + + _ "github.com/breml/rootcerts" + + _ "go.uber.org/automaxprocs" ) func main() { + // fix: time: unknown time zone Asia/Shanghai + var err error + cst.TimeZoneShangHai, err = time.LoadLocation("Asia/Shanghai") + if err != nil { + log.Panic(err) + } args := "" if len(os.Args) > 1 { args = os.Args[1] diff --git a/static/onnxruntime.so b/static/onnxruntime.so new file mode 100644 index 0000000..64ef20a Binary files /dev/null and b/static/onnxruntime.so differ