summaryrefslogtreecommitdiff
path: root/.github/workflows/preview.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/preview.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/preview.yaml')
-rw-r--r--.github/workflows/preview.yaml245
1 files changed, 245 insertions, 0 deletions
diff --git a/.github/workflows/preview.yaml b/.github/workflows/preview.yaml
new file mode 100644
index 00000000..796e65f2
--- /dev/null
+++ b/.github/workflows/preview.yaml
@@ -0,0 +1,245 @@
+name: Publish Preview Extension
+
+on:
+ push:
+ branches:
+ - preview
+
+jobs:
+ build:
+ strategy:
+ matrix:
+ 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:
+ # 1. Build the Pyinstaller binary
+ - name: Check-out repository
+ uses: actions/checkout@v3
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: "3.10.8"
+
+ - name: Install Pyinstaller
+ run: |
+ pip install pyinstaller
+
+ - name: Install Dependencies
+ run: |
+ pip install -r server/requirements.txt
+
+ - name: Build PyInstaller Executable
+ run: pyinstaller run.spec
+
+ # 1.5 Place the binary in extension/exe directory
+ - name: Make sure extension/exe directory exists
+ run: |
+ mkdir -p extension/exe
+
+ - name: Copy binary to extension (non-Windows)
+ run: |
+ cp dist/run extension/exe/run
+ if: matrix.os != 'windows-latest'
+
+ - 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
+ run: |
+ chmod 777 extension/exe/run
+
+ - 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:
+ 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: Cache react-app node_modules
+ uses: actions/cache@v2
+ with:
+ path: extension/react-app/node_modules
+ key: ${{ runner.os }}-node-${{ hashFiles('extension/react-app/package-lock.json') }}
+
+ - name: Install extension Dependencies
+ run: |
+ 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
+
+ # 3. Run tests for the extension
+ - name: Prepare the extension
+ run: |
+ cd extension
+ npm run prepackage
+
+ - name: Install Xvfb for Linux and run tests
+ run: |
+ sudo apt-get install -y xvfb # Install Xvfb
+ Xvfb :99 & # Start Xvfb
+ export DISPLAY=:99 # Export the display number to the environment
+ cd extension
+ npm run test
+ if: matrix.os == 'ubuntu-20.04'
+
+ - name: Run extension tests
+ run: |
+ cd extension
+ npm run test
+ if: matrix.os != 'ubuntu-20.04'
+
+ # 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: |
+ chmod -R 777 extension/exe/run
+
+ # 4. Package the extension
+ - shell: pwsh
+ run: echo "target=${{ matrix.platform }}-${{ matrix.arch }}" >> $env:GITHUB_ENV
+ - run: cd extension && npx vsce package --pre-release --target ${{ env.target }}
+
+ # 5. Upload the .vsix as an artifact
+ - uses: actions/upload-artifact@v2
+ with:
+ 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:
+ name: continue-log
+ path: /home/runner/.continue/continue.log
+ if: always()
+
+ publish:
+ runs-on: ubuntu-20.04
+ needs: build
+ permissions:
+ contents: write
+ steps:
+ # 0. Setup git
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Set up Git
+ run: |
+ git config --local user.email "action@github.com"
+ git config --local user.name "GitHub Action"
+
+ - name: Pull latest changes
+ run: git pull origin preview
+
+ # 1. Download the artifacts
+ - uses: actions/download-artifact@v3
+
+ # 2. Publish the extension to VS Code Marketplace
+ - run: |
+ cd extension
+ npx vsce publish --pre-release --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 --pre-release -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
+ npm version patch
+
+ - name: Commit changes
+ run: |
+ git config --local user.email "action@github.com"
+ git config --local user.name "GitHub Action"
+ git commit -am "ci: 💚 Update package.json version [skip ci]"
+
+ - name: Push changes
+ uses: ad-m/github-push-action@master
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ branch: ${{ github.ref }} \ No newline at end of file