日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基礎開發

本文介紹Serverless 應用引擎 SAE(Serverless App Engine)源碼部署的工作原理、環境配置、構建流程、源代碼導入等信息。

整體工作原理

作為Serverless 應用引擎 SAE(Serverless App Engine)中,降低用戶運維負擔的重要一環,源碼部署提供了直接從用戶源碼到應用上線的能力。本功能是接受用戶觸發的構建事件后,根據用戶提供的源代碼,自動檢測構建所需的環境,自動化完成代碼構建到部署的完整流程(配置運行時環境、安裝依賴管理工具、安裝第三方依賴、打包鏡像、推送到個人倉庫)。

在具體的實現方式上,SAE將構建流程和部署流程隔離,僅會導出與產物運行相關的運行環境,因此可以大大減少產物鏡像的體積,提高應用部署和啟動速度。但是,需要注意的是,在這種模式下,在依賴構建環境中安裝的某些依賴可能不存在于應用部署鏡像中。

SAE源碼部署功能支持構建產物鏡像的導出和下載,遵循云原生Buildpack規范。

基礎環境配置

當前,構建時只支持使用Ubuntu 22.04作為基礎鏡像,并基于此構建build image和run image,作為構建時和應用啟動時的基礎鏡像。build image和run image的不同點在于build image會包含更多僅與應用構建相關的庫,功能更加強大,但是體積較大,不適合部署使用。

當前的構建機配額為2核CPU、4 GB內存、30 GB磁盤。如果您有特殊的構建需求,請聯系阿里云技術團隊。更多信息,請參見聯系我們

源碼部署的構建主流程

提交代碼后會根據自動探測結果進行構建,選擇運行時、運行時版本、第三方包管理工具版本。環境配置完畢后,將自動執行構建命令。

根據運行時進行個性化配置

當前需要手動選擇運行時語言、運行時版本,不支持指定第三方包管理工具版本。

支持的版本列表

運行時版本列表

當前支持Ubuntu 22.04作為基礎環境。支持Go、Java、Node.js、Python和PHP語言的應用,此外還支持靜態頁面和基于Dockerfile構建的應用。支持的版本列表和額外需要的信息如下所示:

運行時語言

支持的版本

額外需要的信息

Go

全部版本

Java(OpenJDK)

8、11、16、17、18

Node.js

14、16、18、19、20

Python

3.8、3.9、3.10、3.11

輸入(例如python main.py

PHP

8.1、8.2

靜態頁面應用

不涉及

Dockerfile

不涉及

第三方包管理工具版本

第三方包管理的判定和下載由源碼部署的探測邏輯完成,當前不能通過用戶直接選擇。版本列表如下:

包管理工具

版本

Graalvm

21.0.0

Gradle

基于工程文件檢測或8.2.1

Maven

基于工程文件檢測或3.9.3

Pnpm

基于工程文件檢測或最新版本

Yarn

基于工程文件檢測或最新版本

Pip

跟隨Python版本

Go mod

不涉及

Composer

2.1.3

注意事項

Python

對于大多數情況來說,Python沒有確定的啟動方式。因此,推薦在構建Python應用時指定應用程序的啟動命令。可能的啟動命令如下:

python main.py
gunicorn -p :8080 main:app

在使用Python 11構建有Numpy依賴的代碼時,會產生構建錯誤,降低版本為3.8即可。

Java

在使用Maven或Gradle進行編譯時,如果工程項目中存在mvnwgradlew腳本文件時,可能會產生額外的行為,進而導致編譯失敗。在不影響正常編譯的前提下,建議刪除工程文件中的該類文件后再提交源碼部署流程。

Go

由于老版本的Go(小于1.13)不支持Go proxy的功能,因此如果應用的工程文件中的go.mod文件指定了一個偏小的版本,經常會導致無法利用到阿里鏡像源的加速能力,導致依賴拉取失敗。推薦在不影響工程構建的前提下,盡量升級工程文件中指定的Go運行時版本。

當前,在工程中沒有go.mod時,不會使用goproxy

讀取靜態文件時,請使用embedFS

高級配置:源碼部署的構建配置

通過配置文件指定構建行為

可以通過在代碼的構建目錄寫入Procfile或app.yaml的方式提供程序啟動命令。

說明

通過控制臺設置的ENTRYPOINT優先級更高,不會被配置文件的設置覆蓋。

Procfile

Procfile文件能夠指定應用程序啟動時執行的命令。可以使用Procfile聲明各種進程類型。在源碼部署中,需要將process-type指定為web,并添加應用啟動命令。

  • 格式如下:

    web: <用戶entrypoint>
  • 示例如下:

    web: python app.py -p 9000

app.yaml

app.yaml是用于應用部署的應用配置文件,包含了啟動命令和運行時配置。當前只使用其設置應用啟動命令。

  • 格式如下:

    entrypoint: <用戶entrypoint>
  • 示例如下:

    entrypoint: gunicorn -b :$PORT main:app

源代碼導入

當前,源碼部署過程只允許通過從源代碼托管平臺導入的方式上傳代碼。用戶需要首先將自己的代碼推送到代碼倉庫,在應用創建時的授權界面授權后才可以接入到SAE的源碼部署流程中。

當前支持接入的代碼平臺

支持以下代碼托管平臺作為代碼源:

觸發器事件

支持以下構建觸發模式:

  • Push到指定分支:每次新提交代碼到指定分支時,系統都會自動構建應用的新版本。

  • 手動觸發構建:選擇手動觸發時,系統不會自動執行持續部署。

  • Tag/Release事件:在GitHub中該類事件用Release表示,在GitLab中用Tag表示。

倉庫授權方式

源代碼倉庫的授權使用OAuth 2.0授權協議。需要授予平臺的權限范圍如下表所示:

重要

請全部授權,否則會導致應用構建部署失敗。

平臺名稱

權限代碼

權限范圍描述

GitHub

  1. repo

  2. admin:repo_hook

  3. admin:org

  1. 代碼倉庫權限

  2. Webhook管理權限

  3. 組織管理權限

Gitee

  1. user_info

  2. projects

  3. hook

  1. 訪問用戶的個人信息、最新動態

  2. 查看、創建、更新用戶的項目

  3. 查看、部署、更新用戶的Webhook

GitLab

  1. read_user

  2. read_repository

  3. write_repository

  1. 讀取授權用戶的個人信息

  2. 代碼倉庫讀權限

  3. 代碼倉庫寫權限(僅用于創建Webhook)

Codeup

  1. read:repo

  2. read:repo:branch

  3. read:user

  4. read:repo:tag

  5. read:repo:commit

  6. read:repo:webhook

  7. write:repo:webhook

  8. read:org

  1. 代碼倉庫讀權限

  2. 代碼倉庫分支讀權限

  3. 授權用戶的個人信息讀權限

  4. 代碼倉庫標簽讀權限

  5. 代碼倉庫提交歷史記錄讀權限

  6. 代碼倉庫Webhook讀權限

  7. 代碼倉庫Webhook寫權限

  8. 組織的讀權限