summaryrefslogtreecommitdiff
path: root/.github/workflows/main.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/main.yaml')
-rw-r--r--.github/workflows/main.yaml171
1 files changed, 136 insertions, 35 deletions
diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
index 03c33dba..242d5a4e 100644
--- a/.github/workflows/main.yaml
+++ b/.github/workflows/main.yaml
@@ -3,8 +3,7 @@ name: Publish Extension
on:
push:
branches:
- - main
- - package-python
+ - ci-testing
jobs:
pyinstaller:
@@ -15,6 +14,8 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
+ # Install Python requirements and build+upload binaries for each platform
+
- name: Check-out repository
uses: actions/checkout@v3
@@ -44,33 +45,46 @@ jobs:
name: ${{ runner.os }} Build
path: dist/*
- publish:
+ test-and-package:
needs: pyinstaller
- runs-on: ubuntu-latest
- permissions:
- contents: write
+ strategy:
+ matrix:
+ os: [macos-latest, ubuntu-20.04, windows-latest]
+
+ runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v2
+ # Download corresponding binary artifact for the platform
+
+ - name: Create exe directory
+ run: |
+ mkdir extension/server/exe
+
- name: Download Linux build
uses: actions/download-artifact@v2
with:
name: Linux Build
- path: exe/linux
+ path: extension/server/exe/linux
+ if: matrix.os == 'ubuntu-20.04'
- name: Download macOS build
uses: actions/download-artifact@v2
with:
name: macOS Build
- path: exe/mac
+ path: extension/server/exe/mac
+ if: matrix.os == 'macos-latest'
- name: Download Windows build
uses: actions/download-artifact@v2
with:
name: Windows Build
- path: exe/windows
+ path: extension/server/exe/windows
+ if: matrix.os == 'windows-latest'
+
+ # Setup Node.js and install dependencies
- name: Use Node.js 19.0.0
uses: actions/setup-node@v3
@@ -99,43 +113,130 @@ jobs:
cd extension/react-app
npm ci --legacy-peer-deps
- - name: Build and Publish
+ # Run tests
+
+ - name: Package the extension
run: |
cd extension
npm run package
- npx vsce publish patch -p ${{ secrets.VSCE_TOKEN }}
- - name: Commit changes
+
+ - name: Install Xvfb for Linux and run tests
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]"
+ 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: Push changes
- uses: ad-m/github-push-action@master
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- branch: ${{ github.ref }}
+ - name: Run extension tests
+ run: |
+ cd extension
+ npm run test
+ if: matrix.os != 'ubuntu-20.04'
- - name: Upload .vsix artifact
+ # Upload .vsix artifact
+
+ - name: Upload .vsix as an artifact
uses: actions/upload-artifact@v2
with:
name: vsix-artifact
path: extension/build/*
+ if: matrix.os == 'ubuntu-20.04'
+
+ publish:
+ needs: test-and-package
+ runs-on: ubuntu-20.04
+ permissions:
+ contents: write
- - name: Configure AWS Credentials
- uses: aws-actions/configure-aws-credentials@v1
+ steps:
+ # Checkout and download .vsix artifact
+
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - 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
+
+ - 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:
- aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
- aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- aws-region: us-west-2
+ path: extension/node_modules
+ key: ${{ runner.os }}-node-${{ hashFiles('extension/package-lock.json') }}
- - name: Upload binaries to S3
- uses: jakejarvis/s3-sync-action@master
+ - name: Install extension Dependencies
+ run: |
+ cd extension
+ npm ci
+
+ - name: Upload .vsix a second time
+ uses: actions/upload-artifact@v2
with:
- args: --acl public-read --follow-symlinks --delete
- env:
- AWS_S3_BUCKET: continue-server-binaries
- AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
- AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- AWS_REGION: "us-west-1"
- SOURCE_DIR: "exe"
+ name: vsix-artifact-2
+ path: extension/build
+
+ # - name: Publish
+ # run: |
+ # cd extension
+ # npx vsce publish patch -p ${{ secrets.VSCE_TOKEN }}
+
+ # - 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 }}
+
+ # # Download binaries and upload to S3
+
+ # - name: Download Linux build
+ # uses: actions/download-artifact@v2
+ # with:
+ # name: Linux Build
+ # path: exe/linux
+
+ # - name: Download macOS build
+ # uses: actions/download-artifact@v2
+ # with:
+ # name: macOS Build
+ # path: exe/mac
+
+ # - name: Download Windows build
+ # uses: actions/download-artifact@v2
+ # with:
+ # name: Windows Build
+ # path: exe/windows
+
+ # - name: Configure AWS Credentials
+ # uses: aws-actions/configure-aws-credentials@v1
+ # with:
+ # aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ # aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ # aws-region: us-west-1
+
+ # - name: Upload binaries to S3
+ # uses: jakejarvis/s3-sync-action@master
+ # with:
+ # args: --acl public-read --follow-symlinks --delete
+ # env:
+ # AWS_S3_BUCKET: continue-server-binaries
+ # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ # AWS_REGION: "us-west-1"
+ # SOURCE_DIR: "exe"