summaryrefslogtreecommitdiff
path: root/.github/workflows/main.yaml
diff options
context:
space:
mode:
authorNate Sesti <33237525+sestinj@users.noreply.github.com>2023-10-09 18:37:27 -0700
committerGitHub <noreply@github.com>2023-10-09 18:37:27 -0700
commitf09150617ed2454f3074bcf93f53aae5ae637d40 (patch)
tree5cfe614a64d921dfe58b049f426d67a8b832c71f /.github/workflows/main.yaml
parent985304a213f620cdff3f8f65f74ed7e3b79be29d (diff)
downloadsncontinue-f09150617ed2454f3074bcf93f53aae5ae637d40.tar.gz
sncontinue-f09150617ed2454f3074bcf93f53aae5ae637d40.tar.bz2
sncontinue-f09150617ed2454f3074bcf93f53aae5ae637d40.zip
Preview (#541)
* Strong typing (#533) * refactor: :recycle: get rid of continuedev.src.continuedev structure * refactor: :recycle: switching back to server folder * feat: :sparkles: make config.py imports shorter * feat: :bookmark: publish as pre-release vscode extension * refactor: :recycle: refactor and add more completion params to ui * build: :building_construction: download from preview S3 * fix: :bug: fix paths * fix: :green_heart: package:pre-release * ci: :green_heart: more time for tests * fix: :green_heart: fix build scripts * fix: :bug: fix import in run.py * fix: :bookmark: update version to try again * ci: 💚 Update package.json version [skip ci] * refactor: :fire: don't check for old extensions version * fix: :bug: small bug fixes * fix: :bug: fix config.py import paths * ci: 💚 Update package.json version [skip ci] * ci: :green_heart: platform-specific builds test #1 * feat: :green_heart: ship with binary * fix: :green_heart: fix copy statement to include.exe for windows * fix: :green_heart: cd extension before packaging * chore: :loud_sound: count tokens generated * fix: :green_heart: remove npm_config_arch * fix: :green_heart: publish as pre-release! * chore: :bookmark: update version * perf: :green_heart: hardcode distro paths * fix: :bug: fix yaml syntax error * chore: :bookmark: update version * fix: :green_heart: update permissions and version * feat: :bug: kill old server if needed * feat: :lipstick: update marketplace icon for pre-release * ci: 💚 Update package.json version [skip ci] * feat: :sparkles: auto-reload for config.py * feat: :wrench: update default config.py imports * feat: :sparkles: codelens in config.py * feat: :sparkles: select model param count from UI * ci: 💚 Update package.json version [skip ci] * feat: :sparkles: more model options, ollama error handling * perf: :zap: don't show server loading immediately * fix: :bug: fixing small UI details * ci: 💚 Update package.json version [skip ci] * feat: :rocket: headers param on LLM class * fix: :bug: fix headers for openai.;y * feat: :sparkles: highlight code on cmd+shift+L * ci: 💚 Update package.json version [skip ci] * feat: :lipstick: sticky top bar in gui.tsx * fix: :loud_sound: websocket logging and horizontal scrollbar * ci: 💚 Update package.json version [skip ci] * feat: :sparkles: allow AzureOpenAI Service through GGML * ci: 💚 Update package.json version [skip ci] * fix: :bug: fix automigration * ci: 💚 Update package.json version [skip ci] * ci: :green_heart: upload binaries in ci, download apple silicon * chore: :fire: remove notes * fix: :green_heart: use curl to download binary * fix: :green_heart: set permissions on apple silicon binary * fix: :green_heart: testing * fix: :green_heart: cleanup file * fix: :green_heart: fix preview.yaml * fix: :green_heart: only upload once per binary * fix: :green_heart: install rosetta * ci: :green_heart: download binary after tests * ci: 💚 Update package.json version [skip ci] * ci: :green_heart: prepare ci for merge to main --------- Co-authored-by: GitHub Action <action@github.com>
Diffstat (limited to '.github/workflows/main.yaml')
-rw-r--r--.github/workflows/main.yaml265
1 files changed, 114 insertions, 151 deletions
diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
index 734d9374..94944615 100644
--- a/.github/workflows/main.yaml
+++ b/.github/workflows/main.yaml
@@ -6,58 +6,50 @@ on:
- main
jobs:
- # pypi-deployment:
- # runs-on: ubuntu-20.04
- # permissions:
- # contents: write
- # steps:
- # - name: Check out code
- # uses: actions/checkout@v2
-
- # - name: Set up Python
- # uses: actions/setup-python@v4
- # with:
- # python-version: "3.10.8"
-
- # - name: Install dependencies
- # run: |
- # python -m pip install --upgrade pip
- # pip install poetry
-
- # - name: Install project dependencies
- # run: cd continuedev && poetry install
-
- # - name: Configure Poetry Token
- # run: cd continuedev && poetry config pypi-token.pypi ${{ secrets.PYPI_API_TOKEN }}
-
- # - name: Bump the version
- # run: cd continuedev && poetry version patch
-
- # - name: Build and publish the package
- # run: cd continuedev && poetry publish --build
-
- # - name: Commit changes
- # run: |
- # git config --local user.email "action@github.com"
- # git config --local user.name "GitHub Action"
- # git commit -am "ci: 🏷 Update PyPI version [skip ci]"
-
- # - name: Push changes
- # uses: ad-m/github-push-action@master
- # with:
- # github_token: ${{ secrets.GITHUB_TOKEN }}
- # branch: ${{ github.ref }}
-
- pyinstaller:
+ build:
strategy:
matrix:
- os: [windows-latest, ubuntu-20.04, macos-latest]
-
+ include:
+ - os: windows-latest
+ platform: win32
+ arch: x64
+ npm_config_arch: x64
+ - os: windows-latest
+ platform: win32
+ arch: ia32
+ npm_config_arch: ia32
+ - os: windows-latest
+ platform: win32
+ arch: arm64
+ npm_config_arch: arm
+ - os: ubuntu-20.04
+ platform: linux
+ arch: x64
+ npm_config_arch: x64
+ - os: ubuntu-20.04
+ platform: linux
+ arch: arm64
+ npm_config_arch: arm64
+ - os: ubuntu-20.04
+ platform: linux
+ arch: armhf
+ npm_config_arch: arm
+ - os: ubuntu-20.04
+ platform: alpine
+ arch: x64
+ npm_config_arch: x64
+ - os: macos-latest
+ platform: darwin
+ arch: x64
+ npm_config_arch: x64
+ - os: macos-latest
+ platform: darwin
+ arch: arm64
+ npm_config_arch: arm64
runs-on: ${{ matrix.os }}
-
steps:
- # Install Python requirements and build+upload binaries for each platform
+ # 1. Build the Pyinstaller binary
- name: Check-out repository
uses: actions/checkout@v3
@@ -72,77 +64,50 @@ jobs:
- name: Install Dependencies
run: |
- pip install -r continuedev/requirements.txt
+ pip install -r server/requirements.txt
- name: Build PyInstaller Executable
run: pyinstaller run.spec
- - name: Set permissions
+ # 1.5 Place the binary in extension/exe directory
+ - name: Make sure extension/exe directory exists
run: |
- chmod 777 dist/run
-
- # - name: Test Python Server
- # env:
- # OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- # ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
- # TOGETHER_API_KEY: ${{ secrets.TOGETHER_API_KEY }}
- # run: |
- # cd continuedev
- # pip install -r dev_requirements.txt
- # cd src
- # python -m pytest
-
- - name: Upload Artifacts
- uses: actions/upload-artifact@v3
- with:
- name: ${{ runner.os }}Build
- path: dist/*
-
- test-and-package:
- needs: pyinstaller
- strategy:
- matrix:
- os: [macos-latest, ubuntu-20.04, windows-latest]
-
- runs-on: ${{ matrix.os }}
+ mkdir -p extension/exe
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- # Download corresponding binary artifact for the platform
-
- - name: Create server directory
- run: mkdir -p ~/.continue/server/exe
-
- - name: Download Linux build
- uses: actions/download-artifact@v2
- with:
- name: LinuxBuild
- path: ~/.continue/server/exe
- if: matrix.os == 'ubuntu-20.04'
-
- - name: Download macOS build
- uses: actions/download-artifact@v2
- with:
- name: macOSBuild
- path: ~/.continue/server/exe
- if: matrix.os == 'macos-latest'
+ - name: Copy binary to extension (non-Windows)
+ run: |
+ cp dist/run extension/exe/run
+ if: matrix.os != 'windows-latest'
- - name: Download Windows build
- uses: actions/download-artifact@v2
- with:
- name: WindowsBuild
- path: ~/.continue/server/exe
+ - name: Copy binary to extension (Windows)
+ run: |
+ cp dist/run.exe extension/exe/run.exe
if: matrix.os == 'windows-latest'
+ # 1.8 Set permissions and upload binary
- name: Set permissions
- shell: bash
run: |
- chmod -R 777 ~/.continue/server/exe
+ chmod 777 extension/exe/run
- # Setup Node.js and install dependencies
+ - uses: actions/upload-artifact@v2
+ if: matrix.os == 'macos-latest' && matrix.arch == 'x64'
+ with:
+ name: macOSBinary
+ path: extension/exe/run
+
+ - uses: actions/upload-artifact@v2
+ if: matrix.os == 'ubuntu-20.04' && matrix.arch == 'x64'
+ with:
+ name: LinuxBinary
+ path: extension/exe/run
+
+ - uses: actions/upload-artifact@v2
+ if: matrix.os == 'windows-latest' && matrix.arch == 'x64'
+ with:
+ name: WindowsBinary
+ path: extension/exe/run.exe
+ # 2. Install npm dependencies
- name: Use Node.js 19.0.0
uses: actions/setup-node@v3
with:
@@ -165,13 +130,17 @@ jobs:
cd extension
npm ci
+ - name: Add a copy of continuedev to the extension
+ run: |
+ cd extension
+ cp -r ../server/continuedev continuedev
+
- name: Install react-app Dependencies
run: |
cd extension/react-app
npm ci --legacy-peer-deps
- # Run tests
-
+ # 3. Run tests for the extension
- name: Prepare the extension
run: |
cd extension
@@ -192,19 +161,31 @@ jobs:
npm run test
if: matrix.os != 'ubuntu-20.04'
- # Create and upload .vsix artifact
- - name: Package the extension
+ # 3.5 If on Apple Silicon, download the binary from S3 bucket
+ - name: Remove existing binary
+ if: matrix.os == 'macos-latest' && matrix.arch == 'arm64'
+ run: rm extension/exe/run
+
+ - name: Download Apple Silicon Binary
+ if: matrix.os == 'macos-latest' && matrix.arch == 'arm64'
+ run: curl -o extension/exe/run https://continue-server-binaries.s3.us-west-1.amazonaws.com/apple-silicon/run
+
+ - name: Set permissions
run: |
- cd extension
- npm run package
+ chmod -R 777 extension/exe/run
- - name: Upload .vsix as an artifact
- uses: actions/upload-artifact@v2
+ # 4. Package the extension
+ - shell: pwsh
+ run: echo "target=${{ matrix.platform }}-${{ matrix.arch }}" >> $env:GITHUB_ENV
+ - run: cd extension && npx vsce package --target ${{ env.target }}
+
+ # 5. Upload the .vsix as an artifact
+ - uses: actions/upload-artifact@v2
with:
- name: vsix-artifact
- path: extension/build/*
- if: matrix.os == 'ubuntu-20.04'
+ name: ${{ env.target }}
+ path: "extension/*.vsix"
+ # 6. Upload continue.log as an artifact for debugging of the workflow
- name: Upload continue.log
uses: actions/upload-artifact@v2
with:
@@ -213,14 +194,13 @@ jobs:
if: always()
publish:
- needs: test-and-package
runs-on: ubuntu-20.04
+ needs: build
permissions:
contents: write
-
steps:
- # Checkout and download .vsix artifact
+ # 0. Setup git
- name: Checkout
uses: actions/checkout@v2
@@ -232,40 +212,23 @@ jobs:
- name: Pull latest changes
run: git pull origin main
- - name: Download .vsix artifact
- uses: actions/download-artifact@v2
- with:
- name: vsix-artifact
- path: extension/build
-
- # Publish the extension and commit/push the version change
+ # 1. Download the artifacts
+ - uses: actions/download-artifact@v3
- - name: Use Node.js 19.0.0
- uses: actions/setup-node@v3
- with:
- node-version: 19.0.0
-
- - name: Cache extension node_modules
- uses: actions/cache@v2
- with:
- path: extension/node_modules
- key: ${{ runner.os }}-node-${{ hashFiles('extension/package-lock.json') }}
-
- - name: Install extension Dependencies
- run: |
+ # 2. Publish the extension to VS Code Marketplace
+ - run: |
cd extension
- npm ci
+ npx vsce publish --packagePath ../alpine-x64/*.vsix ../darwin-arm64/*.vsix ../darwin-x64/*.vsix ../linux-arm64/*.vsix ../linux-armhf/*.vsix ../linux-x64/*.vsix ../win32-ia32/*.vsix ../win32-x64/*.vsix ../win32-arm64/*.vsix
+ env:
+ VSCE_PAT: ${{ secrets.VSCE_TOKEN }}
+ # 3. Publish the extension to Open VSX Registry
- name: Publish (Open VSX Registry)
run: |
cd extension
- npx ovsx publish -p ${{ secrets.VSX_REGISTRY_TOKEN }} --packagePath ./build/*.vsix
-
- - name: Publish
- run: |
- cd extension
- npx vsce publish -p ${{ secrets.VSCE_TOKEN }} --packagePath ./build/*.vsix
+ npx ovsx publish -p ${{ secrets.VSX_REGISTRY_TOKEN }} --packagePath ../alpine-x64/*.vsix ../darwin-arm64/*.vsix ../darwin-x64/*.vsix ../linux-arm64/*.vsix ../linux-armhf/*.vsix ../linux-x64/*.vsix ../win32-ia32/*.vsix ../win32-x64/*.vsix ../win32-arm64/*.vsix
+ # 4. Update the package.json version and push changes
- name: Update version in package.json
run: |
cd extension
@@ -283,24 +246,23 @@ jobs:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}
- # Download binaries and upload to S3
-
+ # 5. Download binaries and upload to S3
- name: Download Linux build
uses: actions/download-artifact@v2
with:
- name: LinuxBuild
+ name: LinuxBinary
path: exe/linux
- name: Download macOS build
uses: actions/download-artifact@v2
with:
- name: macOSBuild
+ name: macOSBinary
path: exe/mac
- name: Download Windows build
uses: actions/download-artifact@v2
with:
- name: WindowsBuild
+ name: WindowsBinary
path: exe/windows
- name: Configure AWS Credentials
@@ -331,3 +293,4 @@ jobs:
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: "us-west-1"
SOURCE_DIR: "exe"
+