yandex-serverless-action
yandex-serverless-action copied to clipboard
Github Action for deploying code to existed Serverless function in Yandex cloud
Yandex serverless action
This action uploads code to object storage and update Serverless function in Yandex cloud.
Usage
- 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
workflow.yml
Example
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@v1
with:
token: ${{ secrets.TOKEN }}
bucket: ${{ secrets.BUCKET }}
function_id: '234awefq12345g24f'
runtime: 'python37'
memory: '256'
entrypoint: 'main.handler'
environment: DEBUG=True,COUNT=1
source: '.'
exclude: 'src/'
Configuration
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 | 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 |
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 |
Scenarios
- Zip and and deploy folder
- Zip and upload to bucket and deploy
- Exclude pattern from archive
- Set service account id
Zip and and deploy folder
- 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: '.'
Zip and upload to bucket and deploy
- uses: goodsmileduck/yandex-serverless-action@v1
with:
description: "Function without bucket"
token: ${{ secrets.TOKEN }}
bucket: ${{ secrets.BUCKET }}
function_id: 'my_function_id'
runtime: 'python37'
memory: '256'
entrypoint: 'main.handler'
environment: DEBUG=True,COUNT=1
source: './src'
description: "Version: v0.1.1"
Exclude pattern from archive
- 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'
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=2
source: './public'
service_account: ${{ secrets.SERVICE_ACCOUNT }}
License
This project is distributed under the MIT license.