Skip to content
This repository has been archived by the owner on Oct 18, 2024. It is now read-only.

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
chenos committed Aug 22, 2024
0 parents commit 31d5855
Show file tree
Hide file tree
Showing 20 changed files with 1,121 additions and 0 deletions.
118 changes: 118 additions & 0 deletions .github/workflows/build-docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
name: Build Docker Image

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
push:
branches:
- "main"
- "next"
pull_request:
branches:
- "**"
jobs:
build-and-push:
# Don't run just after creating repo from template
if: ${{ github.run_number != 1 && github.event.repository.name != 'plugin-pro-tpl' }}
runs-on: ubuntu-latest
services:
verdaccio:
image: verdaccio/verdaccio:latest
ports:
- 4873:4873
steps:
- name: Get plugin name
id: plugin-name
run: |
PLUGIN_NAME=$(echo ${{ github.event.repository.name }} | sed "s/plugin-//")
echo "pluginName=$PLUGIN_NAME" >> $GITHUB_OUTPUT
- name: Checkout nocobase/nocobase
uses: actions/checkout@v4
with:
repository: nocobase/nocobase
ref: main
fetch-depth: 0
- name: git checkout ${{ github.event.pull_request.base.ref }}
run: git checkout ${{ github.event.pull_request.base.ref }}
continue-on-error: true
- name: git checkout ${{ github.head_ref || github.ref_name }}
run: git checkout ${{ github.head_ref || github.ref_name }}
continue-on-error: true
- name: Checkout plugin
uses: actions/checkout@v3
with:
path: packages/pro-plugins/@nocobase/${{ github.event.repository.name }}
- name: rm .git
run: rm -rf packages/pro-plugins/@nocobase/${{ github.event.repository.name }}/.git && git config --global user.email "you@example.com" && git config --global user.name "Your Name" && git add -A && git commit -m "tmp commit"
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver-opts: network=host
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
nocobase/nocobase
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Login to Aliyun Container Registry
uses: docker/login-action@v2
with:
registry: ${{ secrets.ALI_DOCKER_REGISTRY }}
username: ${{ secrets.ALI_DOCKER_USERNAME }}
password: ${{ secrets.ALI_DOCKER_PASSWORD }}
- name: Set tags
id: set-tags
run: |
echo "::set-output name=tags::${{ secrets.ALI_DOCKER_REGISTRY }}/${{ steps.meta.outputs.tags }}-${{ steps.plugin-name.outputs.pluginName }}"
- name: IMAGE_TAG
env:
IMAGE_TAG: ${{ steps.meta.outputs.tags }}
run: |
echo $IMAGE_TAG
- name: Set variables
run: |
target_directory="./packages/pro-plugins/@nocobase"
subdirectories=$(find "$target_directory" -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | tr '\n' ' ')
trimmed_variable=$(echo "$subdirectories" | xargs)
packageNames="@nocobase/${trimmed_variable// / @nocobase/}"
pluginNames="${trimmed_variable//plugin-/}"
BEFORE_PACK_NOCOBASE="yarn add $packageNames -W"
APPEND_PRESET_LOCAL_PLUGINS="${pluginNames// /,}"
echo "var1=$BEFORE_PACK_NOCOBASE" >> $GITHUB_OUTPUT
echo "var2=$APPEND_PRESET_LOCAL_PLUGINS" >> $GITHUB_OUTPUT
id: vars
- name: Build and push
uses: docker/build-push-action@v3
with:
context: .
file: Dockerfile
build-args: |
VERDACCIO_URL=http://localhost:4873/
COMMIT_HASH=${GITHUB_SHA}
PLUGINS_DIRS=pro-plugins
BEFORE_PACK_NOCOBASE=${{ steps.vars.outputs.var1 }}
APPEND_PRESET_LOCAL_PLUGINS=${{ steps.vars.outputs.var2 }}
push: true
tags: ${{ steps.set-tags.outputs.tags }}
- name: Deploy NocoBase
env:
IMAGE_TAG: ${{ steps.meta.outputs.tags }}
run: |
echo $IMAGE_TAG
export APP_NAME=$(echo $IMAGE_TAG | cut -d ":" -f 2)-${{ steps.plugin-name.outputs.pluginName }}
echo $APP_NAME
curl --retry 2 --location --request POST "${{secrets.NOCOBASE_DEPLOY_HOST}}$APP_NAME" \
--header 'Content-Type: application/json' \
-d "{
\"tag\": \"$APP_NAME\",
\"dialect\": \"postgres\"
}"
119 changes: 119 additions & 0 deletions .github/workflows/manual-build-docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: Build Docker Image

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
workflow_dispatch:
inputs:
pr_number:
description: "Please enter the pr number of nocobase/nocobase"
required: false
jobs:
build-and-push:
runs-on: ubuntu-latest
services:
verdaccio:
image: verdaccio/verdaccio:latest
ports:
- 4873:4873
steps:
- name: Get plugin name
id: plugin-name
run: |
PLUGIN_NAME=$(echo ${{ github.event.repository.name }} | sed "s/plugin-//")
echo "pluginName=$PLUGIN_NAME" >> $GITHUB_OUTPUT
- name: Checkout nocobase/nocobase
uses: actions/checkout@v4
with:
repository: nocobase/nocobase
ref: main
fetch-depth: 0
- name: gh pr checkout {{ inputs.pr_number }}
run: gh pr checkout {{ inputs.pr_number }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
- name: git checkout ${{ github.event.pull_request.base.ref }}
run: git checkout ${{ github.event.pull_request.base.ref }}
continue-on-error: true
- name: git checkout ${{ github.head_ref || github.ref_name }}
run: git checkout ${{ github.head_ref || github.ref_name }}
continue-on-error: true
- name: Checkout plugin
uses: actions/checkout@v3
with:
path: packages/pro-plugins/@nocobase/${{ github.event.repository.name }}
- name: rm .git
run: rm -rf packages/pro-plugins/@nocobase/${{ github.event.repository.name }}/.git && git config --global user.email "you@example.com" && git config --global user.name "Your Name" && git add -A && git commit -m "tmp commit"
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver-opts: network=host
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
nocobase/nocobase
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Login to Aliyun Container Registry
uses: docker/login-action@v2
with:
registry: ${{ secrets.ALI_DOCKER_REGISTRY }}
username: ${{ secrets.ALI_DOCKER_USERNAME }}
password: ${{ secrets.ALI_DOCKER_PASSWORD }}
- name: Set tags
id: set-tags
run: |
echo "::set-output name=tags::${{ secrets.ALI_DOCKER_REGISTRY }}/${{ steps.meta.outputs.tags }}-${{ steps.plugin-name.outputs.pluginName }}"
- name: IMAGE_TAG
env:
IMAGE_TAG: ${{ steps.meta.outputs.tags }}
run: |
echo $IMAGE_TAG
- name: Set variables
run: |
target_directory="./packages/pro-plugins/@nocobase"
subdirectories=$(find "$target_directory" -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | tr '\n' ' ')
trimmed_variable=$(echo "$subdirectories" | xargs)
packageNames="@nocobase/${trimmed_variable// / @nocobase/}"
pluginNames="${trimmed_variable//plugin-/}"
BEFORE_PACK_NOCOBASE="yarn add $packageNames -W"
APPEND_PRESET_LOCAL_PLUGINS="${pluginNames// /,}"
echo "var1=$BEFORE_PACK_NOCOBASE" >> $GITHUB_OUTPUT
echo "var2=$APPEND_PRESET_LOCAL_PLUGINS" >> $GITHUB_OUTPUT
id: vars
- name: Build and push
uses: docker/build-push-action@v3
with:
context: .
file: Dockerfile
build-args: |
VERDACCIO_URL=http://localhost:4873/
COMMIT_HASH=${GITHUB_SHA}
PLUGINS_DIRS=pro-plugins
BEFORE_PACK_NOCOBASE=${{ steps.vars.outputs.var1 }}
APPEND_PRESET_LOCAL_PLUGINS=${{ steps.vars.outputs.var2 }}
push: true
tags: ${{ steps.set-tags.outputs.tags }}
- name: Deploy NocoBase
env:
IMAGE_TAG: ${{ steps.meta.outputs.tags }}
run: |
echo $IMAGE_TAG
export APP_NAME=$(echo $IMAGE_TAG | cut -d ":" -f 2)-${{ steps.plugin-name.outputs.pluginName }}
echo $APP_NAME
curl --retry 2 --location --request POST "${{secrets.NOCOBASE_DEPLOY_HOST}}$APP_NAME" \
--header 'Content-Type: application/json' \
-d "{
\"tag\": \"$APP_NAME\",
\"dialect\": \"postgres\"
}"
2 changes: 2 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/node_modules
/src
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# @nocobase-sample/plugin-shared-forms
2 changes: 2 additions & 0 deletions client.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './dist/client';
export { default } from './dist/client';
1 change: 1 addition & 0 deletions client.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('./dist/client/index.js');
11 changes: 11 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "@nocobase/plugin-shared-forms",
"version": "1.3.0-alpha",
"main": "dist/server/index.js",
"dependencies": {},
"peerDependencies": {
"@nocobase/client": "1.x",
"@nocobase/server": "1.x",
"@nocobase/test": "1.x"
}
}
2 changes: 2 additions & 0 deletions server.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './dist/server';
export { default } from './dist/server';
1 change: 1 addition & 0 deletions server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('./dist/server/index.js');
8 changes: 8 additions & 0 deletions src/client/ConfigureLink.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { useFilterByTk } from '@nocobase/client';
import React from 'react';
import { Link } from 'react-router-dom';

export function ConfigureLink() {
const value = useFilterByTk();
return <Link to={`/admin/settings/shared-forms/${value}`}>Configure</Link>;
}
21 changes: 21 additions & 0 deletions src/client/PublicSharedForm.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { SchemaComponent, SchemaComponentProvider, useRequest } from '@nocobase/client';
import { Spin } from 'antd';
import React from 'react';
import { useParams } from 'react-router';

export function PublicSharedForm() {
const params = useParams();
const { data, loading } = useRequest<any>({
url: `sharedForms:getMeta/${params.name}`,
});
if (loading) {
return <Spin />;
}
return (
<div>
<SchemaComponentProvider designable={false}>
<SchemaComponent schema={data?.data?.schema} />
</SchemaComponentProvider>
</div>
);
}
42 changes: 42 additions & 0 deletions src/client/SharedFormConfigure.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { RemoteSchemaComponent } from '@nocobase/client';
import { Breadcrumb, Button, Space } from 'antd';
import React from 'react';
import { useParams } from 'react-router';
import { Link } from 'react-router-dom';

export function SharedFormConfigure() {
const params = useParams();
return (
<div>
<div
style={{
margin: '-24px',
padding: '10px',
background: '#fff',
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
}}
>
<Breadcrumb
items={[
{
title: <Link to={`/admin/settings/shared-forms`}>Shared forms</Link>,
},
{
title: 'Test',
},
]}
/>
<Space>
<Link to={`/shared-forms/${params.name}`}>
<Button>Preview</Button>
</Link>
</Space>
</div>
<div style={{ maxWidth: 800, margin: '100px auto' }}>
<RemoteSchemaComponent uid={params.name} />
</div>
</div>
);
}
Loading

0 comments on commit 31d5855

Please sign in to comment.