-
Notifications
You must be signed in to change notification settings - Fork 1.6k
157 lines (129 loc) · 5.81 KB
/
daily-release.yaml
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
156
157
name: Daily release
on:
push:
paths:
- .github/workflows/daily-release.yaml
schedule:
- cron: 00 03 * * *
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checking out for ${{ github.ref }}
uses: actions/checkout@v2
- run: npx version-from-git --no-git-tag-version
- run: npm ci --no-production
- name: Propagate versions
run: node_modules/.bin/lerna version --exact --force-publish --no-git-tag-version --no-push --yes `cat package.json | jq -r .version`
- run: npm run bootstrap
- run: npm run build
env:
NODE_ENV: production
- run: mkdir -p artifacts/tarballs
- name: Run npm pack api
run: |
cd packages/api
npm pack
cp *.tgz ../../artifacts/tarballs
- name: Run npm pack bundle
run: |
cd packages/bundle
npm pack
cp *.tgz ../../artifacts/tarballs
- name: Run npm pack component
run: |
cd packages/component
npm pack
cp *.tgz ../../artifacts/tarballs
- name: Run npm pack core
run: |
cd packages/core
npm pack
cp *.tgz ../../artifacts/tarballs
- name: Run npm pack directlinespeech
run: |
cd packages/directlinespeech
npm pack
cp *.tgz ../../artifacts/tarballs
- name: Upload bundles
uses: actions/upload-artifact@v2
with:
name: bundles
path: packages/bundle/dist/**/*
- name: Upload tarballs
uses: actions/upload-artifact@v2
with:
name: tarballs
path: artifacts/tarballs/**/*
release:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v2
with:
name: bundles
- uses: actions/download-artifact@v2
with:
name: tarballs
- id: compute_hash
name: Compute build metadata
run: |
echo "::set-output name=git_short_sha::`echo ${{ github.sha }} | cut -c 1-7`"
echo "::set-output name=package_version::`tar -xOzf botframework-webchat-4*.tgz package/package.json | jq -r '.version'`"
echo "::set-output name=release_date::`date \"+%Y-%m-%d %R:%S\"`"
echo "::set-output name=release_tag_name::daily"
echo "::set-output name=sha384_es5::`cat webchat-es5.js | openssl dgst -sha384 -binary | openssl base64 -A`"
echo "::set-output name=sha384_full::`cat webchat.js | openssl dgst -sha384 -binary | openssl base64 -A`"
echo "::set-output name=sha384_minimal::`cat webchat-minimal.js | openssl dgst -sha384 -binary | openssl base64 -A`"
- name: Display build metadata
run: |
echo git_short_sha=${{ steps.compute_hash.outputs.git_short_sha }}
echo package_version=${{ steps.compute_hash.outputs.package_version }}
echo release_date=${{ steps.compute_hash.outputs.release_date }}
echo release_tag_name=${{ steps.compute_hash.outputs.release_tag_name }}
echo sha384_es5=${{ steps.compute_hash.outputs.sha384_es5 }}
echo sha384_full=${{ steps.compute_hash.outputs.sha384_full }}
echo sha384_minimal=${{ steps.compute_hash.outputs.sha384_minimal }}
- name: Delete existing release
# When this workflow is run in its first time, or 2+ are running side-by-side, the release may not exists. It is okay to ignore 404s.
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release delete ${{ steps.compute_hash.outputs.release_tag_name }} --repo ${{ github.repository }} --yes
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.compute_hash.outputs.release_tag_name }}
release_name: Daily (${{ github.ref }})
body: |
This release will be updated daily. **Please do not use this build in production environment.**
| Build time | Run ID | Source version | Git ref | Package version |
| - | - | - | - | - |
| ${{ steps.compute_hash.outputs.release_date }}Z | [`${{ github.run_id }}`](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) | [`${{ steps.compute_hash.outputs.git_short_sha }}`](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) | `${{ github.ref }}` | `${{ steps.compute_hash.outputs.package_version }}` |
```html
<script
crossorigin="anonymous"
integrity="sha384-${{ steps.compute_hash.outputs.sha384_full }}"
src="https://github.com/microsoft/BotFramework-WebChat/releases/download/${{ steps.compute_hash.outputs.release_tag_name }}/webchat.js"
></script>
<script
crossorigin="anonymous"
integrity="sha384-${{ steps.compute_hash.outputs.sha384_es5 }}"
src="https://github.com/microsoft/BotFramework-WebChat/releases/download/${{ steps.compute_hash.outputs.release_tag_name }}/webchat-es5.js"
></script>
<script
crossorigin="anonymous"
integrity="sha384-${{ steps.compute_hash.outputs.sha384_minimal }}"
src="https://github.com/microsoft/BotFramework-WebChat/releases/download/${{ steps.compute_hash.outputs.release_tag_name }}/webchat-minimal.js"
></script>
```
> Note: the SHA384 hash may change daily.
draft: false
prerelease: true
- name: Upload assets
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ steps.compute_hash.outputs.release_tag_name }} *.js *.json *.tgz --repo ${{ github.repository }}