Skip to content

Update GitHub workflows and automate release #2

Update GitHub workflows and automate release

Update GitHub workflows and automate release #2

Workflow file for this run

name: Durable Task SDK (durabletask)
on:
push:
branches:
- "main"
tags:
- "v*" # Only run for tags starting with "v"
pull_request:
branches:
- "main"
jobs:
lint-and-unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel tox
pip install flake8
- name: Run flake8 Linter
working-directory: durabletask
run: flake8 .
- name: "Run flake8 linter: tests"
working-directory: tests/durabletask
run: flake8 .
- name: "Run flake8 linter: examples"
working-directory: examples
run: flake8 .
run-e2e-tests:
needs: lint-and-unit-tests
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Sidecar for running e2e tests requires Go SDK
- name: Install Go SDK
uses: actions/setup-go@v5
with:
go-version: 'stable'
# Install and run the durabletask-go sidecar for running e2e tests
- name: Pytest e2e tests
working-directory: tests/durabletask
run: |
go install github.com/microsoft/durabletask-go@main
durabletask-go --port 4001 &
pytest -m "e2e and not dts" --verbose
publish:
if: startsWith(github.ref, 'refs/tags/v') # Only run if a matching tag is pushed
needs: run-e2e-tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Extract version from tag
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV # Extract version from the tag
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12" # Adjust Python version as needed
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build twine
- name: Build package from root directory
run: |
python -m build
- name: Check package
run: |
twine check dist/*
- name: Publish package to PyPI
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} # Store your PyPI API token in GitHub Secrets
run: |
twine upload dist/*