diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 58ea0a7c..00000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -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 diff --git a/.github/ISSUE_TEMPLATE/issue_report.md b/.github/ISSUE_TEMPLATE/issue_report.md deleted file mode 100644 index 3f88ba1e..00000000 --- a/.github/ISSUE_TEMPLATE/issue_report.md +++ /dev/null @@ -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**: diff --git a/.github/actions/setup-db/Dockerfile b/.github/actions/setup-db/Dockerfile deleted file mode 100644 index 227218cb..00000000 --- a/.github/actions/setup-db/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM docker:stable - - -COPY entrypoint.sh /entrypoint.sh -RUN chmod +x /entrypoint.sh -ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/.github/actions/setup-db/action.yml b/.github/actions/setup-db/action.yml deleted file mode 100644 index d91a2a7f..00000000 --- a/.github/actions/setup-db/action.yml +++ /dev/null @@ -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" diff --git a/.github/actions/setup-db/entrypoint.sh b/.github/actions/setup-db/entrypoint.sh deleted file mode 100755 index 18072348..00000000 --- a/.github/actions/setup-db/entrypoint.sh +++ /dev/null @@ -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 diff --git a/.github/workflows/build-docker-internal.yml b/.github/workflows/build-docker-internal.yml deleted file mode 100644 index 46b9991a..00000000 --- a/.github/workflows/build-docker-internal.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml deleted file mode 100644 index d7ff1b6f..00000000 --- a/.github/workflows/build-docker.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 02836500..34c10c52 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -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 diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index c1acd01d..a26c4425 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -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: diff --git a/.github/workflows/pr-receive.yml b/.github/workflows/pr-receive.yml deleted file mode 100644 index 955341bb..00000000 --- a/.github/workflows/pr-receive.yml +++ /dev/null @@ -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/ diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml deleted file mode 100644 index 175cf274..00000000 --- a/.github/workflows/pr-test.yml +++ /dev/null @@ -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.' - }); diff --git a/.github/workflows/release-macos.yml b/.github/workflows/release-macos.yml deleted file mode 100644 index 43d2353a..00000000 --- a/.github/workflows/release-macos.yml +++ /dev/null @@ -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." diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml deleted file mode 100644 index 1b35bcc1..00000000 --- a/.github/workflows/unit-test.yml +++ /dev/null @@ -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 diff --git a/docker/build-indirect/Dockerfile b/docker/build-indirect/Dockerfile new file mode 100644 index 00000000..8a49dd90 --- /dev/null +++ b/docker/build-indirect/Dockerfile @@ -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"] diff --git a/docker/build/build.sh b/docker/build/build.sh index abe435dd..619d22d7 100644 --- a/docker/build/build.sh +++ b/docker/build/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/ \ No newline at end of file +mv /app/yao/dist/release/* /data/% \ No newline at end of file