Skip to content

Commit f03ca46

Browse files
committed
Initial commit
0 parents  commit f03ca46

25 files changed

+1116
-0
lines changed

.commitlintrc.yml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Commitlint configuration for conventional commits
2+
# Based on: https://www.conventionalcommits.org/
3+
4+
extends:
5+
- '@commitlint/config-conventional'
6+
7+
rules:
8+
# Type enum - allowed commit types
9+
type-enum:
10+
- 2 # Level: error
11+
- always
12+
- # Allowed types:
13+
- feat # New feature
14+
- fix # Bug fix
15+
- docs # Documentation only changes
16+
- style # Code style changes (formatting, missing semi-colons, etc)
17+
- refactor # Code refactoring (neither fixes a bug nor adds a feature)
18+
- perf # Performance improvements
19+
- test # Adding or updating tests
20+
- build # Changes to build system or dependencies
21+
- ci # CI/CD configuration changes
22+
- chore # Other changes that don't modify src or test files
23+
- revert # Revert a previous commit
24+
25+
# Type case should be lowercase
26+
type-case:
27+
- 2
28+
- always
29+
- lower-case
30+
31+
# Type must not be empty
32+
type-empty:
33+
- 2
34+
- never
35+
36+
# Scope case should be lowercase
37+
scope-case:
38+
- 2
39+
- always
40+
- lower-case
41+
42+
# Subject must not be empty
43+
subject-empty:
44+
- 2
45+
- never
46+
47+
# Subject must not end with a period
48+
subject-full-stop:
49+
- 2
50+
- never
51+
- '.'
52+
53+
# Disable subject-case to allow uppercase abbreviations (PR, API, CLI, etc.)
54+
subject-case:
55+
- 0
56+
57+
# Header (first line) max length
58+
header-max-length:
59+
- 2
60+
- always
61+
- 72
62+
63+
# Body should have a blank line before it
64+
body-leading-blank:
65+
- 1 # Warning level
66+
- always
67+
68+
# Footer should have a blank line before it
69+
footer-leading-blank:
70+
- 1 # Warning level
71+
- always
72+
73+
# Body max line length
74+
body-max-line-length:
75+
- 1 # Warning level
76+
- always
77+
- 100
78+
79+
# Help URL shown in error messages
80+
helpUrl: 'https://www.conventionalcommits.org/'

.github/workflows/commit-lint.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Lint Commit Messages
2+
3+
on:
4+
pull_request:
5+
types: [opened, edited, reopened, synchronize]
6+
7+
permissions:
8+
contents: read
9+
pull-requests: read
10+
11+
jobs:
12+
lint-pr-title:
13+
name: Lint PR Title
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout code
17+
uses: actions/checkout@v4
18+
19+
- name: Setup Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: '20'
23+
24+
- name: Install commitlint
25+
run: |
26+
npm install --save-dev @commitlint/[email protected] @commitlint/[email protected]
27+
28+
- name: Validate PR title
29+
env:
30+
PR_TITLE: ${{ github.event.pull_request.title }}
31+
run: |
32+
echo "Validating PR title: $PR_TITLE"
33+
echo "$PR_TITLE" | npx commitlint --verbose
34+
35+
commitlint:
36+
name: Lint Commit Messages
37+
runs-on: ubuntu-latest
38+
steps:
39+
- name: Checkout code
40+
uses: actions/checkout@v4
41+
with:
42+
fetch-depth: 0 # Fetch all history for all branches and tags
43+
44+
- name: Setup Node.js
45+
uses: actions/setup-node@v4
46+
with:
47+
node-version: '20'
48+
49+
- name: Install commitlint
50+
run: |
51+
npm install --save-dev @commitlint/[email protected] @commitlint/[email protected]
52+
53+
- name: Validate PR commits
54+
run: |
55+
# Get the base branch (usually main)
56+
BASE_SHA=$(git merge-base origin/${{ github.base_ref }} HEAD)
57+
58+
# Lint all commits in the PR
59+
npx commitlint --from $BASE_SHA --to HEAD --verbose

.github/workflows/publish.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Publish to VS Marketplace
2+
3+
on:
4+
workflow_dispatch:
5+
6+
permissions:
7+
contents: write
8+
actions: read
9+
10+
jobs:
11+
publish:
12+
runs-on: windows-latest
13+
outputs:
14+
version: ${{ steps.artifact_manifest.outputs.version }}
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
19+
- name: 1. Download artifact
20+
id: download-artifact
21+
uses: dawidd6/action-download-artifact@v6
22+
with:
23+
workflow: release_build_and_deploy.yml
24+
workflow_conclusion: success
25+
26+
- name: 2. Parse Artifact Manifest
27+
id: artifact_manifest
28+
uses: ActionsTools/read-json-action@main
29+
with:
30+
file_path: ./artifact/CodingWithCalvin.CouchbaseExplorer.info
31+
32+
- name: 3. Create Tag & Release
33+
uses: ncipollo/[email protected]
34+
with:
35+
artifacts: ./artifact/CodingWithCalvin.CouchbaseExplorer.vsix
36+
generateReleaseNotes: true
37+
makeLatest: true
38+
commit: ${{ steps.artifact_manifest.outputs.sha }}
39+
tag: ${{ steps.artifact_manifest.outputs.version }}
40+
41+
- name: 4. Publish Release to Marketplace
42+
if: success()
43+
uses: CodingWithCalvin/GHA-VSMarketplacePublisher@v1
44+
with:
45+
marketplace-pat: ${{ secrets.VS_PAT }}
46+
publish-manifest-path: ./resources/extension.manifest.json
47+
vsix-path: ./artifact/CodingWithCalvin.CouchbaseExplorer.vsix
48+
49+
notify:
50+
needs: publish
51+
uses: CodingWithCalvin/.github/.github/workflows/bluesky-post.yml@main
52+
with:
53+
post_text: |
54+
🚀 Couchbase Explorer v${{ needs.publish.outputs.version }} for #VisualStudio has been released!
55+
56+
[Check out the release notes here!](https://github.com/${{ github.repository }}/releases/tag/${{ needs.publish.outputs.version }})
57+
58+
Marketplace: https://marketplace.visualstudio.com/items?itemName=CodingWithCalvin.VS-CouchbaseExplorer
59+
secrets:
60+
BLUESKY_USERNAME: ${{ secrets.BLUESKY_USERNAME }}
61+
BLUESKY_APP_PASSWORD: ${{ secrets.BLUESKY_APP_PASSWORD }}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: 'Build and Deploy'
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
types: [opened, reopened]
7+
push:
8+
branches:
9+
- main
10+
tags-ignore:
11+
- '[0-9]+.[0-9]+.[0-9]+.[0-9]+'
12+
13+
jobs:
14+
Release-Build-and-Deploy:
15+
runs-on: windows-latest
16+
17+
steps:
18+
- uses: actions/checkout@v4
19+
- uses: microsoft/setup-msbuild@v2
20+
- uses: nuget/setup-nuget@v2
21+
22+
- name: 1. Versioning Release
23+
id: step-version
24+
uses: CodingWithCalvin/GHA-VSVsixVersioner@v1
25+
with:
26+
extension-manifest-file: 'src/CodingWithCalvin.CouchbaseExplorer/source.extension.vsixmanifest'
27+
extension-source-file: 'src/CodingWithCalvin.CouchbaseExplorer/source.extension.cs'
28+
29+
- name: 2. Restoring Packages
30+
run: nuget restore src/CodingWithCalvin.CouchbaseExplorer.slnx
31+
32+
- name: 3. Building Project
33+
run: msbuild 'src/CodingWithCalvin.CouchbaseExplorer/CodingWithCalvin.CouchbaseExplorer.csproj' /p:configuration='Release' /p:platform='x64' /p:DeployExtension=False
34+
35+
- name: 4. Create Information File
36+
uses: jsdaniell/[email protected]
37+
with:
38+
name: 'src/CodingWithCalvin.CouchbaseExplorer/bin/x64/Release/CodingWithCalvin.CouchbaseExplorer.info'
39+
json: '{"sha":"${{ github.sha }}", "version":"${{ steps.step-version.outputs.version }}"}'
40+
41+
- name: 5. Publishing Build Artifact
42+
uses: actions/upload-artifact@v4
43+
with:
44+
path: |
45+
src/CodingWithCalvin.CouchbaseExplorer/bin/x64/Release/CodingWithCalvin.CouchbaseExplorer.info
46+
src/CodingWithCalvin.CouchbaseExplorer/bin/x64/Release/CodingWithCalvin.CouchbaseExplorer.vsix

0 commit comments

Comments
 (0)