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.yaml130
1 files changed, 115 insertions, 15 deletions
diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
index 03c33dba..94f7073b 100644
--- a/.github/workflows/main.yaml
+++ b/.github/workflows/main.yaml
@@ -4,7 +4,6 @@ on:
push:
branches:
- main
- - package-python
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,11 +113,83 @@ 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: 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'
+
+ # 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
+
+ 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:
+ path: extension/node_modules
+ key: ${{ runner.os }}-node-${{ hashFiles('extension/package-lock.json') }}
+
+ - name: Install extension Dependencies
+ run: |
+ cd extension
+ npm ci
+
+ - name: Publish
+ run: |
+ cd extension
+ npx vsce publish -p ${{ secrets.VSCE_TOKEN }} --packagePath ./build/*.vsix
+
+ - name: Update version in package.json
+ run: |
+ cd extension
+ npm version patch
+
- name: Commit changes
run: |
git config --local user.email "action@github.com"
@@ -116,18 +202,32 @@ jobs:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}
- - name: Upload .vsix artifact
- uses: actions/upload-artifact@v2
+ # Download binaries and upload to S3
+
+ - name: Download Linux build
+ uses: actions/download-artifact@v2
with:
- name: vsix-artifact
- path: extension/build/*
+ 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-2
+ aws-region: us-west-1
- name: Upload binaries to S3
uses: jakejarvis/s3-sync-action@master