이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

지속적인 통합

확장 통합 테스트는 CI 서비스에서 실행할 수 있습니다. @vscode/test-electron 라이브러리는 CI 공급자에서 확장 테스트를 설정하는 데 도움이 되며, Azure Pipelines에 설정된 샘플 확장을 포함합니다. 빌드 파이프라인을 확인하거나 azure-pipelines.yml 파일로 바로 이동할 수 있습니다.

자동 게시

CI를 구성하여 확장의 새 버전을 자동으로 게시할 수도 있습니다.

vsce를 사용하여 로컬 환경에서 게시하는 것과 유사한 게시 명령을 사용하지만, 개인 액세스 토큰(PAT)을 안전하게 제공해야 합니다. PAT를 VSCE_PAT 비밀 변수로 저장하면 vsce가 이를 사용할 수 있습니다. 비밀 변수는 절대 노출되지 않으므로 CI 파이프라인에서 안전하게 사용할 수 있습니다.

Azure Pipelines

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 파일로 지정합니다. 빌드를 트리거하면 됩니다.

pipelines

브랜치에 푸시하거나 끌어오기 요청 시 빌드가 지속적으로 실행되도록 활성화할 수 있습니다. 자세한 내용은 빌드 파이프라인 트리거를 참조하세요.

Azure Pipelines 자동 게시

  1. Azure DevOps 비밀 지침을 사용하여 VSCE_PAT를 비밀 변수로 설정합니다.
  2. devDependenciesvsce를 설치합니다(npm install @vscode/vsce --save-dev 또는 yarn add @vscode/vsce --dev).
  3. PAT 없이 package.jsondeploy 스크립트를 선언합니다(기본적으로 vsce는 개인 액세스 토큰으로 VSCE_PAT 환경 변수를 사용합니다).
"scripts": {
  "deploy": "vsce publish --yarn"
}
  1. 태그가 생성될 때도 빌드가 실행되도록 CI를 구성합니다.
trigger:
  branches:
    include:
    - main
  tags:
    include:
    - refs/tags/v*
  1. 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 자동 게시

  1. GitHub Actions 비밀 지침을 사용하여 VSCE_PAT를 암호화된 비밀로 설정합니다.
  2. devDependenciesvsce를 설치합니다(npm install @vscode/vsce --save-dev 또는 yarn add @vscode/vsce --dev).
  3. PAT 없이 package.jsondeploy 스크립트를 선언합니다.
"scripts": {
  "deploy": "vsce publish --yarn"
}
  1. 태그가 생성될 때도 빌드가 실행되도록 CI를 구성합니다.
on:
  push:
    branches:
    - main
  release:
    types:
    - created
  1. 비밀 변수와 함께 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 자동 게시

  1. GitLab CI 설명서를 사용하여 VSCE_PAT를 마스크된 변수로 설정합니다.
  2. devDependenciesvsce를 설치합니다(npm install @vscode/vsce --save-dev 또는 yarn add @vscode/vsce --dev).
  3. PAT 없이 package.jsondeploy 스크립트를 선언합니다.
"scripts": {
  "deploy": "vsce publish --yarn"
}
  1. 태그에서만 트리거되는 마스크된 변수와 함께 npm run deploy를 호출하는 deploy 작업을 추가합니다.
deploy:
  only:
    - tags
  script:
    - npm run deploy

자주 묻는 질문

연속 통합을 위해 Yarn을 사용해야 합니까?

위의 모든 예는 Yarn으로 빌드된 가상 프로젝트를 참조하지만, npm, Grunt, Gulp 또는 기타 JavaScript 빌드 도구를 사용하도록 조정할 수 있습니다.

© . This site is unofficial and not affiliated with Microsoft.