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
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml → .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: Continuous Integration
name: Build

on:
workflow_dispatch:
pull_request:
branches:
- main
Expand Down
72 changes: 0 additions & 72 deletions .github/workflows/check-dist.yml

This file was deleted.

11 changes: 11 additions & 0 deletions .github/workflows/contributors.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Update Contributors

on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:

jobs:
contributors:
uses: CodingWithCalvin/.github/.github/workflows/contributors.yml@main
secrets: inherit
27 changes: 27 additions & 0 deletions .github/workflows/preview-changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Preview Changelog

run-name: Preview release notes for next release

on:
workflow_dispatch:

jobs:
generate:
name: Generate
uses: CodingWithCalvin/.github/.github/workflows/generate-changelog.yml@main
secrets: inherit

preview:
name: Display Preview
runs-on: ubuntu-latest
needs: generate

steps:
- name: Display changelog preview
run: |
echo "=========================================="
echo "CHANGELOG PREVIEW"
echo "=========================================="
echo ""
echo "${{ needs.generate.outputs.changelog }}"
shell: bash
99 changes: 99 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: Publish

on:
workflow_dispatch:
inputs:
version:
description: 'Version to release (e.g., 1.2.0)'
required: true
type: string

jobs:
changelog:
uses: CodingWithCalvin/.github/.github/workflows/generate-changelog.yml@main
secrets: inherit

release:
needs: changelog
runs-on: ubuntu-latest
outputs:
version: ${{ inputs.version }}

permissions:
contents: write

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .node-version
cache: npm

- name: Install Dependencies
run: npm ci

- name: Rebuild dist
run: npm run bundle

- name: Commit dist changes
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add dist/
git diff --staged --quiet || git commit -m "chore: rebuild dist for v${{ inputs.version }}"
git push

- name: Create and push tag
run: |
git tag v${{ inputs.version }}
git push origin v${{ inputs.version }}

- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ inputs.version }}
name: v${{ inputs.version }}
body: ${{ needs.changelog.outputs.changelog }}

notify-bluesky:
needs: release
uses: CodingWithCalvin/.github/.github/workflows/bluesky-post.yml@main
with:
post_text: |
🚀 Visual Studio VSIX Versioner v${{ needs.release.outputs.version }} has been released!

Version your Visual Studio extensions with ease!

[📋 Release Notes](https://github.com/${{ github.repository }}/releases/tag/v${{ needs.release.outputs.version }})
[📦 GitHub Marketplace](https://github.com/marketplace/actions/visual-studio-vsix-versioner)

#github #githubactions #devops #automation
embed_url: https://github.com/marketplace/actions/visual-studio-vsix-versioner
embed_title: Visual Studio VSIX Versioner
embed_description: Version your Visual Studio extensions with ease!
secrets:
BLUESKY_USERNAME: ${{ secrets.BLUESKY_USERNAME }}
BLUESKY_APP_PASSWORD: ${{ secrets.BLUESKY_APP_PASSWORD }}

notify-linkedin:
needs: release
uses: CodingWithCalvin/.github/.github/workflows/linkedin-post.yml@main
with:
post_text: |
🚀 Visual Studio VSIX Versioner v${{ needs.release.outputs.version }} has been released!

Version your Visual Studio extensions with ease!

📋 Release Notes: https://github.com/${{ github.repository }}/releases/tag/v${{ needs.release.outputs.version }}
📦 GitHub Marketplace: https://github.com/marketplace/actions/visual-studio-vsix-versioner

#github #githubactions #devops #automation
article_url: https://github.com/marketplace/actions/visual-studio-vsix-versioner
article_title: Visual Studio VSIX Versioner
article_description: Version your Visual Studio extensions with ease!
secrets:
LINKEDIN_ACCESS_TOKEN: ${{ secrets.LINKEDIN_ACCESS_TOKEN }}
LINKEDIN_CLIENT_ID: ${{ secrets.LINKEDIN_CLIENT_ID }}
64 changes: 40 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,60 @@
# CodingWithCalvin/GHA-VSVsixVersioner
# Visual Studio VSIX Versioner

GitHub Action to update your Visual Studio extension to a version that is based
off of the current date and the CI build number.
[![Build](https://img.shields.io/github/actions/workflow/status/CodingWithCalvin/GHA-VSVsixVersioner/build.yml?style=for-the-badge&label=Build)](https://github.com/CodingWithCalvin/GHA-VSVsixVersioner/actions/workflows/build.yml)
[![GitHub release](https://img.shields.io/github/v/release/CodingWithCalvin/GHA-VSVsixVersioner?style=for-the-badge)](https://github.com/CodingWithCalvin/GHA-VSVsixVersioner/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](LICENSE)

> _This action requires your extension to utilize the
> [VSIX Synchronizer](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.VsixSynchronizer64)
> model for managing the version in the `source.extension.vsixmanifest` and the
> `source.extension.cs` code-behind file that is automatically synchronized._
🏷️ Version your Visual Studio extensions automatically based on date and build number!

This GitHub Action updates your Visual Studio extension to a version based on the current date and CI build number.

## 🚀 Usage

You can use the Visual Studio VSIX Versioner GitHub Action by configuring a YAML-based workflow file, e.g. `.github/workflows/deploy.yml`.

> ⚠️ **Note:** This action requires your extension to utilize the [VSIX Synchronizer](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.VsixSynchronizer64) model for managing the version in the `source.extension.vsixmanifest` and the `source.extension.cs` code-behind file that is automatically synchronized.
>
> _Other versioning styles will be supported in the future_
> Other versioning styles will be supported in the future.

> ⚠️ **Note:** This action only works on a Windows-based runner.

## Usage
## 📥 Inputs

You can use the Visual Studio VSIX Versioner GitHub Action by configuring a
YAML-based workflow file, e.g. .github/workflows/deploy.yml.
| Input | Required | Description |
|-------|----------|-------------|
| `extension-manifest-file` | Yes | Path to your `source.extension.vsixmanifest` file |
| `extension-source-file` | Yes | Path to the source file generated from the manifest (using VSIX Synchronizer) |
| `build-number` | No | Build number to use for versioning (defaults to `run_number`) |

> _This action only works on a Windows-based runner_
## 📋 Example

## Version the VSIX _before_ building
Version the VSIX **before** building:

```yml
```yaml
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Visual Studio VSIX Versioner
uses: CodingWithCalvin/GHA-VSVsixVersioner@v2.0.0
uses: CodingWithCalvin/GHA-VSVsixVersioner@v2
with:
# REQUIRED
extension-manifest-file: './src/CodingWithCalvin.OpenBinFolder.Vsix/source.extension.vsixmanifest'
extension-source-file: './src/CodingWithCalvin.OpenBinFolder.Vsix/source.extension.cs'
extension-manifest-file: './src/MyExtension/source.extension.vsixmanifest'
extension-source-file: './src/MyExtension/source.extension.cs'

# OPTIONAL
build-number: ${{ github.run_number }}
```

## Inputs
## 👥 Contributors

<!-- readme: contributors -start -->
<!-- readme: contributors -end -->

## 📄 License

MIT License - see [LICENSE](LICENSE) for details.

---

| Input | Required | Description |
| ----------------------- | -------- | ----------------------------------------------------------------------------------------------------------- |
| extension-manifest-file | Y | Path to the manifest used for the extension |
| extension-source-file | Y | Path to the source file generated from the manifest (using VSIX Syncronizer) |
| build-number | N | Specify the build number you'd like to utilize, otherwise, defaults to the `run_number` of the build itself |
Made with ❤️ by Coding With Calvin
Loading