diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 466ca4c..9daae17 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,15 +58,20 @@ version and syncs all manifests. If a previous bump PR is still open and `main` has advanced beyond it (new commits landed since the PR was created), the stale PR is closed and replaced with a fresh one. If the existing PR still covers the current state of `main`, no action is taken. Maintainers review and merge the -bump PR to trigger the release. +bump PR before creating the release. ### Release process 1. Bump the version: `python -m scripts.version.sync X.Y.Z` 2. Update `CHANGELOG.md` with the new version and release notes. 3. Commit, push, and merge the PR. -4. Azure Pipelines validates and tests the repository, then creates the GitHub - Release. The npm and Python packages are not published. +4. After GitHub Actions validation passes, manually create a GitHub Release + tagged `vX.Y.Z` at the merged commit, using the changelog for release notes. + +Azure DevOps release automation is no longer used. Extensions consume this +repository as a git submodule pinned to a commit; GitHub Releases are versioned +milestones, not a prerequisite for submodule updates. The npm and Python packages +are not published. ## Reporting Issues diff --git a/build/azure-pipelines-release.yml b/build/azure-pipelines-release.yml deleted file mode 100644 index e4e098a..0000000 --- a/build/azure-pipelines-release.yml +++ /dev/null @@ -1,222 +0,0 @@ -# Azure Pipelines release pipeline for vscode-common-python-lsp. -# -# Triggered automatically when the VERSION file changes on main -# (i.e. a version bump is merged). Validates and tests both libraries, then -# creates a GitHub release and tags the commit. -# -# Uses MicroBuildTemplate for 1ES compliance (SDL, SBOM, etc). - -trigger: - branches: - include: - - main - paths: - include: - - VERSION -pr: none - -resources: - repositories: - - repository: MicroBuildTemplate - type: git - name: 1ESPipelineTemplates/MicroBuildTemplate - ref: refs/tags/release - -parameters: - - name: pythonVersions - type: object - default: - - "3.10" - - "3.11" - - "3.12" - - "3.13" - - "3.14" - -variables: - - name: TeamName - value: vscode-common-python-lsp - - name: NodeVersion - value: "22.21.1" # Keep in sync with .nvmrc - - name: PythonVersion - value: "3.10" - - name: RepoName - value: vscode-common-python-lsp - - -extends: - template: azure-pipelines/MicroBuild.1ES.Official.Publish.yml@MicroBuildTemplate - parameters: - sdl: - sourceAnalysisPool: VSEng-MicroBuildVSStable - codeSignValidation: - enabled: true - sbom: - enabled: true - pool: - name: AzurePipelines-EO - image: 1ESPT-Ubuntu22.04 - os: linux - customBuildTags: - - ES365AIMigrationTooling - - stages: - # Stage 1: Validate version consistency - - stage: Validate - displayName: Validate Release Version - jobs: - - job: VersionCheck - displayName: Check version consistency - templateContext: - outputs: - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/version-info - artifactName: version-info - steps: - - checkout: self - - - task: UsePythonVersion@0 - inputs: - versionSpec: $(PythonVersion) - - - script: python -m scripts.version.validate - displayName: Validate version consistency - - - script: | - mkdir -p $(Build.ArtifactStagingDirectory)/version-info - cp VERSION $(Build.ArtifactStagingDirectory)/version-info/ - displayName: Stage VERSION file - - # Stage 2: Build & Test - - stage: BuildAndTest - displayName: Build & Test - dependsOn: Validate - condition: not(failed('Validate')) - jobs: - # TypeScript - - job: TypeScript - displayName: TypeScript build & test - steps: - - checkout: self - - - task: NodeTool@0 - inputs: - versionSpec: $(NodeVersion) - - - task: npm@1 - displayName: Install dependencies - inputs: - command: ci - workingDir: typescript - customRegistry: useFeed - customFeed: '$(RepoName)' - - - task: npm@1 - displayName: Build - inputs: - command: custom - customCommand: run build - workingDir: typescript - - - task: npm@1 - displayName: Lint - inputs: - command: custom - customCommand: run lint - workingDir: typescript - - - task: npm@1 - displayName: Test - inputs: - command: custom - customCommand: test - workingDir: typescript - - # Python tests — Linux - - job: PythonTestLinux - displayName: Python test (Linux) - strategy: - matrix: - ${{ each ver in parameters.pythonVersions }}: - Python_${{ ver }}: - pythonVersion: ${{ ver }} - steps: - - checkout: self - - - task: UsePythonVersion@0 - inputs: - versionSpec: $(pythonVersion) - - - task: PipAuthenticate@1 - inputs: - artifactFeeds: '$(RepoName)' - - - script: python -m pip install --upgrade pip nox - displayName: Install nox - - - script: nox -s tests - - # Python tests — Windows - - job: PythonTestWindows - displayName: Python test (Windows) - pool: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - os: windows - strategy: - matrix: - ${{ each ver in parameters.pythonVersions }}: - Python_${{ ver }}: - pythonVersion: ${{ ver }} - steps: - - checkout: self - - - task: UsePythonVersion@0 - inputs: - versionSpec: $(pythonVersion) - - - task: PipAuthenticate@1 - inputs: - artifactFeeds: '$(RepoName)' - - - script: python -m pip install --upgrade pip nox - displayName: Install nox - - - script: nox -s tests - - # Stage 3: Create GitHub Release - - stage: GitHubRelease - displayName: Create GitHub Release - dependsOn: BuildAndTest - jobs: - - job: CreateTag - displayName: Create git tag - templateContext: - type: releaseJob - isProduction: true - inputs: - - input: pipelineArtifact - artifactName: version-info - targetPath: $(Pipeline.Workspace)/version-info - steps: - - script: | - VERSION=$(cat $(Pipeline.Workspace)/version-info/VERSION) - echo "##vso[task.setvariable variable=ReleaseVersion]${VERSION}" - displayName: Read version - - - task: GitHubRelease@1 - displayName: Create GitHub Release - inputs: - gitHubConnection: "Github - VS Code Common Python LSP" - repositoryName: $(Build.Repository.Name) - action: create - target: $(Build.SourceVersion) - tagSource: userSpecifiedTag - tag: v$(ReleaseVersion) - title: v$(ReleaseVersion) - releaseNotesSource: inline - releaseNotesInline: | - ## What's Changed - Auto-generated release for v$(ReleaseVersion). - See [full changelog]($(Build.Repository.Uri)/compare/$(Build.SourceVersion)...v$(ReleaseVersion)) for details. - changeLogCompareToRelease: lastFullRelease - changeLogType: commitBased