Skip to content

Commit

Permalink
chore: add testing workflow and enforce test dependency for releases
Browse files Browse the repository at this point in the history
- Introduced a new testing workflow in `test.yml` to run tests across multiple OS environments (macOS, Ubuntu, Windows) with Node.js.
- Configured the `semantic-release` job in `publish-vscode-extension.yml` to depend on the test job, ensuring that tests must pass before a release is made.
- This enhancement improves the CI/CD pipeline by integrating automated testing into the release process, increasing code reliability.
  • Loading branch information
joshmu committed Dec 26, 2024
1 parent db167eb commit 7db7c4d
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .github/workflows/publish-vscode-extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@ on:
- master

jobs:
# Add test job dependency
test:
uses: ./.github/workflows/test.yml

semantic-release:
needs: test # Require tests to pass before release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand Down
69 changes: 69 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Tests

on:
push:
branches: [main, master]
pull_request:
types: [opened, synchronize, reopened]
branches: [main, master]
# Add workflow_call to allow other workflows to depend on this
workflow_call:

jobs:
test:
name: Test (${{ matrix.os }})
strategy:
# Keep fail-fast true to ensure all tests must pass
fail-fast: true
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
node-version: [20.x]

runs-on: ${{ matrix.os }}

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Install Dependencies
run: npm install
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# Linux requires xvfb to run vscode tests
- name: Install xvfb (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y xvfb
# Run tests based on platform
- name: Run Tests (Linux)
if: runner.os == 'Linux'
run: xvfb-run -a npm test

- name: Run Tests (macOS/Windows)
if: runner.os != 'Linux'
run: npm test

# Report test status on PR
- name: Update PR Status
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const { owner, repo, number } = context.issue;
const jobName = process.env.MATRIX_OS;
github.rest.issues.createComment({
owner,
repo,
issue_number: number,
body: `✅ Tests passed on ${jobName}`
});
env:
MATRIX_OS: ${{ matrix.os }}

0 comments on commit 7db7c4d

Please sign in to comment.