国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

只更新代碼,然后發(fā)布版本:基于 Serverless Devs

發(fā)布時(shí)間:2021-08-21 11:27 來(lái)源:ITPUB博客 閱讀:0 作者: 欄目: 云計算 歡迎投稿:712375056

作者 | Anycodes

眾所周知,隨著(zhù)時(shí)間的發(fā)展,Serverless 命令行工具也逐漸的玩出了更多的花樣,就目前來(lái)看,常見(jiàn)的形態(tài)有兩種,一種是通

過(guò) Yaml 來(lái)進(jìn)行資源的描述,另外一種是純粹的命令行操作,而不依賴(lài)這些內容。

第一種通過(guò) Yaml 來(lái)進(jìn)行資源描述,其好處不言而喻,目前主流的 Serverless 開(kāi)發(fā)者工具均是類(lèi)似的模式,例如阿里云的 

Funcraft,著(zhù)名的開(kāi)源項目 Serverless Framework 等,通過(guò) Yaml,使用者可以通過(guò)簡(jiǎn)單的命令,進(jìn)行復雜的操作,例如開(kāi)發(fā)

者在 Yaml 中描述好服務(wù)、函數等配置,描述好代碼位置,只需要 deploy 就可以將本地項目部署到線(xiàn)上,非常方便。但是這

有一個(gè)非常明顯的劣勢,在很多時(shí)候我們的企業(yè)管理者,給每個(gè)人分配的權限是固定的,例如運維人員只能更新某些內容,開(kāi)

發(fā)人員只能更新某些代碼,某些負責可以發(fā)布版本等,那么這個(gè)時(shí)候”一把梭”的行為就顯得非常尷尬,想為開(kāi)發(fā)者做更多,

但是有些開(kāi)發(fā)者不需要你做更多,那么”高階能力”和”原子能力”的平衡就顯得至關(guān)重要的。

第二種模式,雖然是不需要依賴(lài) Yaml,在很多時(shí)候使用起來(lái)可能會(huì )稍微復雜一些,例如我們創(chuàng )建一個(gè)函數可能涉及到很多流

程:創(chuàng )建服務(wù),創(chuàng )建函數,創(chuàng )建觸發(fā)器…,相對比上面所說(shuō)的一條指令而言,確實(shí)復雜很多,但是這種無(wú) Yaml 的模式,更適

合做原子操作,可以最大程度解決上述問(wèn)題,同時(shí)這種做法也可以在一定程度上進(jìn)行更多的拓展,例如某些本不需要依賴(lài) 

Yaml 的行為:查詢(xún)服務(wù)列表,查詢(xún)函數列表……

所以這兩種模式各有優(yōu)缺點(diǎn),我們在使用的時(shí)候完全可以組合來(lái)使用,達到最大的一個(gè)生產(chǎn)效能。那么一個(gè)新問(wèn)題來(lái)了,以

阿里云函數計算為例,如何同時(shí)擁有這兩種模式的使用方法呢?

其實(shí) Serverless Devs 天然支持 Yaml 描述和非 Yaml 描述的能力,例如阿里云函數計算的 FC 組件就是一個(gè)可以依靠 Yaml 

描述進(jìn)行資源操作的組件,而 FC-API 組件則是 API 相關(guān)的原子性操作。

本文將會(huì )以這樣一個(gè)案例/場(chǎng)景為例,為讀者介紹這兩者的使用方法:

1.通過(guò) Serverless Devs 快速創(chuàng )建一個(gè)服務(wù)/函數/觸發(fā)器

2.通過(guò)無(wú) Yaml 的模式對其中的代碼部分進(jìn)行單獨的更新

3.更新之后發(fā)布一個(gè)版本

4.通過(guò) Git+Github Action 實(shí)現一個(gè)代碼自動(dòng)化發(fā)布和版本自動(dòng)化發(fā)布的能力

快速創(chuàng )建函數

我們只需要通過(guò)s init并且選擇阿里云函數計算的 Python3 Http 函數即可:

創(chuàng )建完成之后,我們只需要進(jìn)入到對應的文件夾,并且執行s deploy,即可將項目快速部署到線(xiàn)上。在進(jìn)入到項目后,我們

可以在項目下看到一個(gè)s.yaml的文件,這個(gè)文件就是資源描述文件:

其完整的描述:

https://github.com/devsapp/fc/blob/main/docs/Others/yaml.md

此時(shí)我們可以通過(guò)s deploy進(jìn)行項目的部署:

部署完成,我們可以打開(kāi)系統分配給我們的域名,我們可以看到內容:

我們可以編輯index.py,將Hello world!變?yōu)镠ello world Serverless Devs!

然后我們就要接觸一個(gè)新的組件 FC-API :

https://github.com/devsapp/fc-api 

我們可以執行幫助文檔:s cli fc-api -h:

此時(shí)我們需要明確的是,當我們執行s cli的時(shí)候,系統就不去讀 Yaml,而直接進(jìn)行相關(guān)方法的調用。

如果我們對這個(gè)方法還是不清楚,我們可以:s cli fc-api updateFunction -h

此時(shí)我們只需要按照規范,填寫(xiě)好地區,服務(wù)名,函數名,以及要更新的字段即可:

```

s cli fc-api updateFunction --region cn-hangzhou --serviceName fc-deploy-service --functionName http-trigger-

function--code '{"zipFile": "./"}'

```

完成之后,我們可以再去看一下之前的頁(yè)面是否同步更新了:

此處可能有疑問(wèn),你的幫助文檔寫(xiě)的是:--code string [JSON String] The code of the function. The code must be 

packaged into a ZIP file._你是怎么知道傳遞--code '{"zipFile": "./"}'的?

因為在我們看幫助文檔的時(shí)候,題已經(jīng)提醒了我們這是一個(gè) JSON String,同時(shí)在幫助文檔最上面是有鏈接地址:

```_Usage_

```

 s cli fc-api updateFunction

  API Document: https://help.aliyun.com/document_detail/189986.html


Options


--region stringThe region of fc endpoint.                                                    

--access stringSpecify the key name.                                                         

--props stringThe json string of props.                                                     

--serviceName stringThe name of the service.                                                      

--functionName stringThe description of the function.                                              

--code string[JSON String]The code of the function.The code must be packaged into a ZIP file.

```

```

>此時(shí),我們可以打開(kāi) https://help.aliyun.com/document_detail/189986.html:

![image]( cb80

fe6.png)

![image](

25b.png)

>此時(shí)為了方便,Serverless devs 支持本地路徑,會(huì )幫助你進(jìn)行打包等操作。

當然,我們還可以更刺激一些,修改其他內容,如單純修改一些 timeout:

```

s cli fc-api updateFunction —region cn-hangzhou —serviceName fc-deploy-service —functionName http-trigger-

function —timeout 70

```

![image](

eab9.png)

通過(guò)無(wú) Yaml 模式發(fā)布版本

和上面一樣,我們可以用`s cli fc-api -h `查看一下版本發(fā)布的方法:`s cli fc-api publishVersion -h`

![image](

e19d.png)

嘗試拼接參數:

```

s cli fc-api publishVersion —region cn-hangzhou —serviceName fc-deploy-service —description “This is a test version”

```

得到結果:

![image](

7d.png)

CI/CD 組件的使用

當我們想要把上面只更新代碼,發(fā)布版本的能力集成到 CI/CD,或者某些自動(dòng)化流程中,如何操作呢?

以 GithubAction 為例,我們可以直接執行`s cli cicd`:

![image](

dc47.png)

接下來(lái),我們對`./.github/workflow/serverless-devs.yml`進(jìn)行自定義編輯:

```yaml

name: Serverless Devs Project CI/CD

on:

  push:

    branches: [ master ]

jobs:

  serverless-devs-cd:

    runs-on: ubuntu-latest

    steps:

      - uses: actions/checkout@v2

      - uses: actions/setup-node@v2

        with:

          node-version: 12

          registry-url:

      - run: npm install

      - run: npm install -g @serverless-devs/s

      # 默認密鑰配置指令是阿里云密鑰配置指令,更多可以參考:

      # 如何通過(guò) Github Action使用Serverless Devs 做 CI/CD:http://short.devsapp.cn/cicd/github/action/usage

      # Serverless Devs 的官網(wǎng)是通過(guò) Serverless Devs 部署的: http://short.devsapp.cn/cicd/github/action/practice

      - run: s config add --AccountID ${{secrets.AccountID}} --AccessKeyID ${{secrets.AccessKeyID}} --AccessKeySecr

et ${{secrets.AccessKeySecret}} -a default

      - run: s cli fc-api updateFunction --region cn-hangzhou --serviceName fc-deploy-service --functionName http-

trigger-function --code '{"zipFile":"./"}'

      - run: s cli fc-api publishVersion --region cn-hangzhou --serviceName fc-deploy-service

```

我們只是在最后加了兩個(gè)人 run,一個(gè)是發(fā)布代碼,一個(gè)是發(fā)布版本,此時(shí)我們可以創(chuàng )建一個(gè) Github 倉庫,嘗試一下:


創(chuàng )建完成之后,我們可以按照案例提醒,進(jìn)行密鑰的配置:

# 默認密鑰配置指令是阿里云密鑰配置指令,更多可以參考:

# 如何通過(guò) Github Action 使用 Serverless Devs 做 CI/CD:http://short.devsapp.cn/cicd/github/action/usage

# Serverless Devs 的官網(wǎng)是通過(guò) Serverless Devs 部署的: http://short.devsapp.cn/cicd/github/action/practice

```

接下來(lái), 我們通過(guò) git init 等一系列指令,完成代碼推到倉庫:

此時(shí),我們再次修改代碼:

修改完成之后,我們將代碼 push 到測試倉庫,可以看到,我們在 Action 中可以看到一個(gè) workflow 在執行:

稍等片刻,當這個(gè)流程完成:

我們打開(kāi)之前的頁(yè)面,可以看到,網(wǎng)頁(yè)內容已經(jīng)順利被更新:

# 總結

本文以阿里云為例,通過(guò)在 Github 上使用 Servelress Devs 單純對代碼進(jìn)行更新,并進(jìn)行版本發(fā)布,該流程是比較常見(jiàn)的,

也是比較通用的,希望讀者可以發(fā)揮想象力,將這個(gè)流程應用到自己的項目中。


(文章轉載自 Go Serverless)

Serverless Devs 參與的貢獻

Serverless Devs 的開(kāi)源為國內外開(kāi)發(fā)者提供了 Serverless 工具的新選擇,讓開(kāi)發(fā)者可以以更短的路徑體驗到多云 Serverless

 產(chǎn)品,以更快的速度創(chuàng )建和部署 Serverless  應用,以更簡(jiǎn)單和更自動(dòng)化的方法進(jìn)行項目管理/運維,未來(lái)期待更多開(kāi)發(fā)者參

與共建。

目前代碼已經(jīng)在 Gitee(碼云)和 GitHub 上正式開(kāi)放:

- Github 地址:https://github.com/serverless-devs

- Gitee 地址:https://gitee.com/organizations/serverless-devs/projects

- Serverless Devs 官網(wǎng):https://www.serverless-devs.com



免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

中文字幕人成无码人妻| 亚洲精品永久在线观看| 最近最新的字幕MV| 国产六月婷婷爱在线观看| 国产精品免费无遮挡无码永久视频| 久久人妻AV无码中文专区|