5
5
branches :
6
6
- master
7
7
paths-ignore :
8
- - ' docs/**'
9
- - ' .vscode/**'
10
- - ' .github/**'
11
- - ' *.md'
12
- - ' **/*.md'
8
+ - " docs/**"
9
+ - " .vscode/**"
10
+ - " .github/**"
11
+ - " *.md"
12
+ - " **/*.md"
13
13
pull_request :
14
14
branches :
15
15
- master
16
16
release :
17
17
types :
18
- - created
18
+ - released
19
19
jobs :
20
20
build :
21
21
timeout-minutes : 10
@@ -24,139 +24,151 @@ jobs:
24
24
matrix :
25
25
os : [ubuntu-latest, windows-latest, macOS-latest]
26
26
steps :
27
- - uses : actions/checkout@v2
28
- - run : git fetch --depth=1 origin +refs/tags/*:refs/tags/*
29
- - name : Set an output
30
- id : set-version
31
- if : runner.os == 'Linux'
32
- run : |
33
- set -x
34
- VERSION=$(jq -r '.version' package.json | cut -d- -f1)
35
- [ $GITHUB_EVENT_NAME == 'release' ] && VERSION=${{ github.event.release.tag_name }} && VERSION=${VERSION/v/}
36
- CHANGELOG=$(cat CHANGELOG.md | sed -n "/## \[${VERSION}\]/,/## /p" | sed '/^$/d;1d;$d')
37
- CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
38
- echo ::set-output name=changelog::$CHANGELOG
39
- git tag -l | cat
40
- [ $GITHUB_EVENT_NAME == 'push' ] && VERSION+=-beta && VERSION+=.$(($(git tag -l "v$VERSION.*" | sort -nt. -k4 2>/dev/null | tail -1 | cut -d. -f4)+1))
41
- [ $GITHUB_EVENT_NAME == 'pull_request' ] && VERSION+=-dev.${{ github.event.pull_request.number }}
42
- echo ::set-output name=version::$VERSION
43
- NAME=$(jq -r '.name' package.json)-$VERSION
44
- echo ::set-output name=name::$NAME
45
- tmp=$(mktemp)
46
- jq --arg version "$VERSION" '.version = $version' package.json > "$tmp" && mv "$tmp" package.json
47
- mkdir dist
48
- echo $VERSION > ./dist/.version
49
- echo $NAME > ./dist/.name
50
- - name : Use Node.js
51
- uses : actions/setup-node@v1
52
- with :
53
- node-version : 12.x
54
- - run : npm install
55
- - run : npm run compile
56
- - name : npm test
57
-
58
- with :
59
- run : npm run test
60
- - name : Build package
61
- if : runner.os == 'Linux'
62
- run : |
63
- ./node_modules/.bin/vsce package -o ./dist/${{ steps.set-version.outputs.name }}.vsix
64
- - uses : actions/upload-artifact@v2
65
- if : runner.os == 'Linux'
66
- with :
67
- name : vsix
68
- path : |
69
- ./dist/${{ steps.set-version.outputs.name }}.vsix
70
- ./dist/.name
71
- ./dist/.version
27
+ - uses : actions/checkout@v2
28
+ - run : git fetch --depth=1 origin +refs/tags/*:refs/tags/*
29
+ - name : Set an output
30
+ id : set-version
31
+ if : runner.os == 'Linux'
32
+ run : |
33
+ set -x
34
+ VERSION=$(jq -r '.version' package.json | cut -d- -f1)
35
+ [ $GITHUB_EVENT_NAME == 'release' ] && VERSION=${{ github.event.release.tag_name }} && VERSION=${VERSION/v/}
36
+ CHANGELOG=$(cat CHANGELOG.md | sed -n "/## \[${VERSION}\]/,/## /p" | sed '/^$/d;1d;$d')
37
+ CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
38
+ echo ::set-output name=changelog::$CHANGELOG
39
+ git tag -l | cat
40
+ [ $GITHUB_EVENT_NAME == 'push' ] && VERSION+=-beta && VERSION+=.$(($(git tag -l "v$VERSION.*" | sort -nt. -k4 2>/dev/null | tail -1 | cut -d. -f4)+1))
41
+ [ $GITHUB_EVENT_NAME == 'pull_request' ] && VERSION+=-dev.${{ github.event.pull_request.number }}
42
+ echo ::set-output name=version::$VERSION
43
+ NAME=$(jq -r '.name' package.json)-$VERSION
44
+ echo ::set-output name=name::$NAME
45
+ tmp=$(mktemp)
46
+ jq --arg version "$VERSION" '.version = $version' package.json > "$tmp" && mv "$tmp" package.json
47
+ mkdir dist
48
+ echo $VERSION > .version
49
+ echo $NAME > .name
50
+ - name : Use Node.js
51
+ uses : actions/setup-node@v1
52
+ with :
53
+ node-version : 12.x
54
+ - run : npm install
55
+ - run : npm run compile
56
+ - name : npm test
57
+
58
+ with :
59
+ run : npm run test
60
+ - name : Build package
61
+ if : runner.os == 'Linux'
62
+ run : |
63
+ npx vsce package -o ${{ steps.set-version.outputs.name }}.vsix
64
+ - uses : actions/upload-artifact@v2
65
+ if : runner.os == 'Linux'
66
+ with :
67
+ name : ${{ steps.set-version.outputs.name }}.vsix
68
+ path : ${{ steps.set-version.outputs.name }}.vsix
69
+ - uses : actions/upload-artifact@v2
70
+ if : runner.os == 'Linux'
71
+ with :
72
+ name : meta
73
+ path : |
74
+ .name
75
+ .version
72
76
beta :
73
77
if : (github.event_name == 'push')
74
78
runs-on : ubuntu-latest
75
79
needs : build
76
80
steps :
77
- - uses : actions/download-artifact@v2
78
- with :
79
- name : vsix
80
- path : ./dist/
81
- - name : Set an output
82
- id : set-version
83
- if : runner.os == 'Linux'
84
- run : |
85
- set -x
86
- echo ::set-output name=version::`cat ./dist/.version`
87
- echo ::set-output name=name::`cat ./dist/.name`
88
- - name : Create Release
89
- id : create_release
90
- uses : actions/create-release@v1
91
- if : runner.os == 'Linux'
92
- env :
93
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
94
- with :
95
- tag_name : v${{ steps.set-version.outputs.version }}
96
- release_name : v${{ steps.set-version.outputs.version }}
97
- prerelease : ${{ github.event_name != 'release' }}
98
- body : |
99
- Changes in this release
100
- ${{ steps.set-version.outputs.changelog }}
101
- - name : Upload Release Asset
102
- id : upload-release-asset
103
- uses : actions/upload-release-asset@v1
104
- if : runner.os == 'Linux'
105
- env :
106
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
107
- with :
108
- upload_url : ${{ steps.create_release.outputs.upload_url }}
109
- asset_path : ./dist/${{ steps.set-version.outputs.name }}.vsix
110
- asset_name : ${{ steps.set-version.outputs.name }}.vsix
111
- asset_content_type : application/zip
81
+ - uses : actions/download-artifact@v2
82
+ with :
83
+ name : meta
84
+ path : .
85
+ - name : Set an output
86
+ id : set-version
87
+ if : runner.os == 'Linux'
88
+ run : |
89
+ set -x
90
+ echo ::set-output name=version::`cat .version`
91
+ echo ::set-output name=name::`cat .name`
92
+ - uses : actions/download-artifact@v2
93
+ with :
94
+ name : ${{ steps.set-version.outputs.name }}.vsix
95
+ - name : Create Release
96
+ id : create_release
97
+ uses : actions/create-release@v1
98
+ if : runner.os == 'Linux'
99
+ env :
100
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
101
+ with :
102
+ tag_name : v${{ steps.set-version.outputs.version }}
103
+ release_name : v${{ steps.set-version.outputs.version }}
104
+ prerelease : ${{ github.event_name != 'release' }}
105
+ body : |
106
+ Changes in this release
107
+ ${{ steps.set-version.outputs.changelog }}
108
+ - name : Upload Release Asset
109
+ id : upload-release-asset
110
+ uses : actions/upload-release-asset@v1
111
+ if : runner.os == 'Linux'
112
+ env :
113
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
114
+ with :
115
+ upload_url : ${{ steps.create_release.outputs.upload_url }}
116
+ asset_path : ${{ steps.set-version.outputs.name }}.vsix
117
+ asset_name : ${{ steps.set-version.outputs.name }}.vsix
118
+ asset_content_type : application/zip
112
119
publish :
113
120
if : github.event_name == 'release'
114
121
runs-on : ubuntu-latest
115
122
needs : build
116
123
steps :
117
- - uses : actions/checkout@v2
118
- with :
119
- ref : master
120
- token : ${{ secrets.TOKEN }}
121
- - uses : actions/download-artifact@v2
122
- with :
123
- name : vsix
124
- path : ./dist/
125
- - name : Use Node.js
126
- uses : actions/setup-node@v1
127
- with :
128
- node-version : 12.x
129
- - name : Prepare build
130
- id : set-version
131
- run : |
132
- VERSION=`cat ./dist/.version`
133
- NEXT_VERSION=`cat ./dist/.version | awk -F. '/[0-9]+\./{$NF++;print}' OFS=.`
134
- echo ::set-output name=name::`cat ./dist/.name`
135
- tmp=$(mktemp)
136
- git config --global user.name 'ProjectBot'
137
- git config --global user.email '[email protected] '
138
- jq --arg version "${NEXT_VERSION}-SNAPSHOT" '.version = $version' package.json > "$tmp" && mv "$tmp" package.json
139
- git add package.json
140
- git commit -m 'auto bump version with release'
141
- jq --arg version "$VERSION" '.version = $version' package.json > "$tmp" && mv "$tmp" package.json
142
- jq '.enableProposedApi = false' package.json > "$tmp" && mv "$tmp" package.json
143
- npm install
144
- git push
145
- - name : Upload Release Asset
146
- id : upload-release-asset
147
- uses : actions/upload-release-asset@v1
148
- if : runner.os == 'Linux'
149
- env :
150
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
151
- with :
152
- upload_url : ${{ github.event.release.upload_url }}
153
- asset_path : ./dist/${{ steps.set-version.outputs.name }}.vsix
154
- asset_name : ${{ steps.set-version.outputs.name }}.vsix
155
- asset_content_type : application/zip
156
- - name : Publish to VSCode Marketplace
157
- run : |
158
- [ -n "${{ secrets.VSCE_TOKEN }}" ] && ./node_modules/.bin/vsce publish -p ${{ secrets.VSCE_TOKEN }} || true
159
- - name : Publish to Open VSX Registry
160
- run : |
161
- [ -n "${{ secrets.OVSX_TOKEN }}" ] && ./node_modules/.bin/ovsx publish --pat ${{ secrets.OVSX_TOKEN }} || true
162
-
124
+ - uses : actions/checkout@v2
125
+ with :
126
+ ref : master
127
+ token : ${{ secrets.TOKEN }}
128
+ - uses : actions/download-artifact@v2
129
+ with :
130
+ name : meta
131
+ path : .
132
+ - name : Use Node.js
133
+ uses : actions/setup-node@v1
134
+ with :
135
+ node-version : 12.x
136
+ - name : Prepare build
137
+ id : set-version
138
+ run : |
139
+ VERSION=`cat .version`
140
+ NEXT_VERSION=`cat .version | awk -F. '/[0-9]+\./{$NF++;print}' OFS=.`
141
+ echo ::set-output name=name::`cat .name`
142
+ tmp=$(mktemp)
143
+ git config --global user.name 'ProjectBot'
144
+ git config --global user.email '[email protected] '
145
+ jq --arg version "${NEXT_VERSION}-SNAPSHOT" '.version = $version' package.json > "$tmp" && mv "$tmp" package.json
146
+ git add package.json
147
+ git commit -m 'auto bump version with release'
148
+ jq --arg version "$VERSION" '.version = $version' package.json > "$tmp" && mv "$tmp" package.json
149
+ jq '.enableProposedApi = false' package.json > "$tmp" && mv "$tmp" package.json
150
+ npm install
151
+ git push
152
+ echo ::set-output name=ovsx::`cat .name`
153
+ - uses : actions/download-artifact@v2
154
+ with :
155
+ name : ${{ steps.set-version.outputs.name }}.vsix
156
+ - name : Upload Release Asset
157
+ id : upload-release-asset
158
+ uses : actions/upload-release-asset@v1
159
+ if : runner.os == 'Linux'
160
+ env :
161
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
162
+ with :
163
+ upload_url : ${{ github.event.release.upload_url }}
164
+ asset_path : ${{ steps.set-version.outputs.name }}.vsix
165
+ asset_name : ${{ steps.set-version.outputs.name }}.vsix
166
+ asset_content_type : application/zip
167
+ - name : Publish to VSCode Marketplace
168
+ run : |
169
+ [ -n "${{ secrets.VSCE_TOKEN }}" ] && \
170
+ npx vsce publish --packagePath ${{ steps.set-version.outputs.name }}.vsix -p ${{ secrets.VSCE_TOKEN }} || true
171
+ - name : Publish to Open VSX Registry
172
+ run : |
173
+ [ -n "${{ secrets.OVSX_TOKEN }}" ] && \
174
+ npx ovsx publish --packagePath ${{ steps.set-version.outputs.name }}.vsix --pat ${{ secrets.OVSX_TOKEN }} || true
0 commit comments