-
Notifications
You must be signed in to change notification settings - Fork 4
155 lines (153 loc) · 5.84 KB
/
Copy pathrelease.yml
File metadata and controls
155 lines (153 loc) · 5.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
name: Build & Release VS Code Dev Spaces
on:
schedule:
- cron: "0 8 * * *"
workflow_dispatch:
inputs:
publishToMarketPlace:
description: "Publish to VS Code Marketplace ?"
required: true
type: choice
options:
- "true"
- "false"
default: "false"
publishToOVSX:
description: "Publish to OpenVSX Registry ?"
required: true
type: choice
options:
- "true"
- "false"
default: "false"
publishPreRelease:
description: "Publish a pre-release ?"
required: true
type: choice
options:
- "true"
- "false"
default: "true"
jobs:
should-build-change:
runs-on: ubuntu-latest
outputs:
repo-cache-hit: ${{ steps.cache-last-commit.outputs.cache-hit }}
steps:
- uses: actions/checkout@v5
with:
repository: "redhat-developer/devspaces-remote-ssh"
fetch-depth: 2
path: devspaces-remote-ssh
- run: |
pushd devspaces-remote-ssh
git rev-parse HEAD >> ../lastCommit
- name: Check New Changes
id: cache-last-commit
uses: actions/cache@v5
with:
path: lastCommit
key: lastCommit-${{ hashFiles('lastCommit') }}
packaging-job:
runs-on: ubuntu-latest
needs: should-build-change
if: ${{ needs.should-build-change.outputs.repo-cache-hit != 'true' || github.event_name != 'schedule' }}
steps:
- name: Checkout Dev Spaces Remote SSH
uses: actions/checkout@v5
with:
repository: redhat-developer/devspaces-remote-ssh
path: devspaces-remote-ssh
- name: Set Up NodeJS
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Install NodeJS dependencies
run: npm install -g typescript "@vscode/vsce" "ovsx"
- name: Build Extension
run: |
pushd devspaces-remote-ssh
echo "EXT_VERSION=$(cat package.json | jq -r .version)" >> $GITHUB_ENV
npm install
npm run compile
npm run vscode:prepublish
- name: Prepare Pre-Release
if: ${{ github.event_name == 'schedule' || inputs.publishPreRelease == 'true' }}
run: |
pushd devspaces-remote-ssh
npm run prepare-pre-release
echo "publishPreReleaseFlag=--pre-release" >> $GITHUB_ENV
- name: Package devspaces-remote-ssh
run: |
pushd devspaces-remote-ssh
for target in win32-x64 win32-arm64 linux-x64 linux-arm64 darwin-x64 darwin-arm64; do
npm run package-oc ${target}
vsce package ${{ env.publishPreReleaseFlag }} --target ${target} -o ../devspaces-remote-ssh-${target}-${{ env.EXT_VERSION }}-${GITHUB_RUN_NUMBER}.vsix
rm -rf out/oc/
done
vsce package ${{ env.publishPreReleaseFlag }} -o ../devspaces-remote-ssh-universal-${{ env.EXT_VERSION }}-${GITHUB_RUN_NUMBER}.vsix
- name: Upload VSIX Artifacts
uses: actions/upload-artifact@v5
with:
name: devspaces-remote-ssh
path: |
devspaces-remote-ssh-*-${{ env.EXT_VERSION }}-${{github.run_number}}.vsix
if-no-files-found: error
- name: Publish to GH Release Tab
if: ${{ inputs.publishToMarketPlace == 'true' && inputs.publishToOVSX == 'true' }}
uses: "marvinpinto/action-automatic-releases@919008cf3f741b179569b7a6fb4d8860689ab7f0"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "${{ env.EXT_VERSION }}"
title: "${{ env.EXT_VERSION }}"
draft: true
files: |
devspaces-remote-ssh-*-${{ env.EXT_VERSION }}-${{ github.run_number }}.vsix
release-job:
environment: ${{ (inputs.publishToMarketPlace == 'true' || inputs.publishToOVSX == 'true') && 'release' || 'pre-release' }}
runs-on: ubuntu-latest
needs: packaging-job
steps:
- name: Set Up NodeJS
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Install dependencies
run: |
npm install -g typescript "@vscode/vsce" "ovsx"
- name: Download VSIX
uses: actions/download-artifact@v5
- name: Publish to VS Code Marketplace
if: ${{ github.event_name == 'schedule' || inputs.publishToMarketPlace == 'true' || inputs.publishPreRelease == 'true' }}
run: |
for platformVsix in devspaces-remote-ssh-*-${GITHUB_RUN_NUMBER}.vsix; do
vsce publish --skip-duplicate -p ${{ secrets.VSCODE_MARKETPLACE_TOKEN }} --packagePath ${platformVsix}
done
- name: Publish to OpenVSX Registry
if: ${{ github.event_name == 'schedule' || inputs.publishToOVSX == 'true' || inputs.publishPreRelease == 'true' }}
run: |
for platformVsix in devspaces-remote-ssh-*-${GITHUB_RUN_NUMBER}.vsix; do
ovsx publish --skip-duplicate -p ${{ secrets.OVSX_MARKETPLACE_TOKEN }} --packagePath ${platformVsix}
done
- name: Delete saved artifact
uses: geekyeggo/delete-artifact@e46cfb9575865f907c2beb2e4170b5f4c7d77c52
with:
name: devspaces-remote-ssh
post-release-job:
if: ${{ inputs.publishToMarketPlace == 'true' && inputs.publishToOVSX == 'true' }}
runs-on: ubuntu-latest
needs: release-job
steps:
- name: Check Out Dev Spaces Remote SSH
uses: actions/checkout@v5
- name: Set Up NodeJS
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Upversion for Development
run: |
tag=`npm version --no-git-tag-version patch`
git config --global user.email "devspaces-remote-ssh-bot@users.noreply.github.com"
git config --global user.name "devspaces-remote-ssh-bot"
git commit -am "Upversion to ${tag#v}"
git push origin