Skip to content

Commit 242800b

Browse files
helen229Copilot
andauthored
ci(skill-eval): pin @microsoft/vally-cli via lockfile (#15752)
* draft: skill-eval 1ES pipeline + pinned vally-cli package (#15747) Draft plan for migrating .github/workflows/skill-eval.yml onto the 1ES VM template with an authenticated DevOps npm feed. Placeholders left for the feed URL / service connection — to be filled in after Tuesday sync with Ray. Not wired up; .github/workflows/skill-eval.yml remains the source of truth until the ADO pipeline is registered and green. * ci(skill-eval): pin vally-cli via lockfile, drop 1ES migration draft Use `npm ci` against the committed lockfile in `eng/skill-eval/` so the vally version and its full transitive dependency tree are reproducible across runs. Drops the global `npm install -g @microsoft/vally-cli@0.4.0` install; vally is now invoked directly from `node_modules/.bin`. Path triggers extended to include `eng/skill-eval/**` and the workflow file itself so lockfile, package.json, and workflow changes re-run the lint check. Deletes the draft `.azure-pipelines/skill-eval.yml` - the 1ES / DevOps-feed migration is deferred indefinitely; staying on `ubuntu-latest` + the public npm registry. Refs #15747 * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * docs(skill-eval): correct README/package.json to describe lockfile pinning (not DevOps feed) Addresses Copilot review feedback on #15752: the workflow uses npm ci against a committed lockfile from the public npm registry; no DevOps feed is involved. Also recommends contributors reproduce CI by running npm ci + local binary instead of a global install. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
1 parent 142f615 commit 242800b

4 files changed

Lines changed: 853 additions & 3 deletions

File tree

.github/workflows/skill-eval.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ on:
55
branches: [main]
66
paths:
77
- '.github/skills/**'
8+
- 'eng/skill-eval/**'
9+
- '.github/workflows/skill-eval.yml'
810
pull_request:
911
paths:
1012
- '.github/skills/**'
13+
- 'eng/skill-eval/**'
14+
- '.github/workflows/skill-eval.yml'
1115
workflow_dispatch:
1216

1317
permissions:
@@ -23,9 +27,12 @@ jobs:
2327
- uses: actions/setup-node@v6
2428
with:
2529
node-version: '22'
30+
cache: 'npm'
31+
cache-dependency-path: eng/skill-eval/package-lock.json
2632

27-
- name: Install Vally CLI
28-
run: npm install -g @microsoft/vally-cli@0.5.0
33+
- name: Install Vally CLI (pinned via lockfile)
34+
working-directory: eng/skill-eval
35+
run: npm ci
2936

3037
- name: Lint skills
31-
run: vally lint .
38+
run: ./eng/skill-eval/node_modules/.bin/vally lint .

eng/skill-eval/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# skill-eval (CI-only npm project)
2+
3+
This folder exists solely to give the [Skill Evaluations GitHub Actions workflow](../../.github/workflows/skill-eval.yml) a tiny `package.json` it can `npm ci` against, so `@microsoft/vally-cli` and its full transitive dependency tree are pinned by the committed `package-lock.json` instead of resolved fresh from semver ranges on every CI run.
4+
5+
- Do not add runtime code here.
6+
- The only dependency should be `@microsoft/vally-cli`, pinned to the version CI should validate skills with.
7+
- `package-lock.json` must be committed so `npm ci` is deterministic.
8+
9+
## Updating the Vally CLI version
10+
11+
1. Bump `@microsoft/vally-cli` in `package.json`.
12+
2. Run `npm install` locally to refresh `package-lock.json`.
13+
3. Commit both files in the same PR. The workflow's path triggers include `eng/skill-eval/**`, so CI will re-run `vally lint` against the new version automatically.
14+
15+
## Local skill linting
16+
17+
Reproduce exactly what CI does by installing from the same lockfile and invoking the local binary:
18+
19+
```sh
20+
cd eng/skill-eval
21+
npm ci
22+
cd ../..
23+
./eng/skill-eval/node_modules/.bin/vally lint .
24+
```
25+
26+
This matches the CI job step-for-step, so a green local run on the current lockfile means a green CI run.
27+
28+
A global install (`npm install -g @microsoft/vally-cli@<version>`) still works for ad-hoc iteration, but it won't match the transitive dependency tree CI uses and isn't a substitute for the steps above when validating a version bump.

0 commit comments

Comments
 (0)