Add yamlfmt precommit hook (#2584)

Co-authored-by: Shuchang Zheng <wintonzheng0325@gmail.com>
This commit is contained in:
Asher Foa
2025-06-05 15:34:20 -04:00
committed by GitHub
parent 4f0eecc181
commit 721ed50116
15 changed files with 219 additions and 1372 deletions

View File

@@ -1,42 +1,34 @@
name: Build Docker Image and Push to ECR name: Build Docker Image and Push to ECR
on: on:
release: release:
types: [ published ] types: [published]
env: env:
AWS_REGION: us-east-1 AWS_REGION: us-east-1
ECR_BACKEND_REPOSITORY: skyvern ECR_BACKEND_REPOSITORY: skyvern
ECR_UI_REPOSITORY: skyvern-ui ECR_UI_REPOSITORY: skyvern-ui
REGISTRY_ALIAS: skyvern # t6d4b5t4 REGISTRY_ALIAS: skyvern # t6d4b5t4
jobs: jobs:
run-ci: run-ci:
uses: ./.github/workflows/ci.yml uses: ./.github/workflows/ci.yml
build-docker-image: build-docker-image:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [ run-ci ] needs: [run-ci]
steps: steps:
- name: Check out Git repository - name: Check out Git repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Configure AWS credentials - name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4 uses: aws-actions/configure-aws-credentials@v4
with: with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }} aws-region: ${{ env.AWS_REGION }}
- name: Login to Amazon ECR Public - name: Login to Amazon ECR Public
id: login-ecr-public id: login-ecr-public
uses: aws-actions/amazon-ecr-login@v2 uses: aws-actions/amazon-ecr-login@v2
with: with:
registry-type: public registry-type: public
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1 uses: docker/setup-buildx-action@v1
- name: Build, tag, and push backend image to Amazon Public ECR - name: Build, tag, and push backend image to Amazon Public ECR
id: build-image id: build-image
uses: docker/build-push-action@v2 uses: docker/build-push-action@v2
@@ -52,7 +44,6 @@ jobs:
${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_BACKEND_REPOSITORY }}:${{ github.sha }} ${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_BACKEND_REPOSITORY }}:${{ github.sha }}
${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_BACKEND_REPOSITORY }}:${{ github.event.release.tag_name }} ${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_BACKEND_REPOSITORY }}:${{ github.event.release.tag_name }}
${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_BACKEND_REPOSITORY }}:latest ${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_BACKEND_REPOSITORY }}:latest
- name: Build, tag, and push ui image to Amazon Public ECR - name: Build, tag, and push ui image to Amazon Public ECR
id: build-ui-image id: build-ui-image
uses: docker/build-push-action@v2 uses: docker/build-push-action@v2

View File

@@ -1,5 +1,4 @@
name: Run tests and pre-commit name: Run tests and pre-commit
# Run this job on pushes to `main`, and for pull requests. If you don't specify # Run this job on pushes to `main`, and for pull requests. If you don't specify
# `branches: [main], then this actions runs _twice_ on pull requests, which is # `branches: [main], then this actions runs _twice_ on pull requests, which is
# annoying. # annoying.
@@ -8,12 +7,10 @@ on:
pull_request: pull_request:
push: push:
branches: [main] branches: [main]
jobs: jobs:
test: test:
name: Run tests and pre-commit hooks name: Run tests and pre-commit hooks
runs-on: ubuntu-latest runs-on: ubuntu-latest
# Service containers to run with `container-job` # Service containers to run with `container-job`
services: services:
# Label used to access the service container # Label used to access the service container
@@ -27,23 +24,17 @@ jobs:
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
# Set health checks to wait until postgres has started # Set health checks to wait until postgres has started
options: >- options: >-
--health-cmd pg_isready --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports: ports:
# Maps tcp port 5432 on service container to the host # Maps tcp port 5432 on service container to the host
- 5432:5432 - 5432:5432
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
# If you wanted to use multiple Python versions, you'd have specify a matrix in the job and # If you wanted to use multiple Python versions, you'd have specify a matrix in the job and
# reference the matrixe python version here. # reference the matrixe python version here.
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
with: with:
python-version: "3.11" python-version: "3.11"
# Cache the installation of Poetry itself, e.g. the next step. This prevents the workflow # Cache the installation of Poetry itself, e.g. the next step. This prevents the workflow
# from installing Poetry every time, which can be slow. Note the use of the Poetry version # from installing Poetry every time, which can be slow. Note the use of the Poetry version
# number in the cache key, and the "-0" suffix: this allows you to invalidate the cache # number in the cache key, and the "-0" suffix: this allows you to invalidate the cache
@@ -54,7 +45,6 @@ jobs:
with: with:
path: ~/.local path: ~/.local
key: poetry-1.7.1 key: poetry-1.7.1
# Install Poetry. You could do this manually, or there are several actions that do this. # Install Poetry. You could do this manually, or there are several actions that do this.
# `snok/install-poetry` seems to be minimal yet complete, and really just calls out to # `snok/install-poetry` seems to be minimal yet complete, and really just calls out to
# Poetry's default install script, which feels correct. I pin the Poetry version here # Poetry's default install script, which feels correct. I pin the Poetry version here
@@ -69,7 +59,6 @@ jobs:
version: 1.7.1 version: 1.7.1
virtualenvs-create: true virtualenvs-create: true
virtualenvs-in-project: true virtualenvs-in-project: true
# Cache your dependencies (i.e. all the stuff in your `pyproject.toml`). Note the cache # Cache your dependencies (i.e. all the stuff in your `pyproject.toml`). Note the cache
# key: if you're using multiple Python versions, or multiple OSes, you'd need to include # key: if you're using multiple Python versions, or multiple OSes, you'd need to include
# them in the cache key. I'm not, so it can be simple and just depend on the poetry.lock. # them in the cache key. I'm not, so it can be simple and just depend on the poetry.lock.
@@ -79,19 +68,16 @@ jobs:
with: with:
path: .venv path: .venv
key: pydeps-${{ hashFiles('**/poetry.lock') }} key: pydeps-${{ hashFiles('**/poetry.lock') }}
# Install dependencies. `--no-root` means "install all dependencies but not the project # Install dependencies. `--no-root` means "install all dependencies but not the project
# itself", which is what you want to avoid caching _your_ code. The `if` statement # itself", which is what you want to avoid caching _your_ code. The `if` statement
# ensures this only runs on a cache miss. # ensures this only runs on a cache miss.
- run: poetry install --no-interaction --no-root - run: poetry install --no-interaction --no-root
if: steps.cache-deps.outputs.cache-hit != 'true' if: steps.cache-deps.outputs.cache-hit != 'true'
# Now install _your_ project. This isn't necessary for many types of projects -- particularly # Now install _your_ project. This isn't necessary for many types of projects -- particularly
# things like Django apps don't need this. But it's a good idea since it fully-exercises the # things like Django apps don't need this. But it's a good idea since it fully-exercises the
# pyproject.toml and makes that if you add things like console-scripts at some point that # pyproject.toml and makes that if you add things like console-scripts at some point that
# they'll be installed and working. # they'll be installed and working.
- run: poetry install --no-interaction - run: poetry install --no-interaction
# Finally, run pre-commit. # Finally, run pre-commit.
- name: Run all pre-commit hooks - name: Run all pre-commit hooks
uses: pre-commit/action@v3.0.0 uses: pre-commit/action@v3.0.0
@@ -105,7 +91,6 @@ jobs:
AZURE_GPT4O_MINI_API_VERSION: "dummy" AZURE_GPT4O_MINI_API_VERSION: "dummy"
AWS_REGION: "us-east-1" AWS_REGION: "us-east-1"
ENABLE_BEDROCK: "true" ENABLE_BEDROCK: "true"
- name: Run alembic check - name: Run alembic check
env: env:
ENABLE_OPENAI: "true" ENABLE_OPENAI: "true"
@@ -123,7 +108,6 @@ jobs:
ENABLE_OPENAI: "true" ENABLE_OPENAI: "true"
OPENAI_API_KEY: "sk-dummy" OPENAI_API_KEY: "sk-dummy"
run: poetry run pytest tests run: poetry run pytest tests
fe-lint-build: fe-lint-build:
name: Frontend Lint and Build name: Frontend Lint and Build
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -133,17 +117,13 @@ jobs:
steps: steps:
- name: Check out Git repository - name: Check out Git repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set up Node.js - name: Set up Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v4
with: with:
node-version-file: .nvmrc node-version-file: .nvmrc
- name: Install Node.js dependencies - name: Install Node.js dependencies
run: npm ci run: npm ci
- name: Run linter - name: Run linter
run: npm run lint run: npm run lint
- name: Run build - name: Run build
run: npm run build run: npm run build

View File

@@ -1,17 +1,14 @@
name: Codeflash name: Codeflash
on: on:
pull_request: pull_request:
paths: paths:
# So that this workflow only runs when code within the target module is modified # So that this workflow only runs when code within the target module is modified
- "skyvern/**" - "skyvern/**"
workflow_dispatch: workflow_dispatch:
concurrency: concurrency:
# Any new push to the PR will cancel the previous run, so that only the latest code is optimized # Any new push to the PR will cancel the previous run, so that only the latest code is optimized
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
optimize: optimize:
name: Optimize new Python code in this PR name: Optimize new Python code in this PR
@@ -21,7 +18,6 @@ jobs:
env: env:
CODEFLASH_API_KEY: ${{ secrets.CODEFLASH_API_KEY }} CODEFLASH_API_KEY: ${{ secrets.CODEFLASH_API_KEY }}
CODEFLASH_PR_NUMBER: ${{ github.event.number }} CODEFLASH_PR_NUMBER: ${{ github.event.number }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
@@ -44,5 +40,5 @@ jobs:
poetry env use python poetry env use python
poetry run codeflash poetry run codeflash
- name: remove test dir - name: remove test dir
run: | run: |-
rm -rf codeflash-tests rm -rf codeflash-tests

View File

@@ -1,8 +1,6 @@
name: Close inactive issues name: Close inactive issues
on: on:
workflow_dispatch: workflow_dispatch:
jobs: jobs:
close-issues: close-issues:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -1,37 +1,30 @@
name: Run n8n package CI name: Run n8n package CI
on: on:
push: push:
branches: [ main ] branches: [main]
paths: paths:
- 'integrations/n8n/**' - 'integrations/n8n/**'
pull_request: pull_request:
branches: [ main ] branches: [main]
paths: paths:
- 'integrations/n8n/**' - 'integrations/n8n/**'
jobs: jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up Node.js
- name: Set up Node.js uses: actions/setup-node@v4
uses: actions/setup-node@v4 with:
with: node-version-file: .nvmrc
node-version-file: .nvmrc - name: Install pnpm
uses: pnpm/action-setup@v2
- name: Install pnpm with:
uses: pnpm/action-setup@v2 version: 9
with: run_install: false
version: 9 - name: Install dependencies
run_install: false working-directory: integrations/n8n
run: pnpm install --frozen-lockfile
- name: Install dependencies - name: Build and Lint
working-directory: integrations/n8n working-directory: integrations/n8n
run: pnpm install --frozen-lockfile run: pnpm prepublishOnly
- name: Build and Lint
working-directory: integrations/n8n
run: pnpm prepublishOnly

View File

@@ -1,10 +1,8 @@
name: Publish Fern Docs name: Publish Fern Docs
on: on:
push: push:
branches: branches:
- main - main
jobs: jobs:
run: run:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -12,12 +10,10 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Install Fern - name: Install Fern
run: npm install -g fern-api run: npm install -g fern-api
- name: Publish Docs - name: Publish Docs
env: env:
FERN_TOKEN: ${{ secrets.FERN_TOKEN }} FERN_TOKEN: ${{ secrets.FERN_TOKEN }}
POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }}
run: fern generate --docs run: fern generate --docs

View File

@@ -1,5 +1,4 @@
name: Build Skyvern SDK and publish to PyPI name: Build Skyvern SDK and publish to PyPI
on: on:
workflow_dispatch: workflow_dispatch:
push: push:
@@ -7,7 +6,6 @@ on:
- main - main
paths: paths:
- 'pyproject.toml' - 'pyproject.toml'
jobs: jobs:
check-version-change: check-version-change:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -17,7 +15,6 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
fetch-depth: 2 fetch-depth: 2
- name: Check if version changed - name: Check if version changed
id: check id: check
run: | run: |
@@ -35,12 +32,10 @@ jobs:
echo "Version remained at $CURRENT_VERSION" echo "Version remained at $CURRENT_VERSION"
echo "version_changed=false" >> $GITHUB_OUTPUT echo "version_changed=false" >> $GITHUB_OUTPUT
fi fi
run-ci: run-ci:
needs: check-version-change needs: check-version-change
if: needs.check-version-change.outputs.version_changed == 'true' if: needs.check-version-change.outputs.version_changed == 'true'
uses: ./.github/workflows/ci.yml uses: ./.github/workflows/ci.yml
build-sdk: build-sdk:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [check-version-change, run-ci] needs: [check-version-change, run-ci]
@@ -48,13 +43,11 @@ jobs:
steps: steps:
- name: Check out Git repository - name: Check out Git repository
uses: actions/checkout@v4 uses: actions/checkout@v4
# If you wanted to use multiple Python versions, you'd have specify a matrix in the job and # If you wanted to use multiple Python versions, you'd have specify a matrix in the job and
# reference the matrixe python version here. # reference the matrixe python version here.
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
with: with:
python-version: "3.11" python-version: "3.11"
# Cache the installation of Poetry itself, e.g. the next step. This prevents the workflow # Cache the installation of Poetry itself, e.g. the next step. This prevents the workflow
# from installing Poetry every time, which can be slow. Note the use of the Poetry version # from installing Poetry every time, which can be slow. Note the use of the Poetry version
# number in the cache key, and the "-0" suffix: this allows you to invalidate the cache # number in the cache key, and the "-0" suffix: this allows you to invalidate the cache
@@ -65,7 +58,6 @@ jobs:
with: with:
path: ~/.local path: ~/.local
key: poetry-1.7.1 key: poetry-1.7.1
# Install Poetry. You could do this manually, or there are several actions that do this. # Install Poetry. You could do this manually, or there are several actions that do this.
# `snok/install-poetry` seems to be minimal yet complete, and really just calls out to # `snok/install-poetry` seems to be minimal yet complete, and really just calls out to
# Poetry's default install script, which feels correct. I pin the Poetry version here # Poetry's default install script, which feels correct. I pin the Poetry version here
@@ -80,7 +72,6 @@ jobs:
version: 1.7.1 version: 1.7.1
virtualenvs-create: true virtualenvs-create: true
virtualenvs-in-project: true virtualenvs-in-project: true
# Cache your dependencies (i.e. all the stuff in your `pyproject.toml`). Note the cache # Cache your dependencies (i.e. all the stuff in your `pyproject.toml`). Note the cache
# key: if you're using multiple Python versions, or multiple OSes, you'd need to include # key: if you're using multiple Python versions, or multiple OSes, you'd need to include
# them in the cache key. I'm not, so it can be simple and just depend on the poetry.lock. # them in the cache key. I'm not, so it can be simple and just depend on the poetry.lock.
@@ -90,27 +81,22 @@ jobs:
with: with:
path: .venv path: .venv
key: pydeps-${{ hashFiles('**/poetry.lock') }} key: pydeps-${{ hashFiles('**/poetry.lock') }}
# Install dependencies. `--no-root` means "install all dependencies but not the project # Install dependencies. `--no-root` means "install all dependencies but not the project
# itself", which is what you want to avoid caching _your_ code. The `if` statement # itself", which is what you want to avoid caching _your_ code. The `if` statement
# ensures this only runs on a cache miss. # ensures this only runs on a cache miss.
- run: poetry install --no-interaction --no-root - run: poetry install --no-interaction --no-root
if: steps.cache-deps.outputs.cache-hit != 'true' if: steps.cache-deps.outputs.cache-hit != 'true'
# Now install _your_ project. This isn't necessary for many types of projects -- particularly # Now install _your_ project. This isn't necessary for many types of projects -- particularly
# things like Django apps don't need this. But it's a good idea since it fully-exercises the # things like Django apps don't need this. But it's a good idea since it fully-exercises the
# pyproject.toml and makes that if you add things like console-scripts at some point that # pyproject.toml and makes that if you add things like console-scripts at some point that
# they'll be installed and working. # they'll be installed and working.
- run: poetry install --no-interaction - run: poetry install --no-interaction
- name: Clean dist directory - name: Clean dist directory
run: rm -rf dist run: rm -rf dist
- name: Build Package - name: Build Package
run: poetry build run: poetry build
- name: Publish to PyPI - name: Publish to PyPI
env: env:
TWINE_USERNAME: __token__ TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: poetry run twine upload --repository pypi dist/* run: poetry run twine upload --repository pypi dist/*

View File

@@ -1,10 +1,8 @@
name: Update OpenAPI Specification name: Update OpenAPI Specification
on: on:
workflow_dispatch: workflow_dispatch:
schedule: schedule:
- cron: "0 0 * * *" - cron: "0 0 * * *"
jobs: jobs:
update-openapi: update-openapi:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -1,9 +1,7 @@
name: Version Bump on Release name: Version Bump on Release
on: on:
release: release:
types: [published] types: [published]
jobs: jobs:
update-version: update-version:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -12,17 +10,14 @@ jobs:
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Extract version from release - name: Extract version from release
id: get_version id: get_version
run: | run: |
VERSION=${GITHUB_REF#refs/tags/v} VERSION=${GITHUB_REF#refs/tags/v}
echo "version=$VERSION" >> $GITHUB_OUTPUT echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Update version in pyproject.toml - name: Update version in pyproject.toml
run: | run: |
sed -i "s/version = \".*\"/version = \"${{ steps.get_version.outputs.version }}\"/" pyproject.toml sed -i "s/version = \".*\"/version = \"${{ steps.get_version.outputs.version }}\"/" pyproject.toml
- name: Create Pull Request - name: Create Pull Request
id: create-pr id: create-pr
uses: peter-evans/create-pull-request@v6 uses: peter-evans/create-pull-request@v6
@@ -32,10 +27,9 @@ jobs:
body: "Auto-generated PR to update version in pyproject.toml" body: "Auto-generated PR to update version in pyproject.toml"
branch: "version-bump/${{ steps.get_version.outputs.version }}" branch: "version-bump/${{ steps.get_version.outputs.version }}"
delete-branch: true delete-branch: true
- name: Enable Pull Request Automerge - name: Enable Pull Request Automerge
if: steps.create-pr.outputs.pull-request-number if: steps.create-pr.outputs.pull-request-number
run: | run: |
gh pr merge --auto --merge "${{ steps.create-pr.outputs.pull-request-number }}" gh pr merge --auto --merge "${{ steps.create-pr.outputs.pull-request-number }}"
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -36,7 +36,6 @@ repos:
^skyvern/client/.*| ^skyvern/client/.*|
^skyvern/__init__.py ^skyvern/__init__.py
) )
- repo: https://github.com/pre-commit/pygrep-hooks - repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.10.0 rev: v1.10.0
hooks: hooks:
@@ -44,7 +43,6 @@ repos:
- id: python-check-mock-methods - id: python-check-mock-methods
- id: python-no-log-warn - id: python-no-log-warn
- id: python-use-type-annotations - id: python-use-type-annotations
- repo: https://github.com/pre-commit/mirrors-mypy - repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.14.1 rev: v1.14.1
hooks: hooks:
@@ -65,7 +63,6 @@ repos:
^alembic.*| ^alembic.*|
^skyvern/client/.* ^skyvern/client/.*
) )
- repo: https://github.com/PyCQA/autoflake - repo: https://github.com/PyCQA/autoflake
rev: v2.3.1 rev: v2.3.1
hooks: hooks:
@@ -73,18 +70,18 @@ repos:
name: autoflake name: autoflake
entry: autoflake --in-place --remove-all-unused-imports --recursive --ignore-init-module-imports entry: autoflake --in-place --remove-all-unused-imports --recursive --ignore-init-module-imports
language: python language: python
types: [ python ] types: [python]
exclude: | exclude: |
(?x)( (?x)(
^skyvern/client/.* ^skyvern/client/.*
) )
# Mono repo has bronken this TODO: fix # Mono repo has bronken this TODO: fix
# - id: pytest-check # - id: pytest-check
# name: pytest-check # name: pytest-check
# entry: pytest # entry: pytest
# language: system # language: system
# pass_filenames: false # pass_filenames: false
# always_run: true # always_run: true
- repo: https://github.com/pre-commit/mirrors-prettier - repo: https://github.com/pre-commit/mirrors-prettier
rev: "v4.0.0-alpha.8" # Use the sha or tag you want to point at rev: "v4.0.0-alpha.8" # Use the sha or tag you want to point at
hooks: hooks:
@@ -96,9 +93,12 @@ repos:
name: Alembic Check name: Alembic Check
entry: ./run_alembic_check.sh entry: ./run_alembic_check.sh
language: script language: script
stages: [ manual ] stages: [manual]
- repo: https://github.com/koalaman/shellcheck-precommit - repo: https://github.com/koalaman/shellcheck-precommit
rev: v0.10.0 rev: v0.10.0
hooks: hooks:
- id: shellcheck - id: shellcheck
- repo: https://github.com/google/yamlfmt
rev: v0.17.0
hooks:
- id: yamlfmt

View File

@@ -17,7 +17,6 @@ services:
interval: 5s interval: 5s
timeout: 5s timeout: 5s
retries: 5 retries: 5
skyvern: skyvern:
image: public.ecr.aws/skyvern/skyvern:latest image: public.ecr.aws/skyvern/skyvern:latest
restart: on-failure restart: on-failure
@@ -45,82 +44,80 @@ services:
# "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="C:\chrome-cdp-profile" --no-first-run --no-default-browser-check # "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="C:\chrome-cdp-profile" --no-first-run --no-default-browser-check
# /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/Users/yourusername/chrome-cdp-profile" --no-first-run --no-default-browser-check # /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/Users/yourusername/chrome-cdp-profile" --no-first-run --no-default-browser-check
# - BROWSER_REMOTE_DEBUGGING_URL=http://host.docker.internal:9222/ # - BROWSER_REMOTE_DEBUGGING_URL=http://host.docker.internal:9222/
# =========================
# LLM Settings - Recommended to use skyvern CLI, `skyvern init llm` to setup your LLM's
# =========================
# OpenAI Support:
# If you want to use OpenAI as your LLM provider, uncomment the following lines and fill in your OpenAI API key.
# - ENABLE_OPENAI=true
# - LLM_KEY=OPENAI_GPT4O
# - OPENAI_API_KEY=<your_openai_key>
# Gemini Support:
# Gemini is a new LLM provider that is currently in beta. You can use it by uncommenting the following lines and filling in your Gemini API key.
# - LLM_KEY=GEMINI
# - ENABLE_GEMINI=true
# - GEMINI_API_KEY=YOUR_GEMINI_KEY
# - LLM_KEY=GEMINI_2.5_PRO_PREVIEW_03_25
# If you want to use other LLM provider, like azure and anthropic:
# - ENABLE_ANTHROPIC=true
# - LLM_KEY=ANTHROPIC_CLAUDE3.5_SONNET
# - ANTHROPIC_API_KEY=<your_anthropic_key>
# Microsoft Azure OpenAI support:
# If you'd like to use Microsoft Azure OpenAI as your managed LLM service integration with Skyvern, use the environment variables below.
# In your Microsoft Azure subscription, you will need to provision the OpenAI service and deploy a model, in order to utilize it.
# 1. Login to the Azure Portal
# 2. Create an Azure Resource Group
# 3. Create an OpenAI resource in the Resource Group (choose a region and pricing tier)
# 4. From the OpenAI resource's Overview page, open the "Azure AI Foundry" portal (click the "Explore Azure AI Foundry Portal" button)
# 5. In Azure AI Foundry, click "Shared Resources" --> "Deployments"
# 6. Click "Deploy Model" --> "Deploy Base Model" --> select a model (specify this model "Deployment Name" value for the AZURE_DEPLOYMENT variable below)
# - ENABLE_AZURE=true
# - LLM_KEY=AZURE_OPENAI # Leave this value static, don't change it
# - AZURE_DEPLOYMENT=<your_azure_deployment> # Use the OpenAI model "Deployment Name" that you deployed, using the steps above
# - AZURE_API_KEY=<your_azure_api_key> # Copy and paste Key1 or Key2 from the OpenAI resource in Azure Portal
# - AZURE_API_BASE=<your_azure_api_base> # Copy and paste the "Endpoint" from the OpenAI resource in Azure Portal (eg. https://xyzxyzxyz.openai.azure.com/)
# - AZURE_API_VERSION=<your_azure_api_version> # Specify a valid Azure OpenAI data-plane API version (eg. 2024-08-01-preview) Docs: https://learn.microsoft.com/en-us/azure/ai-services/openai/reference
# Amazon Bedrock Support:
# Amazon Bedrock is a managed service that enables you to invoke LLMs and bill them through your AWS account.
# To use Amazon Bedrock as the LLM provider for Skyvern, specify the following environment variables.
# 1. In the AWS IAM console, create a new AWS IAM User (name it whatever you want)
# 2. Assign the "AmazonBedrockFullAccess" policy to the user
# 3. Generate an IAM Access Key under the IAM User's Security Credentials tab
# 4. In the Amazon Bedrock console, go to "Model Access"
# 5. Click Modify Model Access button
# 6. Enable "Claude 3.5 Sonnet v2" and save changes
# - ENABLE_BEDROCK=true
# - LLM_KEY=BEDROCK_ANTHROPIC_CLAUDE3.5_SONNET # This is the Claude 3.5 Sonnet "V2" model. Change to BEDROCK_ANTHROPIC_CLAUDE3.5_SONNET_V1 for the non-v2 version.
# - AWS_REGION=us-west-2 # Replace this with a different AWS region, if you desire
# - AWS_ACCESS_KEY_ID=FILL_ME_IN_PLEASE
# - AWS_SECRET_ACCESS_KEY=FILL_ME_IN_PLEASE
# Ollama Support:
# Ollama is a local LLM provider that can be used to run models locally on your machine.
# - LLM_KEY=OLLAMA
# - ENABLE_OLLAMA=true
# - OLLAMA_MODEL=qwen2.5:7b-instruct
# - OLLAMA_SERVER_URL=http://host.docker.internal:11434
# Open Router Support:
# - ENABLE_OPENROUTER=true
# - LLM_KEY=OPENROUTER
# - OPENROUTER_API_KEY=<your_openrouter_api_key>
# - OPENROUTER_MODEL=mistralai/mistral-small-3.1-24b-instruct
# Groq Support:
# - ENABLE_GROQ=true
# - LLM_KEY=GROQ
# - GROQ_API_KEY=<your_groq_api_key>
# - GROQ_MODEL=llama-3.1-8b-instant
# ========================= # Maximum tokens to use: (only set for OpenRouter aand Ollama)
# LLM Settings - Recommended to use skyvern CLI, `skyvern init llm` to setup your LLM's # - LLM_CONFIG_MAX_TOKENS=128000
# =========================
# OpenAI Support:
# If you want to use OpenAI as your LLM provider, uncomment the following lines and fill in your OpenAI API key.
# - ENABLE_OPENAI=true
# - LLM_KEY=OPENAI_GPT4O
# - OPENAI_API_KEY=<your_openai_key>
# Gemini Support:
# Gemini is a new LLM provider that is currently in beta. You can use it by uncommenting the following lines and filling in your Gemini API key.
# - LLM_KEY=GEMINI
# - ENABLE_GEMINI=true
# - GEMINI_API_KEY=YOUR_GEMINI_KEY
# - LLM_KEY=GEMINI_2.5_PRO_PREVIEW_03_25
# If you want to use other LLM provider, like azure and anthropic:
# - ENABLE_ANTHROPIC=true
# - LLM_KEY=ANTHROPIC_CLAUDE3.5_SONNET
# - ANTHROPIC_API_KEY=<your_anthropic_key>
# Microsoft Azure OpenAI support:
# If you'd like to use Microsoft Azure OpenAI as your managed LLM service integration with Skyvern, use the environment variables below.
# In your Microsoft Azure subscription, you will need to provision the OpenAI service and deploy a model, in order to utilize it.
# 1. Login to the Azure Portal
# 2. Create an Azure Resource Group
# 3. Create an OpenAI resource in the Resource Group (choose a region and pricing tier)
# 4. From the OpenAI resource's Overview page, open the "Azure AI Foundry" portal (click the "Explore Azure AI Foundry Portal" button)
# 5. In Azure AI Foundry, click "Shared Resources" --> "Deployments"
# 6. Click "Deploy Model" --> "Deploy Base Model" --> select a model (specify this model "Deployment Name" value for the AZURE_DEPLOYMENT variable below)
# - ENABLE_AZURE=true
# - LLM_KEY=AZURE_OPENAI # Leave this value static, don't change it
# - AZURE_DEPLOYMENT=<your_azure_deployment> # Use the OpenAI model "Deployment Name" that you deployed, using the steps above
# - AZURE_API_KEY=<your_azure_api_key> # Copy and paste Key1 or Key2 from the OpenAI resource in Azure Portal
# - AZURE_API_BASE=<your_azure_api_base> # Copy and paste the "Endpoint" from the OpenAI resource in Azure Portal (eg. https://xyzxyzxyz.openai.azure.com/)
# - AZURE_API_VERSION=<your_azure_api_version> # Specify a valid Azure OpenAI data-plane API version (eg. 2024-08-01-preview) Docs: https://learn.microsoft.com/en-us/azure/ai-services/openai/reference
# Amazon Bedrock Support:
# Amazon Bedrock is a managed service that enables you to invoke LLMs and bill them through your AWS account.
# To use Amazon Bedrock as the LLM provider for Skyvern, specify the following environment variables.
# 1. In the AWS IAM console, create a new AWS IAM User (name it whatever you want)
# 2. Assign the "AmazonBedrockFullAccess" policy to the user
# 3. Generate an IAM Access Key under the IAM User's Security Credentials tab
# 4. In the Amazon Bedrock console, go to "Model Access"
# 5. Click Modify Model Access button
# 6. Enable "Claude 3.5 Sonnet v2" and save changes
# - ENABLE_BEDROCK=true
# - LLM_KEY=BEDROCK_ANTHROPIC_CLAUDE3.5_SONNET # This is the Claude 3.5 Sonnet "V2" model. Change to BEDROCK_ANTHROPIC_CLAUDE3.5_SONNET_V1 for the non-v2 version.
# - AWS_REGION=us-west-2 # Replace this with a different AWS region, if you desire
# - AWS_ACCESS_KEY_ID=FILL_ME_IN_PLEASE
# - AWS_SECRET_ACCESS_KEY=FILL_ME_IN_PLEASE
# Ollama Support:
# Ollama is a local LLM provider that can be used to run models locally on your machine.
# - LLM_KEY=OLLAMA
# - ENABLE_OLLAMA=true
# - OLLAMA_MODEL=qwen2.5:7b-instruct
# - OLLAMA_SERVER_URL=http://host.docker.internal:11434
# Open Router Support:
# - ENABLE_OPENROUTER=true
# - LLM_KEY=OPENROUTER
# - OPENROUTER_API_KEY=<your_openrouter_api_key>
# - OPENROUTER_MODEL=mistralai/mistral-small-3.1-24b-instruct
# Groq Support:
# - ENABLE_GROQ=true
# - LLM_KEY=GROQ
# - GROQ_API_KEY=<your_groq_api_key>
# - GROQ_MODEL=llama-3.1-8b-instant
# Maximum tokens to use: (only set for OpenRouter aand Ollama) # Bitwarden Settings
# - LLM_CONFIG_MAX_TOKENS=128000 # If you are looking to integrate Skyvern with a password manager (eg Bitwarden), you can use the following environment variables.
# - BITWARDEN_SERVER=http://localhost # OPTIONAL IF YOU ARE SELF HOSTING BITWARDEN
# Bitwarden Settings # - BITWARDEN_SERVER_PORT=8002 # OPTIONAL IF YOU ARE SELF HOSTING BITWARDEN
# If you are looking to integrate Skyvern with a password manager (eg Bitwarden), you can use the following environment variables. # - BITWARDEN_CLIENT_ID=FILL_ME_IN_PLEASE
# - BITWARDEN_SERVER=http://localhost # OPTIONAL IF YOU ARE SELF HOSTING BITWARDEN # - BITWARDEN_CLIENT_SECRET=FILL_ME_IN_PLEASE
# - BITWARDEN_SERVER_PORT=8002 # OPTIONAL IF YOU ARE SELF HOSTING BITWARDEN # - BITWARDEN_MASTER_PASSWORD=FILL_ME_IN_PLEASE
# - BITWARDEN_CLIENT_ID=FILL_ME_IN_PLEASE
# - BITWARDEN_CLIENT_SECRET=FILL_ME_IN_PLEASE
# - BITWARDEN_MASTER_PASSWORD=FILL_ME_IN_PLEASE
depends_on: depends_on:
postgres: postgres:
condition: service_healthy condition: service_healthy
@@ -129,7 +126,6 @@ services:
interval: 5s interval: 5s
timeout: 5s timeout: 5s
retries: 5 retries: 5
skyvern-ui: skyvern-ui:
image: public.ecr.aws/skyvern/skyvern-ui:latest image: public.ecr.aws/skyvern/skyvern-ui:latest
restart: on-failure restart: on-failure

View File

@@ -62,90 +62,90 @@ tabs:
navigation: navigation:
- tab: home - tab: home
layout: layout:
- section: Getting Started - section: Getting Started
contents: contents:
- page: Introduction - page: Introduction
path: introduction.mdx path: introduction.mdx
- page: Quickstart - page: Quickstart
path: getting-started/quickstart.mdx path: getting-started/quickstart.mdx
- page: Skyvern In Action - page: Skyvern In Action
path: getting-started/skyvern-in-action.mdx path: getting-started/skyvern-in-action.mdx
- page: Task Prompting Guide - page: Task Prompting Guide
path: getting-started/prompting-guide.mdx path: getting-started/prompting-guide.mdx
- section: Tasks - section: Tasks
contents: contents:
- page: Run Tasks - page: Run Tasks
path: running-tasks/run-tasks.mdx path: running-tasks/run-tasks.mdx
- page: Visualizing Results - page: Visualizing Results
path: running-tasks/visualizing-results.mdx path: running-tasks/visualizing-results.mdx
- page: Cancel Task Runs - page: Cancel Task Runs
path: running-tasks/cancel-runs.mdx path: running-tasks/cancel-runs.mdx
- page: Webhooks FAQ - page: Webhooks FAQ
path: running-tasks/webhooks-faq.mdx path: running-tasks/webhooks-faq.mdx
- page: Advanced Settings for tasks - page: Advanced Settings for tasks
hidden: true hidden: true
path: running-tasks/advanced-features.mdx path: running-tasks/advanced-features.mdx
- page: Legacy Task APIs - page: Legacy Task APIs
hidden: true hidden: true
path: running-tasks/api-spec.mdx path: running-tasks/api-spec.mdx
- section: Workflows - section: Workflows
contents: contents:
- page: Manage Workflows - page: Manage Workflows
path: workflows/manage-workflows.mdx path: workflows/manage-workflows.mdx
- page: Workflow Blocks - page: Workflow Blocks
path: workflows/workflow-blocks-details.mdx path: workflows/workflow-blocks-details.mdx
- page: Workflow Parameters - page: Workflow Parameters
path: workflows/workflow-parameters.mdx path: workflows/workflow-parameters.mdx
- page: Run Workflows - page: Run Workflows
path: workflows/run-workflows.mdx path: workflows/run-workflows.mdx
- page: Consistency and Reliability - page: Consistency and Reliability
path: workflows/consistent-workflows.mdx path: workflows/consistent-workflows.mdx
- page: Running Workflows - page: Running Workflows
path: workflows/running-workflows.mdx path: workflows/running-workflows.mdx
hidden: true hidden: true
- page: Introduction - page: Introduction
path: workflows/introduction.mdx path: workflows/introduction.mdx
hidden: true hidden: true
- page: Workflow Blocks - page: Workflow Blocks
path: workflows/workflow-blocks.mdx path: workflows/workflow-blocks.mdx
hidden: true hidden: true
- page: Creating Workflows - page: Creating Workflows
path: workflows/creating-workflows.mdx path: workflows/creating-workflows.mdx
hidden: true hidden: true
- page: Getting Existing Workflows - page: Getting Existing Workflows
path: workflows/getting-workflows.mdx path: workflows/getting-workflows.mdx
hidden: true hidden: true
- page: What the heck is a parameter? - page: What the heck is a parameter?
path: workflows/what-is-a-parameter.mdx path: workflows/what-is-a-parameter.mdx
hidden: true hidden: true
- section: Credentials - section: Credentials
contents: contents:
- page: Overview - page: Overview
path: credentials/introduction.mdx path: credentials/introduction.mdx
- page: Password Management - page: Password Management
path: credentials/passwords.mdx path: credentials/passwords.mdx
- page: Credit Card Management - page: Credit Card Management
path: credentials/credit-cards.mdx path: credentials/credit-cards.mdx
- page: 2FA Support (TOTP) - page: 2FA Support (TOTP)
path: credentials/totp.mdx path: credentials/totp.mdx
- page: Bitwarden - page: Bitwarden
path: credentials/bitwarden.mdx path: credentials/bitwarden.mdx
- section: Browser Sessions (Beta) - section: Browser Sessions (Beta)
contents: contents:
- page: Introduction - page: Introduction
path: browser-sessions/introduction.mdx path: browser-sessions/introduction.mdx
- section: Integrations - section: Integrations
contents: contents:
- page: Skyvern MCP - page: Skyvern MCP
path: integrations/mcp.mdx path: integrations/mcp.mdx
- page: Zapier - page: Zapier
path: integrations/zapier.mdx path: integrations/zapier.mdx
- page: Make - page: Make
path: integrations/make.com.mdx path: integrations/make.com.mdx
- page: N8N - page: N8N
path: integrations/n8n.mdx path: integrations/n8n.mdx
- page: Workato - page: Workato
path: integrations/workato.mdx path: integrations/workato.mdx
- tab: api - tab: api
layout: layout:
- api: API Reference - api: API Reference
@@ -154,37 +154,37 @@ navigation:
layout: layout:
- section: Agent - section: Agent
contents: contents:
- POST /v1/run/tasks - POST /v1/run/tasks
- GET /v1/runs/{run_id} - GET /v1/runs/{run_id}
- POST /v1/runs/{run_id}/cancel - POST /v1/runs/{run_id}/cancel
- POST /v1/runs/{run_id}/retry_webhook - POST /v1/runs/{run_id}/retry_webhook
- section: Workflows - section: Workflows
contents: contents:
- POST /v1/run/workflows - POST /v1/run/workflows
- GET /v1/workflows - GET /v1/workflows
- POST /v1/workflows - POST /v1/workflows
- POST /v1/workflows/{workflow_id} - POST /v1/workflows/{workflow_id}
- POST /v1/workflows/{workflow_id}/delete - POST /v1/workflows/{workflow_id}/delete
- section: Artifacts - section: Artifacts
contents: contents:
- GET /v1/artifacts/{artifact_id} - GET /v1/artifacts/{artifact_id}
- section: Browser Session - section: Browser Session
contents: contents:
- GET /v1/browser_sessions - GET /v1/browser_sessions
- POST /v1/browser_sessions - POST /v1/browser_sessions
- POST /v1/browser_sessions/{browser_session_id}/close - POST /v1/browser_sessions/{browser_session_id}/close
- GET /v1/browser_sessions/{browser_session_id} - GET /v1/browser_sessions/{browser_session_id}
- section: Credentials - section: Credentials
contents: contents:
- POST /v1/credentials/totp - POST /v1/credentials/totp
- GET /v1/credentials - GET /v1/credentials
- POST /v1/credentials - POST /v1/credentials
- POST /v1/credentials/{credential_id}/delete - POST /v1/credentials/{credential_id}/delete
- GET /v1/credentials/{credential_id} - GET /v1/credentials/{credential_id}
- tab: blog - tab: blog
- tab: community - tab: community
- tab: github - tab: github
- tab: cloud - tab: cloud
- tab: demo - tab: demo
experimental: experimental:
openapi-parser-v3: true openapi-parser-v3: true

View File

@@ -1,21 +1,17 @@
# yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json
auth-schemes: auth-schemes:
ApiKeyScheme: ApiKeyScheme:
header: x-api-key header: x-api-key
type: string type: string
name: x-api-key name: x-api-key
api:
api:
auth: ApiKeyScheme auth: ApiKeyScheme
specs: specs:
- openapi: openapi/skyvern_openapi.json - openapi: openapi/skyvern_openapi.json
origin: https://api.skyvern.com/openapi.json origin: https://api.skyvern.com/openapi.json
overrides: openapi/overrides.yml overrides: openapi/overrides.yml
settings: settings:
title-as-schema-name: false title-as-schema-name: false
groups: groups:
python-sdk: python-sdk:
generators: generators:

View File

@@ -1,2 +1,2 @@
security: security:
- ApiKeyScheme: [] - ApiKeyScheme: []

File diff suppressed because it is too large Load Diff