Build and Release #193
Workflow file for this run
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
name: Build and Release | |
on: | |
release: | |
types: [published] | |
jobs: | |
test-examples: | |
name: Run Example Tests | |
defaults: | |
run: | |
working-directory: ./python | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.10"] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@master | |
- uses: actions/setup-python@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Run Tests | |
env: | |
DOCKER_USER: ${{secrets.DOCKER_USER}} | |
OPENAI_API_KEY: ${{secrets.OPENAI_API_KEY}} | |
JULEP_API_KEY: ${{secrets.JULEP_API_KEY}} | |
JULEP_API_URL: ${{secrets.JULEP_API_URL}} | |
COMPOSIO_API_KEY: ${{secrets.COMPOSIO_API_KEY_PROD}} | |
run: | | |
sudo apt-get update --fix-missing | |
sudo apt-get autoremove | |
sudo apt-get autoclean | |
python -m pip install --upgrade pip pipenv pytest | |
pipenv install | |
pipenv run pip3 install '.[all]' | |
ls -1 plugins | awk '$0="plugins/"$0"/"' | xargs -L1 pipenv run pip3 install | |
CI=false COMPOSIO_BASE_URL=https://backend.composio.dev/api pytest -vv tests/test_example.py | |
publish-core: | |
name: Create Framework & Plugin Releases | |
needs: test-examples | |
defaults: | |
run: | |
working-directory: ./python | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.10"] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@master | |
- uses: actions/setup-python@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Build | |
run: | | |
sudo apt-get update --fix-missing | |
sudo apt-get autoremove | |
sudo apt-get autoclean | |
python -m pip install --upgrade pip | |
pip install twine build | |
# Build dist | |
python -m build | |
- name: Publish Core to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: ${{ secrets.PYPI_USERNAME }} | |
password: ${{ secrets.PYPI_PASSWORD }} | |
skip-existing: true | |
packages-dir: python/dist/ | |
publish-plugins: | |
needs: publish-core | |
name: Create Plugin Releases | |
defaults: | |
run: | |
working-directory: ./python | |
strategy: | |
max-parallel: 1 | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.10"] | |
package: | |
[ | |
autogen, | |
camel, | |
claude, | |
crew_ai, | |
griptape, | |
julep, | |
langchain, | |
llamaindex, | |
lyzr, | |
openai, | |
praisonai, | |
langgraph, | |
] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Build ${{ matrix.package }} | |
run: | | |
sudo apt-get update --fix-missing | |
sudo apt-get autoremove | |
sudo apt-get autoclean | |
python -m pip install --upgrade pip | |
pip install twine build | |
# Build dist | |
cd plugins/${{ matrix.package }} | |
python -m build | |
- name: Publish ${{ matrix.package }} to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: ${{ secrets.PYPI_USERNAME }} | |
password: ${{ secrets.PYPI_PASSWORD }} | |
skip-existing: true | |
packages-dir: python/plugins/${{ matrix.package }}/dist/ | |
publish-swe: | |
needs: publish-core | |
name: Create SWE Toolkit Release | |
defaults: | |
run: | |
working-directory: ./python/swe | |
strategy: | |
max-parallel: 1 | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.10"] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Build | |
run: | | |
sudo apt-get update --fix-missing | |
sudo apt-get autoremove | |
sudo apt-get autoclean | |
python -m pip install --upgrade pip | |
pip install twine build | |
# Build dist | |
python -m build | |
- name: Publish SWE Kit to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: ${{ secrets.PYPI_USERNAME }} | |
password: ${{ secrets.PYPI_PASSWORD }} | |
skip-existing: true | |
packages-dir: python/swe/dist/ | |
publish-cli: | |
name: Build and upload CLI | |
needs: publish-core | |
permissions: write-all | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-12, macos-14, windows-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- uses: actions/setup-python@v3 | |
with: | |
python-version: "3.10" | |
- name: Build for ${{ matrix.os }} | |
run: | | |
python -m pip install --upgrade pip | |
pip install pyinstaller | |
cd python/ | |
pip3 install . | |
# Build CLI | |
pyinstaller composio/cli/__main__.py | |
# Ubuntu Release | |
- if: matrix.os == 'ubuntu-latest' | |
run: | | |
cd python/ | |
mv dist/__main__ dist/bin | |
mv dist/bin/__main__ dist/bin/composio | |
cd dist/ | |
zip -r composio-linux-amd64.zip bin/* | |
rm -rf bin/ | |
- if: matrix.os == 'ubuntu-latest' | |
name: Upload artifact | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: python/dist/composio-linux-amd64.zip | |
# Mac Intel Release | |
- if: matrix.os == 'macos-12' | |
run: | | |
cd python/ | |
mv dist/__main__ dist/bin | |
mv dist/bin/__main__ dist/bin/composio | |
cd dist/ | |
zip -r composio-darwin-amd64.zip bin/* | |
rm -rf bin/ | |
- if: matrix.os == 'macos-12' | |
name: Upload artifact | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: python/dist/composio-darwin-amd64.zip | |
# Mac ARM Release | |
- if: matrix.os == 'macos-14' | |
run: | | |
cd python/ | |
mv dist/__main__ dist/bin | |
mv dist/bin/__main__ dist/bin/composio | |
cd dist/ | |
zip -r composio-darwin-arm64.zip bin/* | |
rm -rf bin/ | |
- if: matrix.os == 'macos-14' | |
name: Upload artifact | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: python/dist/composio-darwin-arm64.zip | |
# # Windows release | |
# - if: matrix.os == 'windows-latest' | |
# run: | | |
# cd python/ | |
# mv dist/__main__ dist/bin | |
# mv dist/bin/__main__.exe dist/bin/composio.exe | |
# cd dist/ | |
# zip -r composio-win.zip bin/* | |
# rm -rf bin/ | |
# - if: matrix.os == 'windows-latest' | |
# name: Upload artifact | |
# uses: softprops/action-gh-release@v2 | |
# with: | |
# files: python/dist/composio-win.zip | |
publish-images: | |
name: Build and publish docker images | |
needs: publish-core | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Docker login | |
env: | |
DOCKER_USER: ${{secrets.DOCKER_USER}} | |
DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}} | |
run: | | |
echo $DOCKER_PASSWORD | docker login --username $DOCKER_USER --password-stdin | |
- name: Set up support for multi platform build | |
run: | | |
docker run --privileged --rm tonistiigi/binfmt --install all | |
docker buildx create --use --name multibuild | |
docker buildx inspect --bootstrap | |
- name: Publishing tool server images | |
run: | | |
cd python/dockerfiles/ | |
VERSION=$(cat ../composio/__init__.py | grep version | cut -b 16- | rev | cut -b 2- | rev) make publish | |
publish-e2b: | |
name: Publish E2B template | |
needs: publish-core | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- uses: actions/setup-node@v4 | |
- name: Install E2B | |
run: | | |
npm install -g @e2b/cli@latest | |
- name: Publishing Template | |
env: | |
E2B_ACCESS_TOKEN: ${{secrets.E2B_ACCESS_TOKEN}} | |
run: | | |
cd python/dockerfiles/ | |
make e2b |