Skip to content

Commit f103f09

Browse files
committed
💚 automation for publishing
1 parent f41dd2d commit f103f09

File tree

2 files changed

+146
-0
lines changed

2 files changed

+146
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: Release VS Code Extension
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*' # Triggers on tags like v1.0.0, v1.1.0, etc.
7+
branches:
8+
- master # Only trigger on master branch
9+
10+
jobs:
11+
release:
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
18+
- name: Setup Node.js
19+
uses: actions/setup-node@v4
20+
with:
21+
node-version: '18'
22+
cache: 'npm'
23+
24+
- name: Install dependencies
25+
run: npm ci
26+
27+
- name: Extract version from tag
28+
id: extract_version
29+
run: |
30+
TAG_NAME=${GITHUB_REF#refs/tags/}
31+
VERSION=${TAG_NAME#v} # Remove 'v' prefix if present
32+
echo "version=${VERSION}" >> $GITHUB_OUTPUT
33+
echo "Extracted version: ${VERSION}"
34+
35+
- name: Update package.json version
36+
run: |
37+
npm version ${{ steps.extract_version.outputs.version }} --no-git-tag-version
38+
echo "Updated package.json version to ${{ steps.extract_version.outputs.version }}"
39+
40+
- name: Build extension
41+
run: npm run package
42+
43+
- name: Install vsce
44+
run: npm install -g @vscode/vsce
45+
46+
- name: Package extension
47+
run: vsce package
48+
49+
- name: Publish to VS Code Marketplace
50+
run: vsce publish -p ${{ secrets.VSCE_PAT }}
51+
env:
52+
VSCE_PAT: ${{ secrets.VSCE_PAT }}
53+
54+
- name: Get extension filename
55+
id: extension_file
56+
run: |
57+
EXTENSION_FILE=$(ls *.vsix | head -n 1)
58+
echo "filename=${EXTENSION_FILE}" >> $GITHUB_OUTPUT
59+
60+
- name: Create GitHub Release
61+
uses: actions/create-release@v1
62+
env:
63+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
64+
with:
65+
tag_name: ${{ github.ref_name }}
66+
release_name: Release ${{ github.ref_name }}
67+
body: |
68+
## Release ${{ github.ref_name }}
69+
70+
### Changes
71+
- Automatic release for version ${{ steps.extract_version.outputs.version }}
72+
73+
### Installation
74+
You can install this extension from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=DeeprajBaidya.snippetizer) or download the VSIX file below.
75+
draft: false
76+
prerelease: false
77+
78+
- name: Upload Release Asset
79+
uses: actions/upload-release-asset@v1
80+
env:
81+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
82+
with:
83+
upload_url: ${{ steps.create_release.outputs.upload_url }}
84+
asset_path: ./${{ steps.extension_file.outputs.filename }}
85+
asset_name: ${{ steps.extension_file.outputs.filename }}
86+
asset_content_type: application/zip
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Create Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
release:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write
13+
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
18+
- name: Setup Node.js
19+
uses: actions/setup-node@v4
20+
with:
21+
node-version: '18'
22+
cache: 'npm'
23+
24+
- name: Install dependencies
25+
run: npm ci
26+
27+
- name: Build extension
28+
run: npm run compile
29+
30+
- name: Package extension
31+
run: |
32+
npm install -g @vscode/vsce
33+
vsce package
34+
35+
- name: Create Release
36+
id: create_release
37+
uses: actions/create-release@v1
38+
env:
39+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40+
with:
41+
tag_name: ${{ github.ref_name }}
42+
release_name: Release ${{ github.ref_name }}
43+
body: |
44+
## What's Changed
45+
46+
Release ${{ github.ref_name }}
47+
48+
See the [CHANGELOG.md](CHANGELOG.md) for detailed changes.
49+
draft: false
50+
prerelease: ${{ contains(github.ref_name, '-') }}
51+
52+
- name: Upload Release Asset
53+
uses: actions/upload-release-asset@v1
54+
env:
55+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
56+
with:
57+
upload_url: ${{ steps.create_release.outputs.upload_url }}
58+
asset_path: ./snippetizer-*.vsix
59+
asset_name: snippetizer-${{ github.ref_name }}.vsix
60+
asset_content_type: application/zip

0 commit comments

Comments
 (0)