备份
This commit is contained in:
45
.github/workflows/publish-image.yml
vendored
45
.github/workflows/publish-image.yml
vendored
@@ -1,45 +0,0 @@
|
||||
name: Publish Image
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Extract Docker metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=semver,pattern={{raw}}
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
|
||||
with:
|
||||
context: .
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
62
.github/workflows/publish-web.yml
vendored
62
.github/workflows/publish-web.yml
vendored
@@ -1,62 +0,0 @@
|
||||
name: Build and Deploy Web
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["main"]
|
||||
paths:
|
||||
- web/**
|
||||
- ./bootstrap.sh
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./web
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
cache: 'npm'
|
||||
cache-dependency-path: 'web/package-lock.json'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
|
||||
- name: build
|
||||
env:
|
||||
BASE_PATH: ''
|
||||
run: |
|
||||
npm run build
|
||||
touch build/.nojekyll
|
||||
cp ../bootstrap.sh build/bootstrap.sh
|
||||
echo "shokku.dev" > build/CNAME
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v1
|
||||
with:
|
||||
path: ./web/build
|
||||
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
steps:
|
||||
- uses: actions/deploy-pages@v1
|
||||
id: deployment
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -9,3 +9,5 @@ cmd/shokku/dist
|
||||
test.db
|
||||
./shokku
|
||||
.idea
|
||||
pnpm-lock.yaml
|
||||
package-lock.json
|
||||
|
||||
21
Dockerfile
21
Dockerfile
@@ -1,18 +1,22 @@
|
||||
FROM node:alpine AS npm_builder
|
||||
FROM ccr.ccs.tencentyun.com/miaogai/node:alpine AS npmbuilder
|
||||
WORKDIR /app
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||
|
||||
RUN npm config set registry https://registry.npmmirror.com
|
||||
|
||||
RUN apk update && apk add --no-cache pnpm
|
||||
|
||||
COPY ui ./ui
|
||||
|
||||
RUN pnpm --prefix /app/ui install
|
||||
RUN cd /app/ui && pnpm install && pnpm /app/ui run build
|
||||
|
||||
RUN pnpm --prefix /app/ui run build
|
||||
|
||||
FROM golang:alpine AS go_builder
|
||||
FROM ccr.ccs.tencentyun.com/miaogai/golang:alpine AS gobuilder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||
|
||||
RUN apk update && apk add --no-cache git
|
||||
|
||||
COPY cmd ./cmd
|
||||
@@ -21,7 +25,10 @@ COPY go.mod ./go.mod
|
||||
|
||||
COPY internal ./internal
|
||||
|
||||
COPY --from=npm_builder /app/ui/dist ./cmd/shokku/dist
|
||||
COPY --from=npmbuilder /app/ui/dist ./cmd/shokku/dist
|
||||
|
||||
# 保留 Go 代理设置
|
||||
ENV GOPROXY=https://goproxy.cn,direct
|
||||
|
||||
RUN go get -d -v ./...
|
||||
|
||||
@@ -31,6 +38,6 @@ RUN GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o /go/bin/shokku ./cmd/sh
|
||||
|
||||
FROM gcr.io/distroless/static:nonroot
|
||||
|
||||
COPY --from=go_builder /go/bin/shokku /go/bin/shokku
|
||||
COPY --from=gobuilder /go/bin/shokku /go/bin/shokku
|
||||
|
||||
ENTRYPOINT ["/go/bin/shokku"]
|
||||
@@ -10,7 +10,7 @@ DOKKU_STORAGE_DIR="/var/lib/dokku/data/storage/"
|
||||
SHOKKU_DATA_DIR="$DOKKU_STORAGE_DIR/shokku"
|
||||
SHOKKU_APP_DATA_MOUNT_PATH="$SHOKKU_DATA_DIR:/data"
|
||||
SHOKKU_VERSION=${SHOKKU_VERSION:-"latest"}
|
||||
SHOKKU_IMAGE="ghcr.io/texm/shokku:$SHOKKU_VERSION"
|
||||
SHOKKU_IMAGE="ccr.ccs.tencentyun.com/miaogai/shokku:$SHOKKU_VERSION"
|
||||
|
||||
SHOKKU_DOKKU_USER="shokkuadmin"
|
||||
DISTROLESS_NONROOT_UID="65532"
|
||||
|
||||
58
build_and_push.sh
Executable file
58
build_and_push.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Docker 镜像构建和推送脚本
|
||||
# 使用方法: ./build_and_push.sh [镜像标签] [推送标志]
|
||||
|
||||
set -e # 遇到错误立即退出
|
||||
|
||||
# 配置变量
|
||||
IMAGE_NAME="shokku"
|
||||
REGISTRY="ccr.ccs.tencentyun.com" # 替换为您的仓库地址
|
||||
NAMESPACE="miaogai" # 替换为您的命名空间
|
||||
DOCKERFILE="Dockerfile"
|
||||
BUILD_CONTEXT="."
|
||||
|
||||
# 参数处理
|
||||
TAG=${1:-"latest"}
|
||||
PUSH=${2:-"false"}
|
||||
|
||||
# 完整的镜像地址
|
||||
FULL_IMAGE_NAME="${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${TAG}"
|
||||
|
||||
echo "=== Docker 镜像构建和推送 ==="
|
||||
echo "镜像名称: ${FULL_IMAGE_NAME}"
|
||||
echo "Dockerfile: ${DOCKERFILE}"
|
||||
echo "构建上下文: ${BUILD_CONTEXT}"
|
||||
|
||||
# 检查 Docker 是否安装
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "错误: 未找到 Docker,请先安装 Docker"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 构建镜像
|
||||
echo "开始构建镜像..."
|
||||
docker build -t ${IMAGE_NAME}:${TAG} -f ${DOCKERFILE} ${BUILD_CONTEXT}
|
||||
|
||||
# 标记镜像
|
||||
echo "标记镜像..."
|
||||
docker tag ${IMAGE_NAME}:${TAG} ${FULL_IMAGE_NAME}
|
||||
|
||||
# 如果需要推送
|
||||
if [ "$PUSH" = "true" ]; then
|
||||
echo "登录到镜像仓库..."
|
||||
# 如果使用 Docker Hub
|
||||
# docker login
|
||||
|
||||
# 如果使用私有仓库
|
||||
# docker login ${REGISTRY}
|
||||
|
||||
echo "推送镜像到仓库..."
|
||||
docker push ${FULL_IMAGE_NAME}
|
||||
|
||||
echo "✅ 镜像推送完成: ${FULL_IMAGE_NAME}"
|
||||
else
|
||||
echo "ℹ️ 镜像构建完成,未推送 (使用 'true' 作为第二个参数来推送)"
|
||||
fi
|
||||
|
||||
echo "=== 完成 ==="
|
||||
@@ -2,11 +2,12 @@ package api
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"gitlab.com/texm/shokku/internal/env"
|
||||
"gitlab.com/texm/shokku/internal/server/commands"
|
||||
"gitlab.com/texm/shokku/internal/server/dto"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func GetCommandExecutionStatus(e *env.Env, c echo.Context) error {
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"github.com/texm/dokku-go"
|
||||
"time"
|
||||
|
||||
"github.com/texm/dokku-go"
|
||||
)
|
||||
|
||||
type GetAppOverviewRequest struct {
|
||||
@@ -266,7 +267,7 @@ type GetAppConfigResponse struct {
|
||||
}
|
||||
|
||||
type SetAppConfigRequest struct {
|
||||
Name string `json:"name" validate:"appName"`
|
||||
Name string `json:"name" validate:"appName"`
|
||||
Config map[string]string `json:"config"`
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ func SyncUsersToDB(e *env.Env) error {
|
||||
org := install.GetAccount().GetLogin()
|
||||
temp_members, response, err = insClient.Organizations.ListMembers(ctx, org, options)
|
||||
members = append(members, temp_members...)
|
||||
|
||||
|
||||
for response.NextPage != 0 {
|
||||
options := &gh.ListMembersOptions{
|
||||
ListOptions: gh.ListOptions{
|
||||
|
||||
1663
ui/package-lock.json
generated
1663
ui/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -10,7 +10,7 @@
|
||||
"devDependencies": {
|
||||
"@sveltejs/adapter-auto": "next",
|
||||
"@sveltejs/adapter-static": "^3.0.10",
|
||||
"@sveltejs/kit": "^2.46.4",
|
||||
"@sveltejs/kit": "^2.47.0",
|
||||
"@sveltejs/vite-plugin-svelte": "^6.2.1",
|
||||
"@tailwindcss/postcss": "^4.1.14",
|
||||
"autoprefixer": "^10.4.21",
|
||||
@@ -18,15 +18,16 @@
|
||||
"postcss": "^8.5.6",
|
||||
"prettier": "^3.6.2",
|
||||
"prettier-plugin-svelte": "^3.4.0",
|
||||
"svelte": "^5.39.11",
|
||||
"tailwindcss": "^4.1.14"
|
||||
"svelte": "^5.40.1",
|
||||
"tailwindcss": "^4.1.14",
|
||||
"vite": "^7.1.10"
|
||||
},
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@rollup/rollup-darwin-arm64": "^4.52.4",
|
||||
"@sveltestack/svelte-query": "^1.6.0",
|
||||
"@tabler/icons-svelte": "^3.35.0",
|
||||
"daisyui": "^5.1.31",
|
||||
"daisyui": "^5.3.3",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jwt-decode": "^4.0.0",
|
||||
"svelte-file-dropzone": "^2.0.9",
|
||||
|
||||
2107
ui/pnpm-lock.yaml
generated
2107
ui/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user