feat: remove workflows and add build feature
This commit is contained in:
parent
bcd8545930
commit
e2a06ba0ea
15 changed files with 23 additions and 972 deletions
8
.github/ISSUE_TEMPLATE/config.yml
vendored
8
.github/ISSUE_TEMPLATE/config.yml
vendored
|
|
@ -1,8 +0,0 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Ask a question or discuss a topic
|
||||
url: https://discord.com/invite/BkMR2NUsjU
|
||||
about: Ask questions and discuss with other community members
|
||||
- name: Join Yao community
|
||||
url: https://yaoapps.com/community
|
||||
about: Join the community to get updates and news
|
||||
13
.github/ISSUE_TEMPLATE/issue_report.md
vendored
13
.github/ISSUE_TEMPLATE/issue_report.md
vendored
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
name: "Report an issue"
|
||||
about: "Report an issue to help us improve"
|
||||
labels: ""
|
||||
assignees: ""
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
## Context
|
||||
|
||||
- **Yao Version( yao version --all )**:
|
||||
- **Platform**:
|
||||
6
.github/actions/setup-db/Dockerfile
vendored
6
.github/actions/setup-db/Dockerfile
vendored
|
|
@ -1,6 +0,0 @@
|
|||
FROM docker:stable
|
||||
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
22
.github/actions/setup-db/action.yml
vendored
22
.github/actions/setup-db/action.yml
vendored
|
|
@ -1,22 +0,0 @@
|
|||
inputs:
|
||||
kind:
|
||||
description: "Chose the kind of database (MySQL8.0, MySQL5.7, Postgres9.6, Postgres14.0, SQLite3)"
|
||||
required: true
|
||||
db:
|
||||
description: "The name of database"
|
||||
required: false
|
||||
default: "github"
|
||||
port:
|
||||
description: "The port of database"
|
||||
required: false
|
||||
user:
|
||||
description: "The user of database"
|
||||
required: false
|
||||
default: "github"
|
||||
password:
|
||||
description: "The passowrd of database"
|
||||
required: false
|
||||
default: "123456"
|
||||
runs:
|
||||
using: "docker"
|
||||
image: "Dockerfile"
|
||||
86
.github/actions/setup-db/entrypoint.sh
vendored
86
.github/actions/setup-db/entrypoint.sh
vendored
|
|
@ -1,86 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
docker_run="docker run"
|
||||
|
||||
startMySQL() {
|
||||
|
||||
PORT="3306"
|
||||
if [ ! -z "$INPUT_PORT" ]; then
|
||||
PORT=$INPUT_PORT
|
||||
fi
|
||||
|
||||
|
||||
VERSION=$1
|
||||
echo "Start MySQL $VERSION"
|
||||
docker_run="$docker_run -e MYSQL_RANDOM_ROOT_PASSWORD=true -e MYSQL_USER=$INPUT_USER -e MYSQL_PASSWORD=$INPUT_PASSWORD"
|
||||
docker_run="$docker_run -e MYSQL_DATABASE=$INPUT_DB"
|
||||
docker_run="$docker_run -d -p $PORT:3306 mysql:$VERSION --port=3306 --sql-mode=''"
|
||||
|
||||
if [ "$VERSION" = "5.6" ]; then
|
||||
docker_run="$docker_run --character-set-server=utf8 --collation-server=utf8_general_ci"
|
||||
else
|
||||
docker_run="$docker_run --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci"
|
||||
fi
|
||||
|
||||
sh -c "$docker_run"
|
||||
|
||||
DB_HOST="tcp(127.0.0.1:$PORT)/$INPUT_DB?charset=utf8mb4&parseTime=True&loc=Local"
|
||||
DB_USER=$INPUT_USER
|
||||
echo "DB_HOST=$DB_HOST" >> $GITHUB_ENV
|
||||
echo "DB_USER=$DB_USER" >> $GITHUB_ENV
|
||||
echo "DB_DRIVER=mysql" >> $GITHUB_ENV
|
||||
echo "DB_NAME=mysql$VERSION" >> $GITHUB_ENV
|
||||
echo "$DB_HOST"
|
||||
}
|
||||
|
||||
startPostgres() {
|
||||
VERSION=$1
|
||||
echo "Start Postgres $VERSION"
|
||||
docker_run="$docker_run --name postgres_$VERSION"
|
||||
docker_run="$docker_run -e POSTGRES_DB=$INPUT_DB"
|
||||
docker_run="$docker_run -e POSTGRES_USER=$INPUT_USER"
|
||||
docker_run="$docker_run -e POSTGRES_PASSWORD=$INPUT_PASSWORD"
|
||||
docker_run="$docker_run -d -p 5432:5432 postgres:$VERSION"
|
||||
sh -c "$docker_run"
|
||||
|
||||
# waiting for postgres ready
|
||||
timeout 90s sh -c "until docker exec postgres_$VERSION pg_isready ; do sleep 5 ; done"
|
||||
|
||||
DB_HOST="127.0.0.1/$INPUT_DB?sslmode=disable"
|
||||
DB_USER=$INPUT_USER
|
||||
echo "DB_HOST=$DB_HOST" >> $GITHUB_ENV
|
||||
echo "DB_USER=$DB_USER" >> $GITHUB_ENV
|
||||
echo "DB_DRIVER=postgres" >> $GITHUB_ENV
|
||||
echo "DB_NAME=postgres$VERSION" >> $GITHUB_ENV
|
||||
echo "$DB_HOST"
|
||||
}
|
||||
|
||||
startSQLite3() {
|
||||
echo "Start SQLite3"
|
||||
echo "DB_HOST=$INPUT_DB.db" >> $GITHUB_ENV
|
||||
echo "DB_DRIVER=sqlite3" >> $GITHUB_ENV
|
||||
echo "DB_NAME=sqlite3" >> $GITHUB_ENV
|
||||
echo "$DB_HOST"
|
||||
}
|
||||
|
||||
# MySQL8.0, MySQL5.7, Postgres9.6, Postgres14, SQLite3
|
||||
case $INPUT_KIND in
|
||||
MySQL8.0)
|
||||
startMySQL 8.0
|
||||
;;
|
||||
MySQL5.7)
|
||||
startMySQL 5.7
|
||||
;;
|
||||
MySQL5.6)
|
||||
startMySQL 5.6
|
||||
;;
|
||||
Postgres9.6)
|
||||
startPostgres 9.6
|
||||
;;
|
||||
Postgres14.0)
|
||||
startPostgres 14.0
|
||||
;;
|
||||
SQLite3)
|
||||
startSQLite3
|
||||
;;
|
||||
esac
|
||||
70
.github/workflows/build-docker-internal.yml
vendored
70
.github/workflows/build-docker-internal.yml
vendored
|
|
@ -1,70 +0,0 @@
|
|||
name: Push docker images to internal registry
|
||||
|
||||
on:
|
||||
# push:
|
||||
# branches: [main]
|
||||
# paths:
|
||||
# - ".github/workflows/docker.yml"
|
||||
workflow_run:
|
||||
workflows: ["Build Linux Artifacts"]
|
||||
types:
|
||||
- completed
|
||||
|
||||
env:
|
||||
VERSION: 0.10.4
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 120
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Get Version
|
||||
run: |
|
||||
echo VERSION=$(cat share/const.go |grep 'const VERSION' | awk '{print $4}' | sed "s/\"//g")-unstable >> $GITHUB_ENV
|
||||
|
||||
- name: Check Version
|
||||
run: echo $VERSION
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: hub.iqka.com
|
||||
username: ${{ secrets.DOCKER_INTERNAL_USER }}
|
||||
password: ${{ secrets.DOCKER_INTERNAL_TOKEN }}
|
||||
|
||||
- name: Build Production
|
||||
timeout-minutes: 60
|
||||
uses: docker/build-push-action@v6
|
||||
env:
|
||||
DOCKER_CONTENT_TRUST: 1
|
||||
with:
|
||||
context: ./docker/production
|
||||
platforms: linux/amd64
|
||||
build-args: |
|
||||
VERSION=${{ env.VERSION }}
|
||||
ARCH=amd64
|
||||
push: true
|
||||
tags: hub.iqka.com/yaoapp/yao:${{ env.VERSION }}-amd64
|
||||
|
||||
- name: Build Production Arm64
|
||||
timeout-minutes: 60
|
||||
uses: docker/build-push-action@v6
|
||||
env:
|
||||
DOCKER_CONTENT_TRUST: 1
|
||||
with:
|
||||
context: ./docker/production
|
||||
platforms: linux/arm64
|
||||
build-args: |
|
||||
VERSION=${{ env.VERSION }}
|
||||
ARCH=arm64
|
||||
push: true
|
||||
tags: hub.iqka.com/yaoapp/yao:${{ env.VERSION }}-arm64
|
||||
92
.github/workflows/build-docker.yml
vendored
92
.github/workflows/build-docker.yml
vendored
|
|
@ -1,92 +0,0 @@
|
|||
name: Build and push docker images
|
||||
|
||||
on:
|
||||
# push:
|
||||
# branches: [main]
|
||||
# paths:
|
||||
# - ".github/workflows/docker.yml"
|
||||
workflow_run:
|
||||
workflows: ["Build Linux Artifacts"]
|
||||
types:
|
||||
- completed
|
||||
|
||||
env:
|
||||
VERSION: 0.10.4
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Get Version
|
||||
run: |
|
||||
echo VERSION=$(cat share/const.go |grep 'const VERSION' | awk '{print $4}' | sed "s/\"//g")-unstable >> $GITHUB_ENV
|
||||
|
||||
- name: Check Version
|
||||
run: echo $VERSION
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USER }}
|
||||
password: ${{ secrets.DOCKER_TOKEN }}
|
||||
|
||||
- name: Build Development
|
||||
uses: docker/build-push-action@v6
|
||||
env:
|
||||
DOCKER_CONTENT_TRUST: 1
|
||||
with:
|
||||
context: ./docker/development
|
||||
platforms: linux/amd64
|
||||
build-args: |
|
||||
VERSION=${{ env.VERSION }}
|
||||
ARCH=amd64
|
||||
push: true
|
||||
tags: yaoapp/yao:${{ env.VERSION }}-amd64-dev
|
||||
|
||||
- name: Build Development Arm64
|
||||
uses: docker/build-push-action@v6
|
||||
env:
|
||||
DOCKER_CONTENT_TRUST: 1
|
||||
with:
|
||||
context: ./docker/development
|
||||
platforms: linux/arm64
|
||||
build-args: |
|
||||
VERSION=${{ env.VERSION }}
|
||||
ARCH=arm64
|
||||
push: true
|
||||
tags: yaoapp/yao:${{ env.VERSION }}-arm64-dev
|
||||
|
||||
- name: Build Production
|
||||
uses: docker/build-push-action@v6
|
||||
env:
|
||||
DOCKER_CONTENT_TRUST: 1
|
||||
with:
|
||||
context: ./docker/production
|
||||
platforms: linux/amd64
|
||||
build-args: |
|
||||
VERSION=${{ env.VERSION }}
|
||||
ARCH=amd64
|
||||
push: true
|
||||
tags: yaoapp/yao:${{ env.VERSION }}-amd64
|
||||
|
||||
- name: Build Production Arm64
|
||||
uses: docker/build-push-action@v6
|
||||
env:
|
||||
DOCKER_CONTENT_TRUST: 1
|
||||
with:
|
||||
context: ./docker/production
|
||||
platforms: linux/arm64
|
||||
build-args: |
|
||||
VERSION=${{ env.VERSION }}
|
||||
ARCH=arm64
|
||||
push: true
|
||||
tags: yaoapp/yao:${{ env.VERSION }}-arm64
|
||||
22
.github/workflows/build-linux.yml
vendored
22
.github/workflows/build-linux.yml
vendored
|
|
@ -10,23 +10,9 @@ jobs:
|
|||
build:
|
||||
runs-on: "ubuntu-latest"
|
||||
container:
|
||||
image: yaoapp/yao-build:0.10.4
|
||||
|
||||
env:
|
||||
CF_ACCESS_KEY_ID: ${{ secrets.CF_ACCESS_KEY_ID }}
|
||||
CF_SECRET_ACCESS_KEY: ${{ secrets.CF_SECRET_ACCESS_KEY }}
|
||||
R2_BUCKET: ${{ secrets.R2_BUCKET }}
|
||||
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
|
||||
image: sjzsdu/yao-build:0.10.4
|
||||
|
||||
steps:
|
||||
- name: Configure R2 For Cloudflare
|
||||
run: |
|
||||
aws configure set aws_access_key_id $CF_ACCESS_KEY_ID
|
||||
aws configure set aws_secret_access_key $CF_SECRET_ACCESS_KEY
|
||||
aws configure set default.region us-east-1 # Update with your R2 region if different
|
||||
aws configure set default.s3.signature_version s3v4
|
||||
aws configure set default.s3.endpoint_url https://$R2_ACCOUNT_ID.r2.cloudflarestorage.com
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export PATH=$PATH:/github/home/go/bin
|
||||
|
|
@ -39,9 +25,3 @@ jobs:
|
|||
name: yao-linux
|
||||
path: |
|
||||
/data/*
|
||||
|
||||
- name: Push To R2 Cloudflare
|
||||
run: |
|
||||
for file in /data/*; do
|
||||
aws s3 cp $file s3://$R2_BUCKET/archives/ --endpoint-url https://$R2_ACCOUNT_ID.r2.cloudflarestorage.com
|
||||
done
|
||||
|
|
|
|||
55
.github/workflows/build-macos.yml
vendored
55
.github/workflows/build-macos.yml
vendored
|
|
@ -49,7 +49,7 @@ jobs:
|
|||
- name: Checkout Gou
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/gou
|
||||
repository: sjzsdu/gou
|
||||
path: gou
|
||||
|
||||
- name: Checkout V8Go
|
||||
|
|
@ -73,7 +73,7 @@ jobs:
|
|||
# ** new repository: https://github.com/YaoApp/dui.git **
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/xgen
|
||||
repository: sjzsdu/xgen
|
||||
path: xgen-v1.0
|
||||
|
||||
- name: Checkout Yao-Init
|
||||
|
|
@ -97,6 +97,8 @@ jobs:
|
|||
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: sjzsdu/yao
|
||||
|
||||
- name: Setup Go ${{ matrix.go }}
|
||||
uses: actions/setup-go@v5
|
||||
|
|
@ -117,55 +119,6 @@ jobs:
|
|||
mv dist/release/yao-$VERSION-dev-darwin-arm64 dist/release/yao-$VERSION-unstable-darwin-arm64
|
||||
mv dist/release/yao-$VERSION-dev-darwin-amd64 dist/release/yao-$VERSION-unstable-darwin-amd64
|
||||
|
||||
- name: Install Certificates
|
||||
env:
|
||||
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
|
||||
|
||||
run: |
|
||||
mkdir -p certs
|
||||
echo "${{ secrets.APPLE_DEVELOPERIDG2CA }}" | base64 --decode > certs/DeveloperIDG2CA.cer
|
||||
echo "${{ secrets.APPLE_DISTRIBUTION }}" | base64 --decode > certs/distribution.cer
|
||||
echo "${{ secrets.APPLE_PRIVATE_KEY }}" | base64 --decode > certs/private_key.p12
|
||||
security verify-cert -c certs/DeveloperIDG2CA.cer
|
||||
security verify-cert -c certs/distribution.cer
|
||||
|
||||
- name: Import Certificates
|
||||
run: |
|
||||
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
|
||||
|
||||
# create temporary keychain
|
||||
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
|
||||
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
|
||||
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
|
||||
|
||||
# import certificate to keychain
|
||||
security import ./certs/DeveloperIDG2CA.cer -k $KEYCHAIN_PATH -T /usr/bin/codesign
|
||||
security import ./certs/distribution.cer -k $KEYCHAIN_PATH -T /usr/bin/codesign
|
||||
|
||||
# import private key to keychain
|
||||
security import ./certs/private_key.p12 -k $KEYCHAIN_PATH -P "${{ secrets.APPLE_PRIVATE_KEY_PASSWORD }}" -T /usr/bin/codesign
|
||||
|
||||
security list-keychain -d user -s $KEYCHAIN_PATH
|
||||
|
||||
- name: Sign Artifacts
|
||||
run: |
|
||||
codesign --deep --force --verbose --timestamp --sign "Developer ID Application: ${{ secrets.APPLE_SIGN }}" dist/release/yao-$VERSION-unstable-darwin-arm64
|
||||
codesign --deep --force --verbose --timestamp --options runtime --sign "Developer ID Application: ${{ secrets.APPLE_SIGN }}" dist/release/yao-$VERSION-unstable-darwin-amd64
|
||||
|
||||
- name: Verify Signature
|
||||
run: |
|
||||
codesign --verify --deep --strict --verbose=2 dist/release/yao-$VERSION-unstable-darwin-arm64
|
||||
codesign --verify --deep --strict --verbose=2 dist/release/yao-$VERSION-unstable-darwin-amd64
|
||||
|
||||
- name: Send to Apple Notary Service
|
||||
run: |
|
||||
zip -r dist/release/yao-$VERSION-unstable-darwin-arm64.zip dist/release/yao-$VERSION-unstable-darwin-arm64
|
||||
zip -r dist/release/yao-$VERSION-unstable-darwin-amd64.zip dist/release/yao-$VERSION-unstable-darwin-amd64
|
||||
xcrun notarytool submit dist/release/yao-$VERSION-unstable-darwin-arm64.zip --apple-id "${{ secrets.APPLE_ID }}" --team-id "${{ secrets.APPLE_TEAME_ID }}" --password "${{ secrets.APPLE_APP_SPEC_PASS }}" --output-format json
|
||||
xcrun notarytool submit dist/release/yao-$VERSION-unstable-darwin-amd64.zip --apple-id "${{ secrets.APPLE_ID }}" --team-id "${{ secrets.APPLE_TEAME_ID }}" --password "${{ secrets.APPLE_APP_SPEC_PASS }}" --output-format json
|
||||
rm -f dist/release/yao-$VERSION-unstable-darwin-arm64.zip
|
||||
rm -f dist/release/yao-$VERSION-unstable-darwin-amd64.zip
|
||||
|
||||
- name: Archive production artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
|
|
|||
24
.github/workflows/pr-receive.yml
vendored
24
.github/workflows/pr-receive.yml
vendored
|
|
@ -1,24 +0,0 @@
|
|||
name: Receive PR
|
||||
|
||||
# read-only repo token
|
||||
# no access to secrets
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Save PR number
|
||||
run: |
|
||||
mkdir -p ./pr
|
||||
echo ${{ github.event.number }} > ./pr/NR
|
||||
echo ${{ github.event.pull_request.head.sha }} > ./pr/SHA
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: pr
|
||||
path: pr/
|
||||
282
.github/workflows/pr-test.yml
vendored
282
.github/workflows/pr-test.yml
vendored
|
|
@ -1,282 +0,0 @@
|
|||
name: PR Unit Test
|
||||
|
||||
# read-write repo token
|
||||
# access to secrets
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["Receive PR"]
|
||||
types:
|
||||
- completed
|
||||
env:
|
||||
YAO_DEV: ${{ github.WORKSPACE }}
|
||||
YAO_ENV: development
|
||||
YAO_ROOT: ${{ github.WORKSPACE }}/../app
|
||||
YAO_HOST: 0.0.0.0
|
||||
YAO_PORT: 5099
|
||||
YAO_SESSION: "memory"
|
||||
YAO_LOG: "./logs/application.log"
|
||||
YAO_LOG_MODE: "TEXT"
|
||||
YAO_JWT_SECRET: "bLp@bi!oqo-2U+hoTRUG"
|
||||
YAO_DB_AESKEY: "ZLX=T&f6refeCh-ro*r@"
|
||||
OSS_TEST_ID: ${{ secrets.OSS_TEST_ID}}
|
||||
OSS_TEST_SECRET: ${{ secrets.OSS_TEST_SECRET}}
|
||||
ROOT_PLUGIN: ${{ github.WORKSPACE }}/../../../data/gou-unit/plugins
|
||||
|
||||
MYSQL_TEST_HOST: "127.0.0.1"
|
||||
MYSQL_TEST_PORT: "3308"
|
||||
MYSQL_TEST_USER: test
|
||||
MYSQL_TEST_PASS: "123456"
|
||||
|
||||
SQLITE_DB: "./app/db/yao.db"
|
||||
|
||||
REDIS_TEST_HOST: "127.0.0.1"
|
||||
REDIS_TEST_PORT: "6379"
|
||||
REDIS_TEST_DB: "2"
|
||||
|
||||
MONGO_TEST_HOST: "127.0.0.1"
|
||||
MONGO_TEST_PORT: "27017"
|
||||
MONGO_TEST_USER: "root"
|
||||
MONGO_TEST_PASS: "123456"
|
||||
|
||||
OPENAI_TEST_KEY: ${{ secrets.OPENAI_TEST_KEY }}
|
||||
TEST_MOAPI_SECRET: ${{ secrets.OPENAI_TEST_KEY }}
|
||||
TEST_MOAPI_MIRROR: https://api.openai.com
|
||||
|
||||
TAB_NAME: "::PET ADMIN"
|
||||
PAGE_SIZE: "20"
|
||||
PAGE_LINK: "https://yaoapps.com"
|
||||
PAGE_ICON: "icon-trash"
|
||||
|
||||
DEMO_APP: ${{ github.WORKSPACE }}/../app
|
||||
|
||||
# Application Setting
|
||||
|
||||
## Path
|
||||
YAO_EXTENSION_ROOT: ${{ github.WORKSPACE }}/../extension
|
||||
YAO_TEST_APPLICATION: ${{ github.WORKSPACE }}/../app
|
||||
YAO_SUI_TEST_APPLICATION: ${{ github.WORKSPACE }}/../yao-startup-webapp
|
||||
|
||||
## Runtime
|
||||
YAO_RUNTIME_MIN: 3
|
||||
YAO_RUNTIME_MAX: 6
|
||||
YAO_RUNTIME_HEAP_LIMIT: 1500000000
|
||||
YAO_RUNTIME_HEAP_RELEASE: 10000000
|
||||
YAO_RUNTIME_HEAP_AVAILABLE: 550000000
|
||||
YAO_RUNTIME_PRECOMPILE: true
|
||||
|
||||
jobs:
|
||||
UnitTest:
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
go: [1.23]
|
||||
db: [MySQL8.0, MySQL5.7, SQLite3]
|
||||
redis: [4, 5, 6]
|
||||
mongo: ["6.0"]
|
||||
if: >
|
||||
${{ github.event.workflow_run.event == 'pull_request' &&
|
||||
github.event.workflow_run.conclusion == 'success' }}
|
||||
steps:
|
||||
- name: "Download artifact"
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: ${{github.event.workflow_run.id }},
|
||||
});
|
||||
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
||||
return artifact.name == "pr"
|
||||
})[0];
|
||||
var download = await github.rest.actions.downloadArtifact({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
artifact_id: matchArtifact.id,
|
||||
archive_format: 'zip',
|
||||
});
|
||||
var fs = require('fs');
|
||||
fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data));
|
||||
|
||||
- name: "Read NR & SHA"
|
||||
run: |
|
||||
unzip pr.zip
|
||||
cat NR
|
||||
cat SHA
|
||||
echo HEAD=$(cat SHA) >> $GITHUB_ENV
|
||||
echo NR=$(cat NR) >> $GITHUB_ENV
|
||||
|
||||
- name: "Comment on PR"
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
const { NR } = process.env
|
||||
var fs = require('fs');
|
||||
var issue_number = NR;
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issue_number,
|
||||
body: 'Thank you for the PR! The db: ${{ matrix.db }} redis: ${{ matrix.redis }} mongo: ${{ matrix.mongo }} test workflow is running, the results of the run will be commented later.'
|
||||
});
|
||||
|
||||
- name: Checkout Kun
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/kun
|
||||
path: kun
|
||||
|
||||
- name: Checkout Xun
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/xun
|
||||
path: xun
|
||||
|
||||
- name: Checkout Gou
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/gou
|
||||
path: gou
|
||||
|
||||
- name: Checkout V8Go
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/v8go
|
||||
path: v8go
|
||||
|
||||
- name: Unzip libv8
|
||||
run: |
|
||||
files=$(find ./v8go -name "libv8*.zip")
|
||||
for file in $files; do
|
||||
dir=$(dirname "$file") # Get the directory where the ZIP file is located
|
||||
echo "Extracting $file to directory $dir"
|
||||
unzip -o -d $dir $file
|
||||
rm -rf $dir/__MACOSX
|
||||
done
|
||||
|
||||
- name: Checkout Demo App
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/yao-dev-app
|
||||
path: app
|
||||
|
||||
- name: Checkout Yao Startup Webapp
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/yao-startup-webapp
|
||||
submodules: true
|
||||
token: ${{ secrets.YAO_TEST_TOKEN }}
|
||||
path: yao-startup-webapp
|
||||
|
||||
- name: Checkout Extension
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/yao-extensions-dev
|
||||
path: extension
|
||||
|
||||
- name: Move Kun, Xun, Gou, V8Go
|
||||
run: |
|
||||
mv kun ../
|
||||
mv xun ../
|
||||
mv gou ../
|
||||
mv v8go ../
|
||||
mv app ../
|
||||
mv extension ../
|
||||
mv yao-startup-webapp ../
|
||||
ls -l .
|
||||
ls -l ../
|
||||
|
||||
- name: Checkout pull request HEAD commit
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ env.HEAD }}
|
||||
|
||||
- name: Start Redis
|
||||
uses: supercharge/redis-github-action@1.4.0
|
||||
with:
|
||||
redis-version: ${{ matrix.redis }}
|
||||
|
||||
- name: Setup Go ${{ matrix.go }}
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ${{ matrix.go }}
|
||||
|
||||
- name: Start MongoDB
|
||||
uses: supercharge/mongodb-github-action@1.8.0
|
||||
with:
|
||||
mongodb-version: ${{ matrix.mongo }}
|
||||
mongodb-username: root
|
||||
mongodb-password: 123456
|
||||
mongodb-db: test
|
||||
|
||||
- name: Setup MySQL8.0 (connector)
|
||||
uses: ./.github/actions/setup-db
|
||||
with:
|
||||
kind: "MySQL8.0"
|
||||
db: "test"
|
||||
user: "test"
|
||||
password: "123456"
|
||||
port: "3308"
|
||||
|
||||
- name: Setup ${{ matrix.db }}
|
||||
uses: ./.github/actions/setup-db
|
||||
with:
|
||||
kind: "${{ matrix.db }}"
|
||||
db: "xiang"
|
||||
user: "xiang"
|
||||
password: ${{ secrets.UNIT_PASS }}
|
||||
|
||||
- name: Setup Go Tools
|
||||
run: |
|
||||
make tools
|
||||
|
||||
- name: Setup ENV & Host
|
||||
env:
|
||||
PASSWORD: ${{ secrets.UNIT_PASS }}
|
||||
run: |
|
||||
sudo echo "127.0.0.1 local.iqka.com" | sudo tee -a /etc/hosts
|
||||
echo "YAO_DB_DRIVER=$DB_DRIVER" >> $GITHUB_ENV
|
||||
echo "GITHUB_WORKSPACE:\n" && ls -l $GITHUB_WORKSPACE
|
||||
|
||||
if [ "$DB_DRIVER" = "mysql" ]; then
|
||||
echo "YAO_DB_PRIMARY=$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV
|
||||
elif [ "$DB_DRIVER" = "postgres" ]; then
|
||||
echo "YAO_DB_PRIMARY=postgres://$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV
|
||||
else
|
||||
echo "YAO_DB_PRIMARY=$YAO_ROOT/$DB_HOST" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
echo ".:\n" && ls -l .
|
||||
echo "..:\n" && ls -l ..
|
||||
ping -c 1 -t 1 local.iqka.com
|
||||
|
||||
- name: Test Prepare
|
||||
run: |
|
||||
make vet
|
||||
make fmt-check
|
||||
make misspell-check
|
||||
|
||||
- name: Run test
|
||||
run: |
|
||||
make test
|
||||
|
||||
- name: Codecov Report
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
|
||||
|
||||
- name: "Comment on PR"
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
const { NR } = process.env
|
||||
var fs = require('fs');
|
||||
var issue_number = NR;
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issue_number,
|
||||
body: '✨DONE✨ db: ${{ matrix.db }} redis: ${{ matrix.redis }} mongo: ${{ matrix.mongo }} passed.'
|
||||
});
|
||||
64
.github/workflows/release-macos.yml
vendored
64
.github/workflows/release-macos.yml
vendored
|
|
@ -1,64 +0,0 @@
|
|||
name: Release MacOS Artifacts
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: "macos-12"
|
||||
timeout-minutes: 120
|
||||
|
||||
steps:
|
||||
- name: Download latest artifacts
|
||||
run: |
|
||||
echo "Downloading latest artifacts..."
|
||||
ARTIFACT_URL="https://api.github.com/repos/YaoApp/yao/actions/artifacts"
|
||||
ARTIFACT_CONTENT=$(curl -s -H "Accept: application/vnd.github.v3+json" $ARTIFACT_URL)
|
||||
echo $ARTIFACT_CONTENT
|
||||
ARTIFACTS=$(echo $ARTIFACT_CONTENT | jq -r '.artifacts[] | select(.name | contains("yao-macos")) | .id')
|
||||
for id in $ARTIFACTS; do
|
||||
echo "https://api.github.com/repos/YaoApp/yao/actions/artifacts/$id/zip"
|
||||
curl -L -H "Accept: application/vnd.github.v3+json" \
|
||||
"https://api.github.com/repos/YaoApp/yao/actions/artifacts/$id/zip" \
|
||||
-o artifact.zip
|
||||
unzip artifact.zip -d ./artifacts
|
||||
rm artifact.zip
|
||||
break
|
||||
done
|
||||
ls -l ./artifacts
|
||||
|
||||
# - name: Submit notarization request
|
||||
# run: |
|
||||
# echo "Submitting notarization request..."
|
||||
# UUID=$(xcrun altool --notarize-app --primary-bundle-id "com.example.yourapp" \
|
||||
# --username "your-apple-id" --password "app-specific-password" \
|
||||
# --file ./artifacts/your-binary-file)
|
||||
|
||||
# echo "Notarization UUID: $UUID"
|
||||
# echo "$UUID" > notarization_uuid.txt
|
||||
|
||||
# - name: Check notarization status
|
||||
# id: check_notarization
|
||||
# timeout-minutes: 120
|
||||
# run: |
|
||||
# UUID=$(cat notarization_uuid.txt)
|
||||
# STATUS="in progress"
|
||||
# while [[ "$STATUS" == "in progress" ]]; do
|
||||
# STATUS=$(xcrun altool --notarization-info "$UUID" \
|
||||
# --username "your-apple-id" --password "app-specific-password")
|
||||
# echo "Notarization status: $STATUS"
|
||||
# if [[ "$STATUS" == *"success"* ]]; then
|
||||
# echo "::set-output name=status::success"
|
||||
# break
|
||||
# elif [[ "$STATUS" == *"invalid"* ]]; then
|
||||
# echo "::set-output name=status::failed"
|
||||
# break
|
||||
# fi
|
||||
# done
|
||||
|
||||
# - name: Create Release
|
||||
# if: steps.check_notarization.outputs.status == 'success'
|
||||
# run: |
|
||||
# echo "Creating a release..."
|
||||
# VERSION=$(git rev-parse --short HEAD)
|
||||
# gh release create "v1.0.0-$VERSION" ./artifacts/* --title "Release v0.10.4-$VERSION" --notes "Notarization succeeded. This is the release for version v1.0.0-$VERSION."
|
||||
229
.github/workflows/unit-test.yml
vendored
229
.github/workflows/unit-test.yml
vendored
|
|
@ -1,229 +0,0 @@
|
|||
name: Unit Test
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tags:
|
||||
description: "Version"
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
env:
|
||||
YAO_DEV: ${{ github.WORKSPACE }}
|
||||
YAO_ENV: development
|
||||
YAO_ROOT: ${{ github.WORKSPACE }}/../app
|
||||
YAO_HOST: 0.0.0.0
|
||||
YAO_PORT: 5099
|
||||
YAO_SESSION: "memory"
|
||||
YAO_LOG: "./logs/application.log"
|
||||
YAO_LOG_MODE: "TEXT"
|
||||
YAO_JWT_SECRET: "bLp@bi!oqo-2U+hoTRUG"
|
||||
YAO_DB_AESKEY: "ZLX=T&f6refeCh-ro*r@"
|
||||
OSS_TEST_ID: ${{ secrets.OSS_TEST_ID}}
|
||||
OSS_TEST_SECRET: ${{ secrets.OSS_TEST_SECRET}}
|
||||
ROOT_PLUGIN: ${{ github.WORKSPACE }}/../../../data/gou-unit/plugins
|
||||
REPO_KUN: ${{ github.repository_owner }}/kun
|
||||
REPO_XUN: ${{ github.repository_owner }}/xun
|
||||
REPO_GOU: ${{ github.repository_owner }}/gou
|
||||
|
||||
MYSQL_TEST_HOST: "127.0.0.1"
|
||||
MYSQL_TEST_PORT: "3308"
|
||||
MYSQL_TEST_USER: test
|
||||
MYSQL_TEST_PASS: "123456"
|
||||
|
||||
SQLITE_DB: "./app/db/yao.db"
|
||||
|
||||
REDIS_TEST_HOST: "127.0.0.1"
|
||||
REDIS_TEST_PORT: "6379"
|
||||
REDIS_TEST_DB: "2"
|
||||
|
||||
MONGO_TEST_HOST: "127.0.0.1"
|
||||
MONGO_TEST_PORT: "27017"
|
||||
MONGO_TEST_USER: "root"
|
||||
MONGO_TEST_PASS: "123456"
|
||||
|
||||
OPENAI_TEST_KEY: ${{ secrets.OPENAI_TEST_KEY }}
|
||||
TEST_MOAPI_SECRET: ${{ secrets.OPENAI_TEST_KEY }}
|
||||
TEST_MOAPI_MIRROR: https://api.openai.com
|
||||
|
||||
TAB_NAME: "::PET ADMIN"
|
||||
PAGE_SIZE: "20"
|
||||
PAGE_LINK: "https://yaoapps.com"
|
||||
PAGE_ICON: "icon-trash"
|
||||
|
||||
DEMO_APP: ${{ github.WORKSPACE }}/../app
|
||||
|
||||
# Application Setting
|
||||
|
||||
## Path
|
||||
YAO_EXTENSION_ROOT: ${{ github.WORKSPACE }}/../extension
|
||||
YAO_TEST_APPLICATION: ${{ github.WORKSPACE }}/../app
|
||||
YAO_SUI_TEST_APPLICATION: ${{ github.WORKSPACE }}/../yao-startup-webapp
|
||||
|
||||
## Runtime
|
||||
YAO_RUNTIME_MIN: 3
|
||||
YAO_RUNTIME_MAX: 6
|
||||
YAO_RUNTIME_HEAP_LIMIT: 1500000000
|
||||
YAO_RUNTIME_HEAP_RELEASE: 10000000
|
||||
YAO_RUNTIME_HEAP_AVAILABLE: 550000000
|
||||
YAO_RUNTIME_PRECOMPILE: true
|
||||
|
||||
jobs:
|
||||
unit-test:
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
go: [1.23]
|
||||
db: [MySQL8.0, MySQL5.7, SQLite3]
|
||||
redis: [4, 5, 6]
|
||||
mongo: ["6.0"]
|
||||
steps:
|
||||
- name: Checkout Kun
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ env.REPO_KUN }}
|
||||
path: kun
|
||||
|
||||
- name: Checkout Xun
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ env.REPO_XUN }}
|
||||
path: xun
|
||||
|
||||
- name: Checkout Gou
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ env.REPO_GOU }}
|
||||
path: gou
|
||||
|
||||
- name: Checkout V8Go
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/v8go
|
||||
path: v8go
|
||||
|
||||
- name: Unzip libv8
|
||||
run: |
|
||||
files=$(find ./v8go -name "libv8*.zip")
|
||||
for file in $files; do
|
||||
dir=$(dirname "$file") # Get the directory where the ZIP file is located
|
||||
echo "Extracting $file to directory $dir"
|
||||
unzip -o -d $dir $file
|
||||
rm -rf $dir/__MACOSX
|
||||
done
|
||||
|
||||
- name: Checkout Demo App
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/yao-dev-app
|
||||
path: app
|
||||
|
||||
- name: Checkout Yao Startup Webapp
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/yao-startup-webapp
|
||||
submodules: true
|
||||
token: ${{ secrets.YAO_TEST_TOKEN }}
|
||||
path: yao-startup-webapp
|
||||
|
||||
- name: Checkout Extension
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: yaoapp/yao-extensions-dev
|
||||
path: extension
|
||||
|
||||
- name: Move Kun, Xun, Gou, V8Go, Extension
|
||||
run: |
|
||||
mv kun ../
|
||||
mv xun ../
|
||||
mv gou ../
|
||||
mv v8go ../
|
||||
mv app ../
|
||||
mv extension ../
|
||||
mv yao-startup-webapp ../
|
||||
ls -l .
|
||||
ls -l ../
|
||||
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Go ${{ matrix.go }}
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ${{ matrix.go }}
|
||||
|
||||
- name: Start Redis
|
||||
uses: supercharge/redis-github-action@1.4.0
|
||||
with:
|
||||
redis-version: ${{ matrix.redis }}
|
||||
|
||||
- name: Start MongoDB
|
||||
uses: supercharge/mongodb-github-action@1.8.0
|
||||
with:
|
||||
mongodb-version: ${{ matrix.mongo }}
|
||||
mongodb-username: root
|
||||
mongodb-password: 123456
|
||||
mongodb-db: test
|
||||
|
||||
- name: Setup MySQL8.0 (connector)
|
||||
uses: ./.github/actions/setup-db
|
||||
with:
|
||||
kind: "MySQL8.0"
|
||||
db: "test"
|
||||
user: "test"
|
||||
password: "123456"
|
||||
port: "3308"
|
||||
|
||||
- name: Setup ${{ matrix.db }}
|
||||
uses: ./.github/actions/setup-db
|
||||
with:
|
||||
kind: "${{ matrix.db }}"
|
||||
db: "xiang"
|
||||
user: "xiang"
|
||||
password: ${{ secrets.UNIT_PASS }}
|
||||
|
||||
- name: Setup Go Tools
|
||||
run: |
|
||||
make tools
|
||||
|
||||
- name: Setup ENV & Host
|
||||
env:
|
||||
PASSWORD: ${{ secrets.UNIT_PASS }}
|
||||
run: |
|
||||
sudo echo "127.0.0.1 local.iqka.com" | sudo tee -a /etc/hosts
|
||||
echo "YAO_DB_DRIVER=$DB_DRIVER" >> $GITHUB_ENV
|
||||
echo "GITHUB_WORKSPACE:\n" && ls -l $GITHUB_WORKSPACE
|
||||
|
||||
if [ "$DB_DRIVER" = "mysql" ]; then
|
||||
echo "YAO_DB_PRIMARY=$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV
|
||||
elif [ "$DB_DRIVER" = "postgres" ]; then
|
||||
echo "YAO_DB_PRIMARY=postgres://$DB_USER:$PASSWORD@$DB_HOST" >> $GITHUB_ENV
|
||||
else
|
||||
echo "YAO_DB_PRIMARY=$YAO_ROOT/$DB_HOST" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
echo ".:\n" && ls -l .
|
||||
echo "..:\n" && ls -l ..
|
||||
echo "../app:\n" && ls -l ../app
|
||||
ping -c 1 -t 1 local.iqka.com
|
||||
|
||||
- name: Test Prepare
|
||||
run: |
|
||||
make vet
|
||||
make fmt-check
|
||||
make misspell-check
|
||||
|
||||
- name: Inspect
|
||||
run: |
|
||||
go run . run utils.env.Get MONGO_TEST_HOST
|
||||
go run . run utils.env.Get REDIS_TEST_HOST
|
||||
go run . inspect
|
||||
|
||||
- name: Run test
|
||||
run: |
|
||||
make test
|
||||
|
||||
- name: Codecov Report
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
|
||||
14
docker/build-indirect/Dockerfile
Normal file
14
docker/build-indirect/Dockerfile
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# 使用 yaoapp/yao-build:0.10 作为基础镜像
|
||||
FROM yaoapp/yao-build:0.10.4
|
||||
|
||||
# 将 entrypoint.sh 复制到容器内的 /app/ 目录
|
||||
COPY ../build/build.sh /app/
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 确保 build.sh 具有执行权限
|
||||
RUN chmod +x /app/build.sh
|
||||
|
||||
# 设置容器启动时执行的命令
|
||||
CMD ["/app/build.sh"]
|
||||
|
|
@ -2,11 +2,11 @@
|
|||
cd /app && \
|
||||
git clone https://github.com/yaoapp/kun.git /app/kun && \
|
||||
git clone https://github.com/yaoapp/xun.git /app/xun && \
|
||||
git clone https://github.com/yaoapp/gou.git /app/gou && \
|
||||
git clone https://github.com/sjzsdu/gou.git /app/gou && \
|
||||
git clone https://github.com/yaoapp/v8go.git /app/v8go && \
|
||||
git clone https://github.com/yaoapp/xgen.git /app/xgen-v1.0 && \
|
||||
git clone https://github.com/sjzsdu/xgen.git /app/xgen-v1.0 && \
|
||||
git clone https://github.com/yaoapp/yao-init.git /app/yao-init && \
|
||||
git clone https://github.com/yaoapp/yao.git /app/yao
|
||||
git clone https://github.com/sjzsdu/yao.git /app/yao
|
||||
|
||||
|
||||
files=$(find /app/v8go -name "libv8*.zip")
|
||||
|
|
@ -22,4 +22,4 @@ cd /app/yao && \
|
|||
export VERSION=$(cat share/const.go |grep 'const VERSION' | awk '{print $4}' | sed "s/\"//g")
|
||||
|
||||
cd /app/yao && make tools && make artifacts-linux
|
||||
mv /app/yao/dist/release/* /data/
|
||||
mv /app/yao/dist/release/* /data/%
|
||||
Loading…
Add table
Reference in a new issue