日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Github Action发布函数到阿里云serverless平台

發布時間:2024/9/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Github Action发布函数到阿里云serverless平台 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介: 本文簡述了如何通過自定義Github Action自動化部署云函數到阿里云serverless平臺中

阿里云提供了函數計算,即serverless支持。同時阿里云還提供了fun cli命令行工具方便項目驗證、發布等。
發布函數雖然只是一句命令行的事情,但是做到集成發布平臺還是需要準備對應的環境,配置和工具等,稍顯復雜。

在travis-ci中可以用shell腳本完成,但是要求nodejs環境。在從travis-ci切換到Github Action的時候直接拷貝shell腳本也能支持,但是Github Action支持Dockerfile模式,可以使用更簡單的方式來實現,同時更有利于復用。

?

Github Action主要有兩個方法支持自定義:

第一種是javascript路線(nodejs環境),第二種是dockerfile路線,支持直接run docker鏡像;

第二種使用覆蓋面更廣也更容易使用,特別是我對nodejs的調試一直不太熟練;

我們要構建的這個Github Action思路很簡單,提供一個node環境,預安裝fun的穩定版本,然后直接運行fun deploy就行了。

所有需要的參數要么通過ENV傳遞,要么通過input傳遞。

?

自定義Github Action

自定義的幾個主要步驟如下:

  • 創建action.yml文件
  • 創建Dockerfile和必要的其他文件,比如entrypoint.sh
  • 創建README (發布到marketplace必要)
    首先創建一個action.yml文件,這個文件的內容會展示到github action marketplace中。

示例如下:

name: "Aliyun Serverless Action" description: "GitHub Actions for Aliyun Serverless 🚀 Deploy function automatically." author: "Yunkun Huang" runs:using: "docker"image: "Dockerfile"args:- ${{ inputs.functionFolder }} branding:icon: "upload-cloud"color: "blue" inputs:functionFolder:description: "Folder name for function"required: falsedefault: "."

這里inputs聲明了所需參數,branding主要定義在marketplace的展示,這里是藍色的“上傳到云”圖標。

然后準備Dockerfile。這個就比較直接了,安裝了fun cli以后拷貝entrypoint.sh即可。

FROM node:8RUN npm install -g @alicloud/fun@3.2.3COPY entrypoint.sh /entrypoint.sh ENTRYPOINT [ "/entrypoint.sh" ]

entrypoint中稍微多一點內容

#!/bin/bashset -e # set -exfunction print_info() {echo -e "\e[36mINFO: ${1}\e[m" }FOLDER_NAME=$1cd "$FOLDER_NAME" print_info "use function in folder \"$FOLDER_NAME\""print_info 'show files' lsprint_info 'show fun client version' fun --versionprint_info 'start deploy function' fun deploy print_info 'deploy success'

再加上README之后,所必要的文件就夠了。

在Github點擊release,勾選發布到marketplace(https://github.com/marketplace/actions/aliyun-serverless-action),效果如下圖:

使用的話在github action的yml直接寫

uses: htynkn/aliyun-serverless-action@master env:ACCOUNT_ID: ${{ secrets.ACCOUNT_ID }}REGION: cn-shanghaiACCESS_KEY_ID: ${{ secrets.ACCESS_KEY_ID }}ACCESS_KEY_SECRET: ${{ secrets.ACCESS_KEY_SECRET }}

完整例子參考:https://github.com/htynkn/aliyun-serverless-action/blob/master/.github/workflows/test.yml

?

優化

我們自定義的Github Action就這么完成了,這里還有不少地方可以優化。

首先是項目自己的CI和測試,先說CI,因為項目設計到了Dockerfile和bash腳本,那么我們需要關心

  • Dockerfile能否構建成功
  • bash腳本檢測
  • Dockerfile lint

示例如下:

name: cion:pull_request:types: [opened, synchronize]paths-ignore:- "**.md"push:paths-ignore:- "**.md"branches:- masterjobs:build:runs-on: ubuntu-18.04steps:- uses: actions/checkout@v2- name: buildenv:DOCKER_IMAGE: docker.pkg.github.com/${{ github.repository }}/action:latestrun: |docker build . --file Dockerfile --tag ${DOCKER_IMAGE}shellcheck:runs-on: ubuntu-18.04steps:- uses: actions/checkout@v2- name: shellcheckrun: shellcheck ./entrypoint.shhadolint:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- uses: burdzwastaken/hadolint-action@1.5.0env:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}HADOLINT_ACTION_DOCKERFILE_FOLDER: .

自動化測試我們直接部署一個函數到阿里云,然后驗證。為了方便就是用HTTP觸發器那種,部署完成后直接請求

name: teston:push:paths-ignore:- "**.md"branches:- masterjobs:deploy:runs-on: ubuntu-18.04steps:- uses: actions/checkout@v2- uses: actions/setup-node@v1with:node-version: "8.x"- run: cd test && npm install- uses: htynkn/aliyun-serverless-action@masterenv:ACCOUNT_ID: ${{ secrets.ACCOUNT_ID }}REGION: cn-shanghaiACCESS_KEY_ID: ${{ secrets.ACCESS_KEY_ID }}ACCESS_KEY_SECRET: ${{ secrets.ACCESS_KEY_SECRET }}with:functionFolder: test/- run: wget https://135603.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/http-demo/nodejs8/ -O response.json- run: test -f response.json

運行效果:

?

總結

Github Action配合Github自身使用確實很方便,提供自定義的手段擴大了使用范圍也降低了門檻。如果部署中需要一些私密信息,可以存儲在secrets中,通過ENV傳入。不敏感的信息通過input傳入即可。

總結

以上是生活随笔為你收集整理的使用Github Action发布函数到阿里云serverless平台的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。