Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,18 @@ on:

workflow_dispatch:

permissions:
contents: read

jobs:
lint:
name: Lint
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Setup pnpm, Node.js, and dependencies
uses: ./.github/actions/setup

Expand Down Expand Up @@ -48,6 +53,8 @@ jobs:

steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Setup pnpm, Node.js, and dependencies
uses: ./.github/actions/setup

Expand All @@ -71,6 +78,8 @@ jobs:

steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Setup pnpm, Node.js, and dependencies
uses: ./.github/actions/setup

Expand All @@ -88,6 +97,8 @@ jobs:
if: github.repository_owner == 'coder' && github.actor != 'dependabot[bot]'
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Setup pnpm, Node.js, and dependencies
uses: ./.github/actions/setup

Expand All @@ -107,6 +118,8 @@ jobs:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Setup pnpm, Node.js, and dependencies
uses: ./.github/actions/setup

Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/pre-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ on:
- "v*-pre"

permissions:
# Required to publish a release
contents: write
pull-requests: read
contents: read

jobs:
package:
Expand All @@ -17,6 +15,8 @@ jobs:
version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false

- name: Setup pnpm, Node.js, and dependencies
uses: ./.github/actions/setup
Expand Down Expand Up @@ -65,6 +65,10 @@ jobs:
publish:
name: Publish Extension and Create Pre-Release
needs: package
permissions:
# Required to create the GitHub release
contents: write
pull-requests: read
uses: ./.github/workflows/publish-extension.yaml
with:
version: ${{ needs.package.outputs.version }}
Expand Down
42 changes: 36 additions & 6 deletions .github/workflows/publish-extension.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,17 @@ jobs:
setup:
name: Setup
runs-on: ubuntu-24.04
permissions:
contents: read
outputs:
packageName: ${{ steps.package.outputs.packageName }}
vsceVersion: ${{ steps.versions.outputs.vsceVersion }}
hasVscePat: ${{ steps.check-secrets.outputs.hasVscePat }}
hasOvsxPat: ${{ steps.check-secrets.outputs.hasOvsxPat }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false

- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
Expand All @@ -45,6 +50,15 @@ jobs:
echo "packageName=$PACKAGE_NAME" >> $GITHUB_OUTPUT
echo "Package name: $PACKAGE_NAME"

- name: Determine vsce version from lockfile
id: versions
# Explicit bash enables pipefail: an extraction miss fails the job
# instead of silently installing latest.
shell: bash
run: |
VSCE_VERSION="$(grep -m 1 -o "@vscode/vsce@[0-9][^'(]*" pnpm-lock.yaml | cut -d @ -f 3)"
echo "vsceVersion=$VSCE_VERSION" >> "$GITHUB_OUTPUT"

- name: Check secrets
id: check-secrets
env:
Expand All @@ -58,58 +72,74 @@ jobs:
name: Publish to VS Marketplace
needs: setup
runs-on: ubuntu-24.04
environment: publish
permissions:
contents: read
if: ${{ needs.setup.outputs.hasVscePat == 'true' }}
steps:
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: "22"

- name: Install vsce
run: npm install -g @vscode/vsce
env:
VSCE_VERSION: ${{ needs.setup.outputs.vsceVersion }}
run: npm install -g "@vscode/vsce@${VSCE_VERSION}"

- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: extension-${{ inputs.version }}

- name: Publish to VS Marketplace
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}
run: |
echo "Publishing version ${{ inputs.version }} to VS Marketplace"
if [ "${{ inputs.isPreRelease }}" = "true" ]; then
vsce publish --pre-release --packagePath "./${{ needs.setup.outputs.packageName }}" -p ${{ secrets.VSCE_PAT }}
vsce publish --pre-release --packagePath "./${{ needs.setup.outputs.packageName }}"
else
vsce publish --packagePath "./${{ needs.setup.outputs.packageName }}" -p ${{ secrets.VSCE_PAT }}
vsce publish --packagePath "./${{ needs.setup.outputs.packageName }}"
fi

publishOVSX:
name: Publish to Open VSX
needs: setup
runs-on: ubuntu-24.04
environment: publish
permissions:
contents: read
if: ${{ needs.setup.outputs.hasOvsxPat == 'true' }}
steps:
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: "22"

- name: Install ovsx
run: npm install -g ovsx
run: npm install -g ovsx@1.0.2

- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: extension-${{ inputs.version }}

- name: Publish to Open VSX
env:
OVSX_PAT: ${{ secrets.OVSX_PAT }}
run: |
echo "Publishing version ${{ inputs.version }} to Open VSX"
if [ "${{ inputs.isPreRelease }}" = "true" ]; then
ovsx publish "./${{ needs.setup.outputs.packageName }}" --pre-release -p ${{ secrets.OVSX_PAT }}
ovsx publish "./${{ needs.setup.outputs.packageName }}" --pre-release
else
ovsx publish "./${{ needs.setup.outputs.packageName }}" -p ${{ secrets.OVSX_PAT }}
ovsx publish "./${{ needs.setup.outputs.packageName }}"
fi

publishGH:
name: Create GitHub ${{ inputs.isPreRelease && 'Pre-' || '' }}Release
needs: setup
runs-on: ubuntu-24.04
permissions:
# Required to create the release and generate release notes
contents: write
pull-requests: read
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ on:
- "!v*-pre"

permissions:
# Required to publish a release
contents: write
pull-requests: read
contents: read

jobs:
package:
Expand All @@ -20,6 +18,7 @@ jobs:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0
persist-credentials: false

- name: Verify tag is on main
run: |
Expand Down Expand Up @@ -74,6 +73,10 @@ jobs:
publish:
name: Publish Extension and Create Release
needs: package
permissions:
# Required to create the GitHub release
contents: write
pull-requests: read
uses: ./.github/workflows/publish-extension.yaml
with:
version: ${{ needs.package.outputs.version }}
Expand Down