Publish #195
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish | |
on: | |
workflow_dispatch: | |
inputs: | |
lsp_branch: | |
description: "Branch name to publish" | |
default: "main" | |
stable_release: | |
description: "Publish stable release version" | |
default: false | |
type: boolean | |
jobs: | |
publish: | |
strategy: | |
matrix: | |
include: | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
code-target: win32-x64 | |
- os: windows-latest | |
target: aarch64-pc-windows-msvc | |
code-target: win32-arm64 | |
- os: ubuntu-22.04 | |
target: x86_64-unknown-linux-gnu | |
code-target: linux-x64 | |
- os: ubuntu-22.04 | |
target: aarch64-unknown-linux-gnu | |
code-target: linux-arm64 | |
# - os: ubuntu-20.04 | |
# target: armv7-unknown-linux-gnueabihf | |
# code-target: linux-armhf | |
- os: macos-13 | |
target: x86_64-apple-darwin | |
code-target: darwin-x64 | |
- os: macos-14 | |
target: aarch64-apple-darwin | |
code-target: darwin-arm64 | |
env: | |
LLM_LS_TARGET: ${{ matrix.target }} | |
name: Publish in marketplace (VSCE) (${{ matrix.target }}) | |
runs-on: ${{ matrix.os }} | |
container: ${{ matrix.container }} | |
steps: | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{ env.FETCH_DEPTH }} | |
- name: Install VSCE | |
run: | | |
npm install | |
npm install -g @vscode/vsce | |
- name: Download artifact | |
id: download-artifact | |
uses: dawidd6/action-download-artifact@v3 | |
with: | |
github_token: ${{secrets.GITHUB_TOKEN}} | |
workflow: build.yml | |
repo: smallcloudai/refact-lsp | |
branch: ${{ inputs.lsp_branch }} | |
path: ./assets | |
name: dist-${{ matrix.target }} | |
- name: Package VSCE extension | |
shell: bash | |
run: | | |
chmod +x ./assets/refact-lsp* | |
if [[ ${{ inputs.stable_release }} != "true" ]]; then | |
export PRERELEASE=--pre-release | |
fi | |
echo "PRERELEASE=${PRERELEASE}" | |
vsce package --target ${{ matrix.code-target }} ${PRERELEASE} | |
- name: Publish VSCE extension | |
shell: bash | |
run: | | |
if [[ ${{ inputs.stable_release }} != "true" ]]; then | |
export PRERELEASE=--pre-release | |
fi | |
echo "PRERELEASE=${PRERELEASE}" | |
vsce publish --pat ${{secrets.VSCE_PAT}} ${PRERELEASE} --packagePath *.vsix | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: vscode-plugin-${{ matrix.target }} | |
path: ./*.vsix | |
notify: | |
needs: publish | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{ env.FETCH_DEPTH }} | |
- name: Setup vars | |
shell: bash | |
id: setupvars | |
run: | | |
if [[ ${{ inputs.stable_release }} != "true" ]]; then | |
echo "slack_notification_channel=prerelease" >> "$GITHUB_OUTPUT" | |
else | |
echo "slack_notification_channel=stable" >> "$GITHUB_OUTPUT" | |
fi | |
echo "plugin_version=$(cat package.json | jq -r '.version')" >> "$GITHUB_OUTPUT" | |
- name: Post to a Slack channel | |
id: slack | |
uses: slackapi/[email protected] | |
with: | |
payload: | | |
{ | |
"blocks": [ | |
{ | |
"type": "header", | |
"text": { | |
"type": "plain_text", | |
"text": "VSCode plugin ${{ steps.setupvars.outputs.plugin_version }} is released in ${{ steps.setupvars.outputs.slack_notification_channel }} channel", | |
"emoji": true | |
} | |
}, | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "by ${{ github.actor }}" | |
} | |
} | |
] | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK | |
- name: Notify to Discord | |
run: | | |
curl -X POST ${{ secrets.DISCORD_WEBHOOK_URL }} \ | |
-H "Content-Type: application/json" \ | |
-d '{"msg":"VSCode plugin ${{ steps.setupvars.outputs.plugin_version }} is released in ${{ steps.setupvars.outputs.slack_notification_channel }} channel"}' |