This is an automated email from the ASF dual-hosted git repository.

shuai pushed a commit to branch blog-plugin
in repository https://gitbox.apache.org/repos/asf/incubator-answer-website.git

commit 9a862bc38d77a1a13de6bf64b3e586fa1e1e293c
Author: shuai <[email protected]>
AuthorDate: Tue Jul 2 14:49:22 2024 +0800

    feat: add plguin use blog
---
 .../01.webp                                        | Bin 0 -> 21466 bytes
 .../2.1.1.webp                                     | Bin 0 -> 74910 bytes
 .../2.1.2.webp                                     | Bin 0 -> 72350 bytes
 .../2.1.3.webp                                     | Bin 0 -> 38504 bytes
 .../2.1.4.webp                                     | Bin 0 -> 8420 bytes
 .../2.2.1.webp                                     | Bin 0 -> 100920 bytes
 .../2.2.2.webp                                     | Bin 0 -> 70712 bytes
 .../2.2.3.webp                                     | Bin 0 -> 41262 bytes
 .../2.2.4.webp                                     | Bin 0 -> 8714 bytes
 .../active-plugin.webp                             | Bin 0 -> 19656 bytes
 .../docker-build.webp                              | Bin 0 -> 44858 bytes
 .../formula-res.webp                               | Bin 0 -> 7998 bytes
 .../index.md                                       | 205 +++++++++++++++++++++
 .../installation.webp                              | Bin 0 -> 26806 bytes
 .../installed-formula.webp                         | Bin 0 -> 15954 bytes
 .../installed-plugins.webp                         | Bin 0 -> 24842 bytes
 .../local-init.webp                                | Bin 0 -> 13244 bytes
 .../make-ui-01.webp                                | Bin 0 -> 54440 bytes
 .../make-ui-02.webp                                | Bin 0 -> 74122 bytes
 .../make-ui-03.webp                                | Bin 0 -> 34304 bytes
 .../new-answer.webp                                | Bin 0 -> 13452 bytes
 blog/authors.yml                                   |   6 +
 .../01.webp                                        | Bin 0 -> 21466 bytes
 .../2.1.1.webp                                     | Bin 0 -> 74910 bytes
 .../2.1.2.webp                                     | Bin 0 -> 72350 bytes
 .../2.1.3.webp                                     | Bin 0 -> 38504 bytes
 .../2.1.4.webp                                     | Bin 0 -> 8420 bytes
 .../2.2.1.webp                                     | Bin 0 -> 100920 bytes
 .../2.2.2.webp                                     | Bin 0 -> 70712 bytes
 .../2.2.3.webp                                     | Bin 0 -> 41262 bytes
 .../2.2.4.webp                                     | Bin 0 -> 8714 bytes
 .../active-plugin.webp                             | Bin 0 -> 19656 bytes
 .../docker-build.webp                              | Bin 0 -> 44858 bytes
 .../formula-res.webp                               | Bin 0 -> 7998 bytes
 .../index.md                                       | 205 +++++++++++++++++++++
 .../installation.webp                              | Bin 0 -> 26806 bytes
 .../installed-formula.webp                         | Bin 0 -> 15954 bytes
 .../installed-plugins.webp                         | Bin 0 -> 24842 bytes
 .../local-init.webp                                | Bin 0 -> 13244 bytes
 .../make-ui-01.webp                                | Bin 0 -> 54440 bytes
 .../make-ui-02.webp                                | Bin 0 -> 74122 bytes
 .../make-ui-03.webp                                | Bin 0 -> 34304 bytes
 .../new-answer.webp                                | Bin 0 -> 13452 bytes
 .../docusaurus-plugin-content-blog/authors.yml     |   6 +
 44 files changed, 422 insertions(+)

diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/01.webp 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/01.webp
new file mode 100644
index 00000000..652e7613
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/01.webp 
differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.1.webp 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.1.webp
new file mode 100644
index 00000000..978e9efc
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.1.webp 
differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.2.webp 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.2.webp
new file mode 100644
index 00000000..e049c84b
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.2.webp 
differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.3.webp 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.3.webp
new file mode 100644
index 00000000..0bbcc95d
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.3.webp 
differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.4.webp 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.4.webp
new file mode 100644
index 00000000..8b8fc4d3
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.4.webp 
differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.1.webp 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.1.webp
new file mode 100644
index 00000000..67ac3bfb
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.1.webp 
differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.2.webp 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.2.webp
new file mode 100644
index 00000000..7fdb7df5
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.2.webp 
differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.3.webp 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.3.webp
new file mode 100644
index 00000000..95c8f1c6
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.3.webp 
differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.4.webp 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.4.webp
new file mode 100644
index 00000000..a0c33b9d
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.4.webp 
differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/active-plugin.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/active-plugin.webp
new file mode 100644
index 00000000..d6791e7b
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/active-plugin.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/docker-build.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/docker-build.webp
new file mode 100644
index 00000000..fdc7470e
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/docker-build.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/formula-res.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/formula-res.webp
new file mode 100644
index 00000000..d6a86242
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/formula-res.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/index.md 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/index.md
new file mode 100644
index 00000000..43776b27
--- /dev/null
+++ b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/index.md
@@ -0,0 +1,205 @@
+---
+title: "Apache Answer 使用插件详细教程"
+authors: [shuai]
+category: Tutorials
+featured: false
+image: [email protected]
+description: "手把手教你如何使用 Answer 插件"
+
+---
+
+在最近的的社区反馈中,部分用户反馈在使用 Answer 插件的过程中,不知道如何将插件打包进入 Answer 系统中,[Answer 
插件构建文档](https://answer.apache.org/docs/plugins/)中也没有提示正确结果的示例,所以对于一些非专业的开发者造成了一些困扰,所以本篇将作为一个详细教程,来手把手教会你正确打包
 Answer 插件。
+
+### 开始之前
+
+在开始之前,请确保您已经配置好了基础的开发环境,包括 Node.js、pnpm、Docker、Go 
等。同时,请确保您已经阅读了官方的[开发环境配置文档](https://answer.apache.org/docs/development)。
+
+### 注意
+
+**如果使用的是最新的代码这里可以直接跳过**
+
+在 1.3.5 版本中,对插架的构建流程及部分插件的命令有所调整,如果你用的是 1.3.5 
版本之前的代码,需要更改部分插件内部的基础信息。具体涉及到的插件有:
+
+1. editor-chart
+2. editor-formula
+3. embed-basic (该插件 1.3.5版本后才有)
+
+更改的[commit 
id](https://github.com/apache/incubator-answer-plugins/commit/e224fee9b8a0b936e143e852050d9345aa249201),
 需要将对应的插件的 `package.json` 文件中的插件名称的 '-' 替换成 '_', 例如:
+![image.png](01.webp)
+
+## 一:构建包含插件的镜像
+
+构建包含插件的 docker 镜像有两种场景:
+1. 基于官方基础镜像构建
+2. 基于本地代码构建
+
+### 基于官方基础镜像构建
+
+如果您不需要对 Answer 
的源码进行调整,可以直接基于官方基础镜像构建。具体步骤请参考[官方文档](https://answer.apache.org/docs/plugins/#build-with-plugin-from-answer-base-image)构建带有插件的
 Docker 镜像,本文不做演示。
+
+### 基于本地代码构建 Docker 镜像总体步骤
+如果您对 Answer 的源码有调整,需要基于自己修改的代码进行构建。请保持本地代码最新,以下是总体步骤:
+
+1. **添加所需插件**:在根目录的 `/script/plugin_list` 文件添加所需要的插架仓库,每行一个
+2. **构建 Docker 镜像**:运行 `docker build -t <image_name[:tag]> .` 命令开始构建镜像。
+3. **本地启动,验证插件是否正确运行**:等待构建完成后,运行 `docker run -d -p 9080:80 -v 
answer-data:/data --name <container_name> <image_name>`命令,进行验证。
+
+### 1.添加所需插件
+```
+github.com/apache/incubator-answer-plugins/connector-basic@latest
+github.com/apache/incubator-answer-plugins/reviewer-basic@latest
+github.com/apache/incubator-answer-plugins/captcha-basic@latest
+github.com/apache/incubator-answer-plugins/editor-formula@latest
+
+```
+
+### 2.构建 Docker 镜像
+
+构建需要一定时间请等待构建完成
+![docker build process](docker-build.webp)
+
+### 3.本地启动,验证插件是否正确运行
+
+运行下面命令启动,[根据文档](https://answer.apache.org/docs/installation#install-steps)完成初始化,
 登录管理后台激活插件,查看插件是否正确运行。
+
+```
+docker run -d -p 9080:80 -v answer-data:/data --name answer101 answer-plugin
+```
+
+初始化完成后,登录你的网站访问管理后台,激活插件,查看插件是否正确运行即可。
+
+管理后台
+![installed plugins](installed-plugins.webp)
+
+激活插件:
+![active a plugin](active-plugin.webp)
+
+确认对应插件(editor-formula)的是否正确运行:
+![confirm formula plugin result](formula-res.webp)
+
+
+## 二:构建包含插件的二进制
+
+下面将指导您如何构建包含特定插件的 Apache Answer 
二进制文件。这个过程包括构建基础二进制文件、将所需插件包含在内、本地验证插件以及最终部署该二进制文件。
+
+### 二进制总体步骤
+
+1. 构建基础二进制文件
+2. 利用基础二进制文件构建所需插件的二进制文件.
+3. 本地验证插件
+4. 部署该二进制
+
+### 1.构建基础二进制文件
+
+首先使用 `make ui` 命令构建前端静态资源。
+
+效果:
+1. 安装依赖
+![install ui dependence](make-ui-01.webp)
+2. 依赖安装完成开始构建静态资源
+![build ui static files](make-ui-02.webp)
+
+然后使用 `make build` 构建基础二进制文件,运行成功会在项目根目录生成 answer 二进制文件,该过程中如果出现 go 
的依赖安装失败的提示,可以本地尝试运行 `go mod download`,查看是否能够安装成功,如果仍然失败,请考虑配置国内镜像: 
https://goproxy.cn/,或者开启网络代理。
+
+成功结果:
+![build binary success](make-ui-03.webp)
+
+### 2.利用基础二进制文件构建包含所需插件的二进制文件
+
+参考 [Answer 文档](https://answer.apache.org/docs/plugins/#binary-build)
+```
+# answer build --with [plugin@plugin_version=[replacement]] --output [file]
+$ ./answer build --with 
github.com/apache/incubator-answer-plugins/connector-github
+
+# build a new answer with github login plugin then output to ./new_answer.
+$ ./answer build --with 
github.com/apache/incubator-answer-plugins/[email protected] --output 
./new_answer
+
+# with multiple plugins
+$ ./answer build \
+--with github.com/apache/incubator-answer-plugins/connector-github \
+--with github.com/apache/incubator-answer-plugins/connector-google
+
+# with local plugins
+$ ./answer build --with 
github.com/apache/incubator-answer-plugins/[email protected]=/my-local-space
+
+# cross compilation. Build a linux-amd64 binary in macos
+$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./answer build --with 
github.com/apache/incubator-answer-plugins/connector-github
+
+# specify the answer version using ANSWER_MODULE environment variable
+$ ANSWER_MODULE=github.com/apache/[email protected] ./answer build 
--with github.com/apache/incubator-answer-plugins/connector-github
+```
+
+可以根据文档上的提示来选择所需要的插件,打包插件的会重新构建前端静态资源,插件可能有特有的依赖项,所以这里会重新执行依赖安装跟构建。构建成功后会在更目录生成 
`new_answer` 二进制文件。
+
+eg:
+![new answer binary](new-answer.webp)
+
+#### 2.1.打包单个插件
+
+`./answer build --with 
github.com/apache/incubator-answer-plugins/connector-github`
+
+效果:
+![build progress](2.1.1.webp)
+
+![build progress](2.1.2.webp)
+
+![build progress](2.1.3.webp)
+
+命令验证插件安装 `./new_answer plugin`
+
+![confirm result](2.1.4.webp)
+
+
+#### 2.2.使用本地插件代码构建单个插件
+
+如果需要调整插件的一些信息或者使用自己实现的私有插件来构建,需要使用 `with local plugins` 命令来构建,比如上面提到的 
`editor-formula` 插件,并且使用的 Answer 代码版本是小于 1.3.5 
的,所以需要调整插件的一些信息,这种情况就需要使用该命令来完成构建。
+
+`./answer build --with 
github.com/apache/incubator-answer-plugins/[email protected]=/Users/shuai/answer/plugins/editor-formula`
+
+结果:
+![build progress](2.2.1.webp)
+
+![build progress](2.2.2.webp)
+
+![build progress](2.2.3.webp)
+
+命令验证插件安装 `./new_answer plugin`
+
+![confirm result](2.2.4.webp)
+
+
+#### 2.3.打包多个插件
+
+效果及过程与上面两个类似,请自己实验安装,这里不在展示。
+
+
+### 3.本地验证插件
+ 
+使用命令行验证只是确保插件已经打进去了,想要查看插件是否能正常运行,可以本地运行生成的二进制文件进行查看,二进制运行[文档](https://answer.apache.org/docs/installation)
+![installation docs](installation.webp), 按照文档步骤初始化完信息。注意这里需要运行的是 new_answer 
二进制,所以命令行中的 ./answer 需要使用 ./new_answer
+
+### 4.本地验证步骤
+
+1. 完成初始化
+
+例如: `INSTALL_PORT=80 ./new_answer init -C ./answer-data`
+
+![local init](local-init.webp)
+
+成功后访问 
`http://localhost:80/install/`,按照[文档](https://answer.apache.org/docs/installation#install-steps)完成初始化步骤。
+
+2. 运行命令 `./new_answer upgrade -C ./answer-data/` 更新信息
+3. 启动本地网站 `./new_answer run -C ./answer-data/`, 访问 `http://localhost/`,登录进去,访问 
`http://localhost/admin` 开启插件,验证插件是否生效。
+
+这里使用最后打包的 editor-formula 插件作为示例。
+
+![installed formula](installed-formula.webp)
+![image.png](formula-res.webp)
+
+
+到这一步就可以确定插件是否正确构建并运行了。
+
+### 5.部署该二进制
+
+如果你的网站是使用的二进制进行的部署,那么你现在就可以将该二进制文件进行部署了,如果需要适配不同平台,可以使用文档上面的交叉编译命令来构建二进制文件。
+
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installation.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installation.webp
new file mode 100644
index 00000000..10125832
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installation.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-formula.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-formula.webp
new file mode 100644
index 00000000..70aa4c05
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-formula.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-plugins.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-plugins.webp
new file mode 100644
index 00000000..5b308847
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-plugins.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/local-init.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/local-init.webp
new file mode 100644
index 00000000..3d1f9d9e
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/local-init.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-01.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-01.webp
new file mode 100644
index 00000000..11b120e4
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-01.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-02.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-02.webp
new file mode 100644
index 00000000..579eb267
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-02.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-03.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-03.webp
new file mode 100644
index 00000000..c6702af7
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-03.webp
 differ
diff --git 
a/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/new-answer.webp
 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/new-answer.webp
new file mode 100644
index 00000000..854d2bd9
Binary files /dev/null and 
b/blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/new-answer.webp
 differ
diff --git a/blog/authors.yml b/blog/authors.yml
index a760dd28..ebdb55c9 100644
--- a/blog/authors.yml
+++ b/blog/authors.yml
@@ -15,3 +15,9 @@ fenbox:
   title: Product Designer
   url: https://github.com
   image_url: https://avatars.githubusercontent.com/u/360618?v=4
+
+shuai:
+  name: Shuai
+  title: Developer
+  url: https://github.com/shuashuai
+  image_url: https://avatars.githubusercontent.com/u/30591202?v=4
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/01.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/01.webp
new file mode 100644
index 00000000..652e7613
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/01.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.1.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.1.webp
new file mode 100644
index 00000000..978e9efc
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.1.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.2.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.2.webp
new file mode 100644
index 00000000..e049c84b
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.2.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.3.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.3.webp
new file mode 100644
index 00000000..0bbcc95d
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.3.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.4.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.4.webp
new file mode 100644
index 00000000..8b8fc4d3
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.1.4.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.1.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.1.webp
new file mode 100644
index 00000000..67ac3bfb
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.1.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.2.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.2.webp
new file mode 100644
index 00000000..7fdb7df5
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.2.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.3.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.3.webp
new file mode 100644
index 00000000..95c8f1c6
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.3.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.4.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.4.webp
new file mode 100644
index 00000000..a0c33b9d
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/2.2.4.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/active-plugin.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/active-plugin.webp
new file mode 100644
index 00000000..d6791e7b
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/active-plugin.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/docker-build.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/docker-build.webp
new file mode 100644
index 00000000..fdc7470e
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/docker-build.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/formula-res.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/formula-res.webp
new file mode 100644
index 00000000..d6a86242
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/formula-res.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/index.md
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/index.md
new file mode 100644
index 00000000..43776b27
--- /dev/null
+++ 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/index.md
@@ -0,0 +1,205 @@
+---
+title: "Apache Answer 使用插件详细教程"
+authors: [shuai]
+category: Tutorials
+featured: false
+image: [email protected]
+description: "手把手教你如何使用 Answer 插件"
+
+---
+
+在最近的的社区反馈中,部分用户反馈在使用 Answer 插件的过程中,不知道如何将插件打包进入 Answer 系统中,[Answer 
插件构建文档](https://answer.apache.org/docs/plugins/)中也没有提示正确结果的示例,所以对于一些非专业的开发者造成了一些困扰,所以本篇将作为一个详细教程,来手把手教会你正确打包
 Answer 插件。
+
+### 开始之前
+
+在开始之前,请确保您已经配置好了基础的开发环境,包括 Node.js、pnpm、Docker、Go 
等。同时,请确保您已经阅读了官方的[开发环境配置文档](https://answer.apache.org/docs/development)。
+
+### 注意
+
+**如果使用的是最新的代码这里可以直接跳过**
+
+在 1.3.5 版本中,对插架的构建流程及部分插件的命令有所调整,如果你用的是 1.3.5 
版本之前的代码,需要更改部分插件内部的基础信息。具体涉及到的插件有:
+
+1. editor-chart
+2. editor-formula
+3. embed-basic (该插件 1.3.5版本后才有)
+
+更改的[commit 
id](https://github.com/apache/incubator-answer-plugins/commit/e224fee9b8a0b936e143e852050d9345aa249201),
 需要将对应的插件的 `package.json` 文件中的插件名称的 '-' 替换成 '_', 例如:
+![image.png](01.webp)
+
+## 一:构建包含插件的镜像
+
+构建包含插件的 docker 镜像有两种场景:
+1. 基于官方基础镜像构建
+2. 基于本地代码构建
+
+### 基于官方基础镜像构建
+
+如果您不需要对 Answer 
的源码进行调整,可以直接基于官方基础镜像构建。具体步骤请参考[官方文档](https://answer.apache.org/docs/plugins/#build-with-plugin-from-answer-base-image)构建带有插件的
 Docker 镜像,本文不做演示。
+
+### 基于本地代码构建 Docker 镜像总体步骤
+如果您对 Answer 的源码有调整,需要基于自己修改的代码进行构建。请保持本地代码最新,以下是总体步骤:
+
+1. **添加所需插件**:在根目录的 `/script/plugin_list` 文件添加所需要的插架仓库,每行一个
+2. **构建 Docker 镜像**:运行 `docker build -t <image_name[:tag]> .` 命令开始构建镜像。
+3. **本地启动,验证插件是否正确运行**:等待构建完成后,运行 `docker run -d -p 9080:80 -v 
answer-data:/data --name <container_name> <image_name>`命令,进行验证。
+
+### 1.添加所需插件
+```
+github.com/apache/incubator-answer-plugins/connector-basic@latest
+github.com/apache/incubator-answer-plugins/reviewer-basic@latest
+github.com/apache/incubator-answer-plugins/captcha-basic@latest
+github.com/apache/incubator-answer-plugins/editor-formula@latest
+
+```
+
+### 2.构建 Docker 镜像
+
+构建需要一定时间请等待构建完成
+![docker build process](docker-build.webp)
+
+### 3.本地启动,验证插件是否正确运行
+
+运行下面命令启动,[根据文档](https://answer.apache.org/docs/installation#install-steps)完成初始化,
 登录管理后台激活插件,查看插件是否正确运行。
+
+```
+docker run -d -p 9080:80 -v answer-data:/data --name answer101 answer-plugin
+```
+
+初始化完成后,登录你的网站访问管理后台,激活插件,查看插件是否正确运行即可。
+
+管理后台
+![installed plugins](installed-plugins.webp)
+
+激活插件:
+![active a plugin](active-plugin.webp)
+
+确认对应插件(editor-formula)的是否正确运行:
+![confirm formula plugin result](formula-res.webp)
+
+
+## 二:构建包含插件的二进制
+
+下面将指导您如何构建包含特定插件的 Apache Answer 
二进制文件。这个过程包括构建基础二进制文件、将所需插件包含在内、本地验证插件以及最终部署该二进制文件。
+
+### 二进制总体步骤
+
+1. 构建基础二进制文件
+2. 利用基础二进制文件构建所需插件的二进制文件.
+3. 本地验证插件
+4. 部署该二进制
+
+### 1.构建基础二进制文件
+
+首先使用 `make ui` 命令构建前端静态资源。
+
+效果:
+1. 安装依赖
+![install ui dependence](make-ui-01.webp)
+2. 依赖安装完成开始构建静态资源
+![build ui static files](make-ui-02.webp)
+
+然后使用 `make build` 构建基础二进制文件,运行成功会在项目根目录生成 answer 二进制文件,该过程中如果出现 go 
的依赖安装失败的提示,可以本地尝试运行 `go mod download`,查看是否能够安装成功,如果仍然失败,请考虑配置国内镜像: 
https://goproxy.cn/,或者开启网络代理。
+
+成功结果:
+![build binary success](make-ui-03.webp)
+
+### 2.利用基础二进制文件构建包含所需插件的二进制文件
+
+参考 [Answer 文档](https://answer.apache.org/docs/plugins/#binary-build)
+```
+# answer build --with [plugin@plugin_version=[replacement]] --output [file]
+$ ./answer build --with 
github.com/apache/incubator-answer-plugins/connector-github
+
+# build a new answer with github login plugin then output to ./new_answer.
+$ ./answer build --with 
github.com/apache/incubator-answer-plugins/[email protected] --output 
./new_answer
+
+# with multiple plugins
+$ ./answer build \
+--with github.com/apache/incubator-answer-plugins/connector-github \
+--with github.com/apache/incubator-answer-plugins/connector-google
+
+# with local plugins
+$ ./answer build --with 
github.com/apache/incubator-answer-plugins/[email protected]=/my-local-space
+
+# cross compilation. Build a linux-amd64 binary in macos
+$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./answer build --with 
github.com/apache/incubator-answer-plugins/connector-github
+
+# specify the answer version using ANSWER_MODULE environment variable
+$ ANSWER_MODULE=github.com/apache/[email protected] ./answer build 
--with github.com/apache/incubator-answer-plugins/connector-github
+```
+
+可以根据文档上的提示来选择所需要的插件,打包插件的会重新构建前端静态资源,插件可能有特有的依赖项,所以这里会重新执行依赖安装跟构建。构建成功后会在更目录生成 
`new_answer` 二进制文件。
+
+eg:
+![new answer binary](new-answer.webp)
+
+#### 2.1.打包单个插件
+
+`./answer build --with 
github.com/apache/incubator-answer-plugins/connector-github`
+
+效果:
+![build progress](2.1.1.webp)
+
+![build progress](2.1.2.webp)
+
+![build progress](2.1.3.webp)
+
+命令验证插件安装 `./new_answer plugin`
+
+![confirm result](2.1.4.webp)
+
+
+#### 2.2.使用本地插件代码构建单个插件
+
+如果需要调整插件的一些信息或者使用自己实现的私有插件来构建,需要使用 `with local plugins` 命令来构建,比如上面提到的 
`editor-formula` 插件,并且使用的 Answer 代码版本是小于 1.3.5 
的,所以需要调整插件的一些信息,这种情况就需要使用该命令来完成构建。
+
+`./answer build --with 
github.com/apache/incubator-answer-plugins/[email protected]=/Users/shuai/answer/plugins/editor-formula`
+
+结果:
+![build progress](2.2.1.webp)
+
+![build progress](2.2.2.webp)
+
+![build progress](2.2.3.webp)
+
+命令验证插件安装 `./new_answer plugin`
+
+![confirm result](2.2.4.webp)
+
+
+#### 2.3.打包多个插件
+
+效果及过程与上面两个类似,请自己实验安装,这里不在展示。
+
+
+### 3.本地验证插件
+ 
+使用命令行验证只是确保插件已经打进去了,想要查看插件是否能正常运行,可以本地运行生成的二进制文件进行查看,二进制运行[文档](https://answer.apache.org/docs/installation)
+![installation docs](installation.webp), 按照文档步骤初始化完信息。注意这里需要运行的是 new_answer 
二进制,所以命令行中的 ./answer 需要使用 ./new_answer
+
+### 4.本地验证步骤
+
+1. 完成初始化
+
+例如: `INSTALL_PORT=80 ./new_answer init -C ./answer-data`
+
+![local init](local-init.webp)
+
+成功后访问 
`http://localhost:80/install/`,按照[文档](https://answer.apache.org/docs/installation#install-steps)完成初始化步骤。
+
+2. 运行命令 `./new_answer upgrade -C ./answer-data/` 更新信息
+3. 启动本地网站 `./new_answer run -C ./answer-data/`, 访问 `http://localhost/`,登录进去,访问 
`http://localhost/admin` 开启插件,验证插件是否生效。
+
+这里使用最后打包的 editor-formula 插件作为示例。
+
+![installed formula](installed-formula.webp)
+![image.png](formula-res.webp)
+
+
+到这一步就可以确定插件是否正确构建并运行了。
+
+### 5.部署该二进制
+
+如果你的网站是使用的二进制进行的部署,那么你现在就可以将该二进制文件进行部署了,如果需要适配不同平台,可以使用文档上面的交叉编译命令来构建二进制文件。
+
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installation.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installation.webp
new file mode 100644
index 00000000..10125832
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installation.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-formula.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-formula.webp
new file mode 100644
index 00000000..70aa4c05
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-formula.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-plugins.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-plugins.webp
new file mode 100644
index 00000000..5b308847
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/installed-plugins.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/local-init.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/local-init.webp
new file mode 100644
index 00000000..3d1f9d9e
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/local-init.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-01.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-01.webp
new file mode 100644
index 00000000..11b120e4
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-01.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-02.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-02.webp
new file mode 100644
index 00000000..579eb267
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-02.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-03.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-03.webp
new file mode 100644
index 00000000..c6702af7
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/make-ui-03.webp
 differ
diff --git 
a/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/new-answer.webp
 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/new-answer.webp
new file mode 100644
index 00000000..854d2bd9
Binary files /dev/null and 
b/i18n/zh-CN/docusaurus-plugin-content-blog/2024-07-02-apache-answer-detailed-tutorial-on-using-plug-ins/new-answer.webp
 differ
diff --git a/i18n/zh-CN/docusaurus-plugin-content-blog/authors.yml 
b/i18n/zh-CN/docusaurus-plugin-content-blog/authors.yml
index a760dd28..ebdb55c9 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-blog/authors.yml
+++ b/i18n/zh-CN/docusaurus-plugin-content-blog/authors.yml
@@ -15,3 +15,9 @@ fenbox:
   title: Product Designer
   url: https://github.com
   image_url: https://avatars.githubusercontent.com/u/360618?v=4
+
+shuai:
+  name: Shuai
+  title: Developer
+  url: https://github.com/shuashuai
+  image_url: https://avatars.githubusercontent.com/u/30591202?v=4


Reply via email to