diff options
Diffstat (limited to '.github/workflows/main.yaml')
-rw-r--r-- | .github/workflows/main.yaml | 171 |
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" |