diff options
author | Nate Sesti <33237525+sestinj@users.noreply.github.com> | 2023-10-09 18:37:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-09 18:37:27 -0700 |
commit | f09150617ed2454f3074bcf93f53aae5ae637d40 (patch) | |
tree | 5cfe614a64d921dfe58b049f426d67a8b832c71f /.github/workflows/main.yaml | |
parent | 985304a213f620cdff3f8f65f74ed7e3b79be29d (diff) | |
download | sncontinue-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.yaml | 265 |
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" + |