-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
huyikun.hyk
committed
Feb 27, 2024
1 parent
6393940
commit c93589d
Showing
5 changed files
with
375 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# This is a basic workflow to help you get started with Actions | ||
|
||
name: CI | ||
|
||
# Controls when the workflow will run | ||
on: | ||
# Triggers the workflow on push or pull request events but only for the "main" branch | ||
push: | ||
branches: [ "main", "dev" ] | ||
pull_request: | ||
branches: [ "main", "dev" ] | ||
|
||
# Allows you to run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
permissions: | ||
contents: read | ||
|
||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | ||
jobs: | ||
# This workflow contains a single job called "build" | ||
build: | ||
# The type of runner that the job will run on | ||
runs-on: ubuntu-latest | ||
|
||
# Steps represent a sequence of tasks that will be executed as part of the job | ||
steps: | ||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | ||
- uses: actions/checkout@v3 | ||
|
||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 14.14.0 | ||
|
||
# Runs my action | ||
- name: Setup serverless-devs for aliyun | ||
id: setup-s-aliyun | ||
uses: ./ | ||
with: | ||
provider: aliyun | ||
account_id: MOCK_ACCOUNT_ID | ||
access_key_id: MOCK_KEY_ID | ||
access_key_secret: MOCK_KEY_SECRET | ||
access: MOCK_ACCESS_ALIAS_ALIYUN | ||
|
||
- name: Setup serverless-devs for aws | ||
id: setup-s-aws | ||
uses: ./ | ||
with: | ||
provider: aws | ||
access_key_id: MOCK_KEY_ID | ||
secret_access_key: MOCK_Secret_Access_Key | ||
access: MOCK_ACCESS_ALIAS_AWS | ||
|
||
- name: Setup serverless-devs for tencent | ||
id: setup-s-tencent | ||
uses: ./ | ||
with: | ||
provider: tencent | ||
account_id: MOCK_ACCOUNT_ID | ||
secret_id: MOCK_SECRET_ID | ||
secret_key: MOCK_SECRET_KEY | ||
access: MOCK_ACCESS_ALIAS_TENCENT | ||
|
||
- name: Setup serverless-devs for huawei | ||
id: setup-s-huawei | ||
uses: ./ | ||
with: | ||
provider: huawei | ||
access_key_id: MOCK_KEY_ID | ||
secret_access_key: MOCK_Secret_Access_Key | ||
access: MOCK_ACCESS_ALIAS_HUAWEI | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,96 @@ | ||
# setup-s | ||
使用 GitHub Actions 自动化配置 Serverless Devs 环境,该工作流将预装必要的工具并设定相关的云服务账户凭证。这个过程简化了在 GitHub Actions 平台上的 Serverless 应用部署,确保每次推送代码或发起合并请求时,Serverless 应用都能在预配置的环境中快速、一致地被构建和发布。 | ||
# setup-s-aliyun | ||
<p align="center"> | ||
<span><b><a href="./README.md">中文</a> | <a href="./README_en.md">English</a></b></span><br> | ||
</p> | ||
|
||
基于阿里云函数计算的 Serverless-devs 安装。 | ||
|
||
## 使用示例 | ||
可以按需在 setup-s 前添加前置 steps,例如 | ||
|
||
```yaml | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 14.14.0 | ||
``` | ||
### aliyun | ||
```yaml | ||
steps: | ||
- name: Setup Serverless-devs for aliyun | ||
uses: actions/setup-s@v1 | ||
with: | ||
provider: aliyun | ||
version: 3.0.2 | ||
account_id: ${{ secrets.ACCOUNT_ID }} | ||
access_key_id: ${{ secrets.ACCESS_KEYID }} | ||
access_key_secret: ${{ secrets.ACCESS_KEYSECRET }} | ||
access: aliyun_access | ||
``` | ||
### aws | ||
```yaml | ||
steps: | ||
- name: Setup Serverless-devs for aws | ||
uses: actions/setup-s@v1 | ||
with: | ||
provider: aws | ||
# version: 3.0.0 | ||
access_key_id: ${{ secrets.ACCESS_KEYID }} | ||
secret_access_key: ${{ secrets.SECRET_ACCESSKEY }} | ||
access: aws_access | ||
``` | ||
### huawei | ||
```yaml | ||
steps: | ||
- name: Setup Serverless-devs for huawei | ||
uses: actions/setup-s@v1 | ||
with: | ||
provider: huawei | ||
# version: 3.0.2 | ||
access_key_id: ${{ secrets.ACCESS_KEYID }} | ||
secret_access_key: ${{ secrets.SECRET_ACCESSKEY }} | ||
access: huawei_access | ||
``` | ||
### tencent | ||
```yaml | ||
steps: | ||
- name: Setup Serverless-devs for tencent | ||
uses: actions/setup-s@v1 | ||
with: | ||
provider: tencent | ||
account_id: ${{ secrets.ACCOUNT_ID }} | ||
secret_id: ${{ secrets.SECRET_ID }} | ||
secret_key: ${{ secrets.SECRET_KEY}} | ||
access: tencent_access | ||
``` | ||
## 参数说明 | ||
| 字段 | 说明 | 类型 | 默认值 | | ||
| ----- | -------- | ---- | ---| | ||
| provider | 必填,云厂商名称 | string | - | | ||
| account_id | 部分厂商账号ID | string | - | | ||
| access_key_id | 部分厂商账号AK | string | - | | ||
| access_key_secret | 部分厂商账号SK | string | - | | ||
| secret_access_key | 部分厂商账号SK | string | - | | ||
| secret_id | 部分厂商账号AK | string | - | | ||
| secret_key | 部分厂商账号SK | string | - | | ||
| access | 密钥别名 | string | default | | ||
| version | 非必填,安装版本 | 3.0.0 | 3.0.0 | | ||
密钥相关说明详见 [Serverless-devs 文档](https://docs.serverless-devs.com/serverless-devs/default_provider_config#%E9%98%BF%E9%87%8C%E4%BA%91%E5%AF%86%E9%92%A5%E8%8E%B7%E5%8F%96)。 | ||
## 常见云厂商密钥配置内容 | ||
| 云厂商 | 类型 | | ||
| --- | --- | | ||
| aliyun | AccountID, AccessKeyID, AccessKeySecret | | ||
| aws | AccessKeyID, SecretAccessKey| | ||
| huawei | AccessKeyID, SecretAccessKey| | ||
| tencent | AccountID, SecretID, SecretKey| |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
# setup-s-aliyun | ||
<p align="center"> | ||
<span><b><a href="./README.md">中文</a> | <a href="./README_en.md">English</a></b></span><br> | ||
</p> | ||
|
||
Setting up serverless-devs based on Aliyun Function Compute. | ||
|
||
## Usage | ||
You could add pre-steps before using setup-s, for example: | ||
|
||
```yaml | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 14.14.0 | ||
``` | ||
### aliyun | ||
```yaml | ||
steps: | ||
- name: Setup Serverless-devs for aliyun | ||
uses: actions/setup-s@v1 | ||
with: | ||
provider: aliyun | ||
version: 3.0.2 | ||
account_id: ${{ secrets.ACCOUNT_ID }} | ||
access_key_id: ${{ secrets.ACCESS_KEYID }} | ||
access_key_secret: ${{ secrets.ACCESS_KEYSECRET }} | ||
access: aliyun_access | ||
``` | ||
### aws | ||
```yaml | ||
steps: | ||
- name: Setup Serverless-devs for aws | ||
uses: actions/setup-s@v1 | ||
with: | ||
provider: aws | ||
# version: 3.0.0 | ||
access_key_id: ${{ secrets.ACCESS_KEYID }} | ||
secret_access_key: ${{ secrets.SECRET_ACCESSKEY }} | ||
access: aws_access | ||
``` | ||
### huawei | ||
```yaml | ||
steps: | ||
- name: Setup Serverless-devs for huawei | ||
uses: actions/setup-s@v1 | ||
with: | ||
provider: huawei | ||
# version: 3.0.2 | ||
access_key_id: ${{ secrets.ACCESS_KEYID }} | ||
secret_access_key: ${{ secrets.SECRET_ACCESSKEY }} | ||
access: huawei_access | ||
``` | ||
### tencent | ||
```yaml | ||
steps: | ||
- name: Setup Serverless-devs for tencent | ||
uses: actions/setup-s@v1 | ||
with: | ||
provider: tencent | ||
account_id: ${{ secrets.ACCOUNT_ID }} | ||
secret_id: ${{ secrets.SECRET_ID }} | ||
secret_key: ${{ secrets.SECRET_KEY}} | ||
access: tencent_access | ||
``` | ||
## Params | ||
| Property | Description | Type | Default | | ||
| ----- | -------- | ---- | ---| | ||
| provider | required, service provider | string | - | | ||
| account_id | account ID | string | - | | ||
| access_key_id | optical account AK | string | - | | ||
| access_key_secret | optical account SK | string | - | | ||
| secret_access_key | optical account SK | string | - | | ||
| secret_id | optical account AK | string | - | | ||
| secret_key | optical account SK | string | - | | ||
| access | access alias | string | default | | ||
| version | serverless-devs version | 3.0.0 | 3.0.0 | | ||
More details about Aliyun Access Configs, please refer to [Serverless-devs doc](https://docs.serverless-devs.com/serverless-devs/default_provider_config#%E9%98%BF%E9%87%8C%E4%BA%91%E5%AF%86%E9%92%A5%E8%8E%B7%E5%8F%96)。 | ||
## Provider's Access Configs | ||
| Provider | Required | | ||
| --- | --- | | ||
| alibaba | AccountID, AccessKeyID, AccessKeySecret | | ||
| aws | AccessKeyID, SecretAccessKey| | ||
| baidu | AccessKeyID, SecretAccessKey| | ||
| huawei | AccessKeyID, SecretAccessKey| | ||
| azure | KeyVaultName, TenantID, ClientID, ClientSecret| | ||
| tencent | AccountID, SecretID, SecretKey| | ||
| google | PrivateKeyData | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
name: 'Setup for Serverless-Devs' | ||
description: 'An Action for Setup Serverless-Devs and Different Provider Authorization Config' | ||
author: 'heimanba' | ||
branding: | ||
icon: 'heart' | ||
color: 'red' | ||
|
||
inputs: | ||
provider: | ||
description: 'Provider Name (aliyun/aws/tencent/huawei)' | ||
required: true | ||
default: 'aliyun' | ||
version: | ||
description: 'Serverless-devs Version, 3.0.0 as default.' | ||
required: false | ||
default: '3.0.0' | ||
access: | ||
description: 'Access Alias Name' | ||
required: true | ||
default: 'default' | ||
account_id: | ||
description: 'Main Account ID' | ||
required: false | ||
access_key_id: | ||
description: 'Access Key ID' | ||
required: false | ||
access_key_secret: | ||
description: 'Access Key Secret' | ||
required: false | ||
secret_access_key: | ||
description: 'Secret Access Key' | ||
required: false | ||
secret_id: | ||
description: 'Secret ID' | ||
required: false | ||
secret_key: | ||
description: 'Secret Key' | ||
required: false | ||
|
||
|
||
runs: | ||
using: "composite" | ||
steps: | ||
- run: ./script.sh ${{inputs.provider}} ${{ inputs.version }} ${{ inputs.account_id }} ${{ inputs.access_key_id }} ${{ inputs.access_key_secret }} ${{ inputs.access }} | ||
shell: bash | ||
if: inputs.provider == 'aliyun' | ||
- run: ./script.sh ${{inputs.provider}} ${{ inputs.version }} ${{ inputs.access_key_id }} ${{ inputs.secret_access_key }} ${{ inputs.access }} | ||
shell: bash | ||
if: inputs.provider == 'aws' | ||
- run: ./script.sh ${{inputs.provider}} ${{ inputs.version }} ${{ inputs.account_id }} ${{ inputs.access_key_id }} ${{ inputs.secret_key }} ${{ inputs.access }} | ||
shell: bash | ||
if: inputs.provider == 'tencent' | ||
- run: ./script.sh ${{inputs.provider}} ${{ inputs.version }} ${{ inputs.access_key_id }} ${{ inputs.secret_access_key }} ${{ inputs.access }} | ||
shell: bash | ||
if: inputs.provider == 'huawei' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
#!/bin/bash | ||
|
||
# 执行命令并捕获输出 | ||
VERSION_OUTPUT=$(s -v) | ||
version=$2 | ||
set -e # 报错后不继续执行 | ||
|
||
# 检查输出是否包含版本号的格式 | ||
if [[ $VERSION_OUTPUT ]]; then | ||
EXTRACTED_CONTENT=$(echo "$VERSION_OUTPUT" | sed -n 's/start:\([^,]*\),.*/\1/p;q') | ||
echo "Version output is valid: $EXTRACTED_CONTENT" | ||
else | ||
echo 'Serverless-devs installing.' | ||
curl "https://images.devsapp.cn/bin/s/v${version}" --output /usr/local/bin/s | ||
chmod 777 /usr/local/bin/s | ||
echo 'Serverless-devs has been installed successfully.' | ||
fi | ||
|
||
echo '################################################' | ||
if [[ $1 == "aliyun" ]]; then | ||
s config add --AccountID $3 --AccessKeyID $4 --AccessKeySecret $5 -a $6 -f | ||
elif [[ $1 == "aws" ]]; then | ||
s config add --AccessKeyID $3 --SecretAccessKey $4 -a $5 -f | ||
elif [[ $1 == "tencent" ]]; then | ||
s config add --AccountID $3 --SecretID $4 --SecretKey $5 -a $6 -f | ||
elif [[ $1 == "huawei" ]]; then | ||
s config add --AccessKeyID $3 --SecretAccessKey $4 -a $5 -f | ||
fi | ||
echo '################################################' | ||
echo 'The access has been configured automatically, use "s config get" to check.' | ||
|
||
|
||
# # version=$5 | ||
# # valid_version=( | ||
# # v3.0.0 | ||
# # v3.0.1 | ||
# # v3.0.2 | ||
# # ) | ||
# # if [[ "${valid_version[@]}" =~ "${version}" ]]; then | ||
# echo 'Serverless-devs installing.' | ||
# npm install -g @serverless-devs/s@${version} | ||
# echo 'Serverless-devs has been installed successfully.' | ||
# # curl "https://images.devsapp.cn/bin/s/${version}" --output /usr/local/bin/s | ||
# # chmod 777 /usr/local/bin/s | ||
# fi | ||
# echo '################################################' | ||
# s config add --AccountID $1 --AccessKeyID $2 --AccessKeySecret $3 -a $4 -f | ||
# echo '################################################' | ||
# echo 'The access has been configured automatically, use "s config get" to check.' | ||
# # else | ||
# # echo $version "is not valid, please choose correct version." | ||
# # fi |