This action uploads code to object storage and update Serverless function in Yandex cloud.
- Create serverless function in Yandex Cloud and copy function id
- Create s3 bucket (optional, if you want to upload code to bucket or if it's bigger than 5Mb)
- Add workflow to your repo
Place in a .yml|.yaml
file such as this one in your .github/workflows
folder. Refer to the documentation on workflow YAML syntax here.
name: Push and Deploy Serverless function
on: push
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: goodsmileduck/yandex-serverless-action@v2
with:
token: ${{ secrets.TOKEN }}
bucket: ${{ secrets.BUCKET }}
accessKeyId: ${{ secrets.ACCESS_KEY_ID }}
secretAccessKey: ${{ secrets.SECRET_ACCESS_KEY }}
function_id: '234awefq12345g24f'
runtime: 'python37'
memory: '256'
entrypoint: 'main.handler'
environment: DEBUG=True,COUNT=1
source: '.'
exclude: 'src/'
The following settings must be passed as variables as shown in the example. Sensitive information, especially token
should be set as encrypted secrets — otherwise, they'll be public to anyone browsing your repository.
Key | Value | Suggested Type | Required |
---|---|---|---|
token |
Token for access to yc cli. To get token visit link | secret |
Yes |
function_id |
The ID of function in Yandex Cloud | env |
Yes |
runtime |
Runtime for function in Yandex Cloud. To get the list of allowed args visit link | env |
Yes |
entrypoint |
Entry point of function | env |
Yes |
description |
Description for version of function | env |
No |
environment |
Comma-separated list with env variables | env |
No |
memory |
Memory limit in megabytes for function in Yandex Cloud Default value is 128 |
env |
No |
execution_timeout |
Execution timeout in seconds for function in Yandex Cloud. Default value is 5 |
env |
No |
service_account |
Service account id. | secret |
No |
bucket |
The name of the bucket you're syncing to. For example, bucket . If wasn't set action will try to upload code directly. Required if code bigger than 5Mb |
secret |
No |
accessKeyId |
Yandex AWS Access Key Id when s3 bucket used. Required if code bigger than 5Mb | secret |
No |
secretAccessKey |
Yandex AWS Access Key Id when s3 bucket used. Required if code bigger than 5Mb | secret |
No |
source |
The local directory you wish to upload. For example, ./public . Defaults to the root of your repository (. ) if not provided. |
env |
No |
exclude |
Explicitly exclude the specified files. Defaults empty if not provided. | env |
No |
- Zip and and deploy folder
- Zip and upload to bucket and deploy
- Exclude pattern from archive
- Set service account id
- uses: goodsmileduck/yandex-serverless-action@v1
with:
token: ${{ secrets.TOKEN }}
function_id: 'my_function_id'
runtime: 'python37'
memory: '256'
entrypoint: 'main.handler'
environment: DEBUG=True,COUNT=1
source: '.'
- uses: goodsmileduck/yandex-serverless-action@v1
with:
description: "Function without bucket"
token: ${{ secrets.TOKEN }}
bucket: ${{ secrets.BUCKET }}
accessKeyId: ${{ secrets.ACCESS_KEY_ID }}
secretAccessKey: ${{ secrets.SECRET_ACCESS_KEY }}
function_id: 'my_function_id'
runtime: 'python37'
memory: '256'
entrypoint: 'main.handler'
environment: DEBUG=True,COUNT=1
source: './src'
description: "Version: v0.1.1"
- uses: goodsmileduck/yandex-serverless-action@v1
with:
token: ${{ secrets.TOKEN }}
function_id: 'my_function_id'
runtime: 'python37'
memory: '256'
entrypoint: 'main.handler'
environment: DEBUG=True,COUNT=2
source: './public'
exclude: '*.txt'
- uses: goodsmileduck/yandex-serverless-action@v1
with:
token: ${{ secrets.TOKEN }}
function_id: 'my_function_id'
runtime: 'python37'
memory: '256'
entrypoint: 'main.handler'
environment: DEBUG=True,COUNT=2
source: './public'
service_account: ${{ secrets.SERVICE_ACCOUNT }}
This project is distributed under the MIT license.