Giter Site home page Giter Site logo

fc's People

Contributors

anycodes avatar arlenmbx avatar devdengchao avatar fanzhe328 avatar heimanba avatar jasonlamv-t avatar jneeee avatar joycepy avatar lancexuanli avatar linux-china avatar lowkeyrd avatar lyz05 avatar raykie avatar robinsonnie avatar ronething-bot avatar rsonghuster avatar squatstonight avatar tsbno89 avatar whaohan avatar wss-git avatar xsahxl avatar yousong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

fc's Issues

fun2fc 没有处理policies

  1. 没有处理policies。
  2. 为什么convert后需要定义两次service?虽然这两个service配置一样。
  3. 通常版本使用version,好像使用edition的很少。

image

关于部署自定义域名的建议

如果仅定义一个 customDomains 模块,我们是否可以直接部署呢?而不是不需要将 服务、函数、触发器都填上才可以部署

services:
  fc-deploy-test: 
    component: devsapp/fc 
    props:
      region: cn-shenzhen
      customDomains:
        - domainName: auto
          protocol: HTTP
          routeConfigs:
            - path: /*
              serviceName: unit-deploy-service
              functionName: event-function

fc-sync 问题

  1. 复现步骤

进入 examples/code-local 目录,执行 s build --use-docker,然后先后执行 s deploy 以及 s deploy --use-remote ,会出现如下报错:

$ s deploy --use-remote
[2021-06-09T17:00:27.177] [INFO ] [S-CLI] - Start ...
[2021-06-09T17:00:33.134] [INFO ] [FC-DEPLOY] - Using region: cn-shanghai
[2021-06-09T17:00:33.134] [INFO ] [FC-DEPLOY] - Using access alias: default
[2021-06-09T17:00:33.135] [INFO ] [FC-DEPLOY] - Using accountId: ***********3743
[2021-06-09T17:00:33.135] [INFO ] [FC-DEPLOY] - Using accessKeyId: ***********PeUX
[2021-06-09T17:00:35.548] [INFO ] [FC-DEPLOY] - service: qianfeng-demo exists online.
[2021-06-09T17:00:37.786] [INFO ] [FC-DEPLOY] - function: node-demo exists online.
[2021-06-09T17:00:40.206] [INFO ] [FC-DEPLOY] - trigger: httpTrigger exists online.
[2021-06-09T17:00:40.211] [INFO ] [FC-DEPLOY] - Fc detects that you have run build command for function: node-demo, use build codeUri: /Users/zqf/Documents/git_proj/devsapp/component/fc-alibaba-component/examples/code-local/.s/build/artifacts/qianfeng-demo/node-demo instead of your codeUri: ./code

  detail:
  added:
    LD_LIBRARY_PATH: >-
      /code/.s/root/usr/local/lib:/code/.s/root/usr/lib:/code/.s/root/usr/lib/x86_64-linux-gnu:/code/.s/root/usr/lib64:/code/.s/root/lib:/code/.s/root/lib/x86_64-linux-gnu:/code/.s/root/python/lib/python2.7/site-packages:/code/.s/root/python/lib/python3.6/site-packages:/code:/code/lib:/usr/local/lib
    PATH: >-
      /code/.s/root/usr/local/bin:/code/.s/root/usr/local/sbin:/code/.s/root/usr/bin:/code/.s/root/usr/sbin:/code/.s/root/sbin:/code/.s/root/bin:/code:/code/node_modules/.bin:/code/.s/python/bin:/code/.s/node_modules/.bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/sbin:/bin
    NODE_PATH: /code/node_modules:/usr/local/lib/node_modules
    PYTHONUSERBASE: /code/.s/python
  deleted: {}
  updated: {}

? Fc add/append some content to your origin environment variables for finding dependencies generate
d by build command. Are you sure to continue? no
[2021-06-09T17:00:45.027] [INFO ] [FC-SYNC] - sync code to /Users/zqf/.s/cache/fc-deploy/remote-code/1986114430573743_cn-shanghai_qianfeng-demo_node-demo
✔ download success
[2021-06-09T17:00:56.248] [ERROR] [S-CLI] - Project fc-deploy-test failed to execute:
  
  📝 Message:  EEXIST: file already exists, symlink '../crc-32/bin/crc32.njs' -> '/Users/zqf/.s/cache/fc-deploy/remote-code/1986114430573743_cn-shanghai_qianfeng-demo_node-demo/node_modules/.bin/crc32'
  🧭 You can get help for this component by [s fc-deploy-test -h]
  😈 If you have questions, please tell us: https://github.com/Serverless-Devs/Serverless-Devs/issues

版本/别名智能提示

发布别名/删除版本/删除别名时,若没有指定别名或者版本,需要组件去 get 线上已有的别名或者版本,供用户选择后再进行后续操作。这样用户就不需要去主动去查询有哪些已有的别名/版本。

端云联调: 辅助函数如何支持oss 触发器

假设是如下场景, 有一个函数, 有一个 oss 触发器, 触发规则前缀是/a, 后缀是空, s 工具创建端云联调辅助函数的时候, 辅助函数可能因为 oss 的触发规则, 导致不能在辅助函数上创建 oss 触发器, 这个时候应该如何处理?

辅助函数创建成功, 吞掉不能创建触发器的错误, 提示用户可以临时将 oss 触发器指向辅助函数?

关于 nas 操作异常

复现步骤:

  1. 修改自定义 nas 配置,配置如下,执行 s deploy,没有生效
nasConfig:
      userId: 10003
      groupId: 10003
      mountPoints:
        - serverAddr: ***-****.cn-hangzhou.nas.aliyuncs.com
          nasDir: /
          fcDir: /mnt/auto

image

  1. 配置 nasConfig: auto,然后执行 s deploy

fc-deploy 建议返回所有配置

场景:
如果之前配置了initializer,之后将 initializer 配置删除掉了,执行 s dpeloy;此时我们 deploy 返回值是没有 initializer 的配置的,但是此配置线上时存在,不符合定义的预期 用户也无感知,执行的时候报错

在想这块是否可以显示线上的配置,用户也可以通过返回信息看到线上的配置是否符合他的预期,哪怕之后出现了问题,也可以很快的定位到问题

端云联调, java build 更新之后, 会出现异常情况

  1. s proxied setup -d 5005 这个 terminal 卡死了
[2021-07-14T16:54:33.092] [INFO ] [FC-PROXIED-INVOKE] - Detecting code changes and Restarting funtion container...
(node:89465) UnhandledPromiseRejectionWarning: Error: (HTTP code 409) unexpected - Conflict. The container name "/fc_local_1626252873092_xoj0gyz" is already in use by container "77e635d336aa30a2150cb77723ffb69b74eb62d63a80bca8656701bd71036c2a". You have to remove (or rename) that container to be able to reuse that name. 
    at /Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:315:17
    at getCause (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:345:7)
    at Modem.buildPayload (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:314:5)
    at IncomingMessage.<anonymous> (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:286:14)
    at IncomingMessage.emit (events.js:327:22)
    at endReadableNT (_stream_readable.js:1224:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
(node:89465) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 5)
(node:89465) UnhandledPromiseRejectionWarning: Error: (HTTP code 409) unexpected - Conflict. The container name "/fc_local_1626252873092_xoj0gyz" is already in use by container "77e635d336aa30a2150cb77723ffb69b74eb62d63a80bca8656701bd71036c2a". You have to remove (or rename) that container to be able to reuse that name. 
    at /Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:315:17
    at getCause (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:345:7)
    at Modem.buildPayload (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:314:5)
    at IncomingMessage.<anonymous> (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:286:14)
    at IncomingMessage.emit (events.js:327:22)
    at endReadableNT (_stream_readable.js:1224:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
(node:89465) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 6)
(node:89465) UnhandledPromiseRejectionWarning: Error: (HTTP code 409) unexpected - Conflict. The container name "/fc_local_1626252873092_xoj0gyz" is already in use by container "77e635d336aa30a2150cb77723ffb69b74eb62d63a80bca8656701bd71036c2a". You have to remove (or rename) that container to be able to reuse that name. 
    at /Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:315:17
    at getCause (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:345:7)
    at Modem.buildPayload (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:314:5)
    at IncomingMessage.<anonymous> (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:286:14)
    at IncomingMessage.emit (events.js:327:22)
    at endReadableNT (_stream_readable.js:1224:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
(node:89465) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 7)
[2021-07-14T16:54:35.161] [INFO ] [FC-PROXIED-INVOKE] - Skip pulling image aliyunfc/runtime-java8:1.9.18...
[2021-07-14T16:54:35.161] [INFO ] [FC-PROXIED-INVOKE] - Reloading success, stopping old container...
[2021-07-14T16:54:35.670] [INFO ] [FC-PROXIED-INVOKE] - Stopping container: e0b6f4bd171dd3cd9ce65dea1b4028ba756fac0ead8c6871cb31f02a3dc3220f
[2021-07-14T16:54:39.431] [INFO ] [FC-PROXIED-INVOKE] - Stopping old container successfully
[2021-07-14T16:54:39.433] [INFO ] [FC-PROXIED-INVOKE] - Detecting code changes and Restarting funtion container...
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]
[2021-07-14T16:54:45.911] [INFO ] [FC-PROXIED-INVOKE] - Stopping old container successfully
[2021-07-14T16:54:45.912] [INFO ] [FC-PROXIED-INVOKE] - Detecting code changes and Restarting funtion container...
(node:89465) UnhandledPromiseRejectionWarning: Error: (HTTP code 409) unexpected - Conflict. The container name "/fc_local_1626252873138_x0vwt4a" is already in use by container "0efd7adda9a87a5e02d566778d5d7cfb74abadc44258693e23bf6e18c03df059". You have to remove (or rename) that container to be able to reuse that name. 
    at /Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:315:17
    at getCause (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:345:7)
    at Modem.buildPayload (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:314:5)
    at IncomingMessage.<anonymous> (/Users/songluo/.s/components/devsapp.cn/devsapp/[email protected]/node_modules/docker-modem/lib/modem.js:286:14)
    at IncomingMessage.emit (events.js:327:22)
    at endReadableNT (_stream_readable.js:1224:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
(node:89465) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 8)

  1. s proxied clean 会出现 本次 ca 容器还存在的情况

image

deploy能力的细化

  • 可以部署配置,部署代码,进行分开
  • 部署的时候可以通过参数将代码传到OSS进行部署
  • 多函数部署时服务会重复更新,如何解决

FC组件报错信息统计

为了提升用户的整体使用体验,我们会针对一些报错信息进行特殊处理。现在征集所有用户的使用时出现的报错信息,我们会有针对性的进行整理

YAML规范说明没有把参数给全

YAML规范中,给了许多函数/服务相关的配置说明,但是没有提供YAML本身的规范,例如,Component是否必选,支持哪些component,怎么查看这些component,如何选择component,还需补充完整。

关于 deploy 配置不生效

复现步骤:

  1. s deploy
  2. rm -rf .s
  3. 再次 s deploy, 有交互就回车 【会选择使用线上配置】
  4. 修改 yaml
    I. s deploy yaml 不生效
    II. s deploy --use-local. yaml 生效

打包的函数代码是否对用户透出

有的用户想在部署前有一步操作,只输出压缩后的代码包,判断该包是否符合预期,若符合预期再进行上传。

所以是否需要增加一个指令,例如 pack 指令,只打包代码包,然后透出给用户,然用户自行判断是否执行后面的 deploy 操作。

s remove能力的支持

现在s remove的行为有些鸡肋,这里需要增加一种模式可能会更好,就是:

s remove service -f

可以强行删掉service下所有的东西

端云联调, 权限问题

目前每次需要根据 session 名字创建一个新的 role, 也就是要求 s 配置的 access 差不多需要 ramfull 的权限, 这个对于权限要求过大, 对于子账号,体验端云联调, 只需要增加如下 access 即可

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "tns:*",
            "Resource": "*"
        }
    ],
    "Version": "1"
}

需要的体验大致如下:

  1. 首先检查 ak 是不是具有 tunnel service 的 access
  2. 根据用户配置的 role 决定如何操作
  • 2.1. 如果用户没有配置 role, 最好能直接使用 fc 控制台引导生成的 default role
  • 2.2 如果用户配置的了 role, 查看这个 role 是否具有 custom container 需要的 acr 读权限, 如果没有, 需要 update role,这个时候, 如果没有ram 操作权限, 需要给用户明确提示, 应该怎么做

deploy部署速度优化

  1. 部署时可以检查域名状态,如果域名已经ready,可以不用重新部署和验证。

增加部分Version, Alias, 预留能力

Version

  • 查看版本列表:s project version list
  • 发布版本:s project version publish -d/--description 描述
  • 删除版本:s project version delete -i/--id 版本号

Alias

  • 查看别名列表:s project alias list
  • 获取别名详情:s project alias get -n/--name aliasName
  • 发布别名:s project alias publish --mversion version版本 --gversion 灰度版本 --weight version权重 -(n/name) aliasName
  • 删除别名:s project alias delete -n/--name aliasName

Provision

  • 查看预留列表:s project provision list
  • 设置预留:s project provision add -q/--qualifier 版本 -c/--config 配置路径
  • 获取预留:s project provision get

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.