지속적인 통합
확장 통합 테스트는 CI 서비스에서 실행할 수 있습니다. @vscode/test-electron 라이브러리는 CI 공급자에서 확장 테스트를 설정하는 데 도움이 되며, Azure Pipelines에 설정된 샘플 확장을 포함합니다. 빌드 파이프라인을 확인하거나 azure-pipelines.yml 파일로 바로 이동할 수 있습니다.
자동 게시
CI를 구성하여 확장의 새 버전을 자동으로 게시할 수도 있습니다.
vsce를 사용하여 로컬 환경에서 게시하는 것과 유사한 게시 명령을 사용하지만, 개인 액세스 토큰(PAT)을 안전하게 제공해야 합니다. PAT를 VSCE_PAT 비밀 변수로 저장하면 vsce가 이를 사용할 수 있습니다. 비밀 변수는 절대 노출되지 않으므로 CI 파이프라인에서 안전하게 사용할 수 있습니다.
Azure Pipelines
Azure Pipelines는 VS Code 확장 테스트를 실행하는 데 탁월합니다. Windows, macOS 및 Linux에서 테스트를 실행할 수 있기 때문입니다. 오픈 소스 프로젝트의 경우 무제한 분 및 10개의 무료 병렬 작업이 제공됩니다. 이 섹션에서는 확장 테스트 실행을 위한 Azure Pipelines 설정 방법을 설명합니다.
Azure DevOps에서 무료 계정을 만들고 확장용 Azure DevOps 프로젝트를 만듭니다.
그런 다음, 확장 리포지토리의 루트에 다음 azure-pipelines.yml 파일을 추가합니다. VS Code를 헤드리스 Linux CI 머신에서 실행하는 데 필요한 Linux용 xvfb 설정 스크립트를 제외하고는 정의가 간단합니다.
trigger:
branches:
include:
- main
tags:
include:
- v*
strategy:
matrix:
linux:
imageName: 'ubuntu-latest'
mac:
imageName: 'macos-latest'
windows:
imageName: 'windows-latest'
pool:
vmImage: $(imageName)
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- bash: |
/usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
echo ">>> Started xvfb"
displayName: Start xvfb
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
- bash: |
echo ">>> Compile vscode-test"
yarn && yarn compile
echo ">>> Compiled vscode-test"
cd sample
echo ">>> Run sample integration test"
yarn && yarn compile && yarn test
displayName: Run Tests
env:
DISPLAY: ':99.0'
마지막으로 DevOps 프로젝트에서 새 파이프라인을 만듭니다. 해당 파이프라인을 azure-pipelines.yml 파일로 지정합니다. 빌드를 트리거하면 됩니다.

브랜치에 푸시하거나 끌어오기 요청 시 빌드가 지속적으로 실행되도록 활성화할 수 있습니다. 자세한 내용은 빌드 파이프라인 트리거를 참조하세요.
Azure Pipelines 자동 게시
- Azure DevOps 비밀 지침을 사용하여
VSCE_PAT를 비밀 변수로 설정합니다. devDependencies로vsce를 설치합니다(npm install @vscode/vsce --save-dev또는yarn add @vscode/vsce --dev).- PAT 없이
package.json에deploy스크립트를 선언합니다(기본적으로vsce는 개인 액세스 토큰으로VSCE_PAT환경 변수를 사용합니다).
"scripts": {
"deploy": "vsce publish --yarn"
}
- 태그가 생성될 때도 빌드가 실행되도록 CI를 구성합니다.
trigger:
branches:
include:
- main
tags:
include:
- refs/tags/v*
azure-pipelines.yml에 비밀 변수와 함께yarn deploy를 호출하는publish단계를 추가합니다.
- bash: |
echo ">>> Publish"
yarn deploy
displayName: Publish
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'), eq(variables['Agent.OS'], 'Linux'))
env:
VSCE_PAT: $(VSCE_PAT)
조건 속성은 CI가 특정 경우에만 게시 단계를 실행하도록 합니다.
이 예에서 조건에는 세 가지 검사가 있습니다.
succeeded()- 테스트가 통과한 경우에만 게시합니다.startsWith(variables['Build.SourceBranch'], 'refs/tags/')- 태그가 지정된(릴리스) 빌드인 경우에만 게시합니다.eq(variables['Agent.OS'], 'Linux')- 빌드가 여러 에이전트(Windows, Linux 등)에서 실행되는 경우 포함합니다. 그렇지 않으면 조건에서 해당 부분을 제거합니다.
VSCE_PAT는 비밀 변수이므로 환경 변수로 바로 사용할 수 없습니다. 따라서 환경 변수 VSCE_PAT를 비밀 변수에 명시적으로 매핑해야 합니다.
GitHub Actions
GitHub Actions를 사용하여 확장 CI를 실행하도록 구성할 수도 있습니다. 헤드리스 Linux CI 머신에서 VS Code를 실행하려면 xvfb가 필요하므로 Linux가 현재 OS인 경우 Xvfb가 활성화된 환경에서 테스트를 실행합니다.
on:
push:
branches:
- main
jobs:
build:
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 18.x
- run: npm install
- run: xvfb-run -a npm test
if: runner.os == 'Linux'
- run: npm test
if: runner.os != 'Linux'
GitHub Actions 자동 게시
- GitHub Actions 비밀 지침을 사용하여
VSCE_PAT를 암호화된 비밀로 설정합니다. devDependencies로vsce를 설치합니다(npm install @vscode/vsce --save-dev또는yarn add @vscode/vsce --dev).- PAT 없이
package.json에deploy스크립트를 선언합니다.
"scripts": {
"deploy": "vsce publish --yarn"
}
- 태그가 생성될 때도 빌드가 실행되도록 CI를 구성합니다.
on:
push:
branches:
- main
release:
types:
- created
- 비밀 변수와 함께
npm run deploy를 호출하는publish작업을 파이프라인에 추가합니다.
- name: Publish
if: success() && startsWith(github.ref, 'refs/tags/') && matrix.os == 'ubuntu-latest'
run: npm run deploy
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}
if 속성은 CI가 특정 경우에만 게시 단계를 실행하도록 합니다.
이 예에서 조건에는 세 가지 검사가 있습니다.
success()- 테스트가 통과한 경우에만 게시합니다.startsWith(github.ref, 'refs/tags/')- 태그가 지정된(릴리스) 빌드인 경우에만 게시합니다.matrix.os == 'ubuntu-latest'- 빌드가 여러 에이전트(Windows, Linux 등)에서 실행되는 경우 포함합니다. 그렇지 않으면 조건에서 해당 부분을 제거합니다.
GitLab CI
GitLab CI를 사용하여 헤드리스 Docker 컨테이너에서 확장을 테스트하고 게시할 수 있습니다. 미리 구성된 Docker 이미지를 풀하거나, 파이프라인 중에 Visual Studio Code를 실행하는 데 필요한 xvfb 및 라이브러리를 설치하여 수행할 수 있습니다.
image: node:12-buster
before_script:
- npm install
test:
script:
- |
apt update
apt install -y libasound2 libgbm1 libgtk-3-0 libnss3 xvfb
xvfb-run -a npm run test
GitLab CI 자동 게시
- GitLab CI 설명서를 사용하여
VSCE_PAT를 마스크된 변수로 설정합니다. devDependencies로vsce를 설치합니다(npm install @vscode/vsce --save-dev또는yarn add @vscode/vsce --dev).- PAT 없이
package.json에deploy스크립트를 선언합니다.
"scripts": {
"deploy": "vsce publish --yarn"
}
- 태그에서만 트리거되는 마스크된 변수와 함께
npm run deploy를 호출하는deploy작업을 추가합니다.
deploy:
only:
- tags
script:
- npm run deploy
자주 묻는 질문
연속 통합을 위해 Yarn을 사용해야 합니까?
위의 모든 예는 Yarn으로 빌드된 가상 프로젝트를 참조하지만, npm, Grunt, Gulp 또는 기타 JavaScript 빌드 도구를 사용하도록 조정할 수 있습니다.
