Skip to content

feat: add GitLab CI/CD integration for setup-vp#97

Draft
naokihaba wants to merge 10 commits into
voidzero-dev:mainfrom
naokihaba:main
Draft

feat: add GitLab CI/CD integration for setup-vp#97
naokihaba wants to merge 10 commits into
voidzero-dev:mainfrom
naokihaba:main

Conversation

@naokihaba

@naokihaba naokihaba commented Jun 28, 2026

Copy link
Copy Markdown

resolves #88

Warning

This has not yet been tested from an actual GitLab CI/CD environment.

I thought it would be best to document the GitLab integration features as an RFC, so I’ve put everything together along with a diagram of the overall flow.

rfcs/assets/gitlab-runtime-flow.svg

gitlab-runtime-flow

@naokihaba

Copy link
Copy Markdown
Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 277acafbdc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread gitlab/bootstrap.sh
Comment thread README.md Outdated
@naokihaba

Copy link
Copy Markdown
Author

GitLab CI Test Steps

Replace <test-ref> with the branch or commit SHA you want to test.

1. Basic smoke test

Verify that the setup works as expected under standard conditions.

include:
  - remote: "https://raw.githubusercontent.com/voidzero-dev/setup-vp/<test-ref>/gitlab/setup-vp.yml"
    inputs:
      setup-ref: "<test-ref>"
      node-version: "22"
      run-install: "true"

test:
  extends: .setup-vp
  image: node:22
  script:
    - vp --version
    - node --version
    - vp run test

For this test, check if the pipeline config is accepted and the setup correctly reaches the script section. You should see vp --version outputting the version correctly, confirming that vp install ran before the script executed.

2. Old Node image regression test

Ensure that the setup remains compatible even when using an older Node image.

include:
  - remote: "https://raw.githubusercontent.com/voidzero-dev/setup-vp/<test-ref>/gitlab/setup-vp.yml"
    inputs:
      setup-ref: "<test-ref>"
      node-version: "22"
      run-install: "false"

test:
  extends: .setup-vp
  image: node:18
  script:
    - node --version
    - vp --version

Confirm that the setup succeeds on the node:18 image. The runtime should switch to the requested Node version before setup-vp.mjs is executed.

3. Multi install entries

Test whether the run-install input correctly handles complex YAML objects.

include:
  - remote: "https://raw.githubusercontent.com/voidzero-dev/setup-vp/<test-ref>/gitlab/setup-vp.yml"
    inputs:
      setup-ref: "<test-ref>"
      node-version: "22"
      run-install: |
        - cwd: .
          args: ['--frozen-lockfile']

test:
  extends: .setup-vp
  image: node:22
  script:
    - vp --version

Verify that the pipeline configuration is valid and that run-install is parsed without errors. In the logs, you should see vp install --frozen-lockfile being executed.

@naokihaba naokihaba marked this pull request as ready for review June 28, 2026 17:49
Copilot AI review requested due to automatic review settings June 28, 2026 17:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@fengmk2

fengmk2 commented Jun 29, 2026

Copy link
Copy Markdown
Member

Today I will set up a continuous verification repository on GitLab, and the results will be synchronized.

@fengmk2 fengmk2 self-assigned this Jun 29, 2026
Comment thread gitlab/setup-vp.mjs Outdated
@@ -0,0 +1,676 @@
/// <reference types="node" />
// @ts-check
import { createWriteStream, existsSync, readFileSync, statSync, writeFileSync } from "node:fs";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@naokihaba Why not use TypeScript?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GitHub Actions comes with a built-in Node.js runtime, so you can use TypeScript right out of the box. GitLab CI works a bit differently because this template is just a YAML definition that runs inside whatever image the user chooses. Since we can't guarantee Node.js will be there, we currently include a "vp env use" step in the job to set it up.

That said, if we simply make it a documented requirement that the environment must have Node.js, we can keep the configuration much cleaner. I think I'll go ahead and update it with that approach in mind.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/voidzero-dev/setup-vp/blob/main/vite.config.ts#L11 Currently not, GitHub Action also use scripts compiled with vp pack to run.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for checking,

I think we can align the GitLab side with the GitHub Action model by shipping a precompiled JavaScript runtime and executing it with the Node.js that's already in the runner image. This way, we won't need to use vp env use inside the template to bootstrap Node.js anymore.

I'll go ahead and update the GitLab template and documentation based on the assumption that GitLab jobs using this template will run in an environment where Node.js is already available.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@naokihaba naokihaba marked this pull request as draft June 29, 2026 01:39
@naokihaba

Copy link
Copy Markdown
Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 45e42bf985

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/gitlab/run-install.ts
@naokihaba naokihaba marked this pull request as ready for review June 29, 2026 07:39
Copilot AI review requested due to automatic review settings June 29, 2026 07:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@naokihaba naokihaba marked this pull request as draft June 29, 2026 09:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add GitLab CI/CD template support

3 participants