做者 | 江昱 来源 | 阿里巴巴云原生公众号 只有本身吃本身的狗粮,本身作的东西才不“🐶”。Serverless Devs 自发展之处到如今,已经经历了几个月的时间,在这几个月,Serverless Devs 的成长是迅速的,这很大一部分的缘由是“咱们在吃本身的狗粮”,咱们相信,若是本身都用不爽的东西,你们必定很难用的起来。 今天这篇文章,是一个关于 Serverless Devs 官网建设的文章,文章很简单,也颇有趣。html
什么是 Serverless Devs?
「Serverless Devs」是由阿里云开源的 Serverless 开发者平台,致力于为开发者提供强大的工具链体系。经过该平台,开发者能够一键体验多云 Serverless 产品,极速部署 Serverless 项目。Serverless Devs 让开发者以更短的路径体验到多个主流云厂商 Serverless 产品,以更快的速度建立和部署 Serverless 应用,以更简单、更自动化的方法进行项目管理和运维,Serverless 项目经过该平台完成全自动化后,可节省 99.9% 的管理成本。 node
- Github 地址:https://github.com/serverless-devs
- Gitee 地址:https://gitee.com/organizations/serverless-devs/projects
- Serverless Devs 官网:https://www.serverless-devs.com
Serverless Devs 与 Docusaurus
众所周知,开源项目的官网不宜太复杂,其实简简单单的就好,因此咱们通过了很长时间的对比,最终选择了 Docusaurus 做为官网的框架选型。那么问题来了,咱们选型结束以后,咱们要如何来建设官网? 通过一些简单的调研,咱们决定用 Serverless Devs 建设 Serverless Devs 官网,并将其部署到 Serverless 架构上,很绕嘴是吧?可是,这个过程却真的很“经典”: 咱们经过 Serverless devs 初始化了 Docusaurus:s init devsapp/website-docusaurus,这一部分能够参考文档:https://github.com/devsapp/website-example。 讲真,虽然也就是一行代码的事情,可是整个初始化仍是比较“赏心悦目”的,做为一个 Serverless 应用全生命周期的工具,Serverless Devs 在脚手架和引导层面仍是下了不少功夫的: git
能够看到,初始化的时候,系统引导式的让咱们填写了项目名,存储桶名,以及须要的密钥信息,同时完成以后,还告诉咱们: github
You could [cd /Users/jiangyu/Desktop/start-fc/website/serverless-website] and enjoy your serverless journey!
感受仍是很贴心的。 接下来,按照指引:web
能够看到帮助文档: npm
当执行 s website-starter -h 以后,首次运行帮助信息,可能涉及到组件加载过程,稍等片刻,能够看到帮助信息: ubuntu
此时,咱们要将项目部署到线上,只须要执行 s deploy 便可。 固然,咱们还须要对项目进行必定的配置,以及对咱们的官网进行必定的建设。 关于网站建设,能够参考 Docusaurus 的官网文档,关于 Serverless Devs 的 website 组件配置,能够参考上图给咱们 🧭 More information: https://github.com/devsapp/website: 架构
在文档中能够了解更多的配置内容,最终生成咱们的 s.yaml:app
edition: 1.0.0 access: website_access services: website: component: devsapp/website actions: pre-deploy: - run: npm install path: ./ - run: npm run build path: ./ props: bucket: serverless-devs-website src: codeUri: ./ publishDir: ./build index: index.html subDir: type: index region: cn-hongkong
CD 与 Serverless Devs
当咱们创建好了网站页面,在本地也能够正常运行,经过本地的 s deploy 也能够顺利部署了,这个时候面临了新的问题:我如何更新个人网站?每次都要手动的在本地发布么?是否能够利用 Github Action,接入自动化的能力呢? 因此: 框架
- 咱们建立了一个仓库:https://github.com/Serverless-Devs/website
- 咱们将代码推送到仓库以后,建立了一个 Github Action 的配置:
name: Website Publish on: push: branches: [ master ] jobs: publish-website: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: 12 registry-url: https://registry.npmjs.org/ - run: npm install - run: npm install -g @serverless-devs/s - run: s config add --AccountID ${{secrets.ALIYUN_ACCOUNT_ID}} --AccessKeyID ${{secrets.ALIYUN_ACCESS_KEY_ID}} --AccessKeySecret ${{secrets.ALIYUN_ACCESS_KEY_SECRET}} -a website_access - run: s deploy
此时我再 push 代码,就能够自动将网站发布出来了。
这里面的核心点以下所示:
- 安装 Serverless Devs:run: npm install -g @serverless-devs/s
- 配置密钥信息:run: s config add --AccountID ${{secrets.ALIYUN_ACCOUNT_ID}} --AccessKeyID ${{secrets.ALIYUN_ACCESS_KEY_ID}} --AccessKeySecret ${{secrets.ALIYUN_ACCESS_KEY_SECRET}} -a website_access
- 部署:run: s deploy
整个效果:
部署后的页面:
这里要说明,此处配置密钥信息,使用了 Github 的 Secrets 功能,这个功能仍是比较基础的,因此很少赘述,主要就是将发布的所须要的密钥信息配置到 Secrets 里面。
总结
其实,目前来讲不少人的博客,部分的官网都是经过静态网站等进行部署,经过 Serverless Devs 走这一套仍是比较方便的:
- 得益于 Serverless Devs 的行为描述,咱们能够更简单地将 npm install,npm run build 等指令集成到项目中。
- 得益于 Serverless Devs 的引导能力,包括建立、入门,以及密钥配置时的获取连接,Serverless Devs 确实在不断的从细节出发,为便利而努力。
- 得益于 Serverless Devs 的灵活性,只须要两三行代码,就能够配置出 Github 的 CD 能力,将网站持续发出去,我的以为这个仍是挺爽的。
固然,目前来看仍是有一些问题等待去作的:
- Serverless Devs 的场景仍是有待丰富的。
- 这个社区官网只有 CD,没有 CI 其实仍是有必定风险的,要慢慢的完善起来。