Move away from set-output #316
Workflow file for this run
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: 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@v4 | |
- 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@v4 | |
with: | |
name: bundles | |
path: packages/bundle/dist/**/* | |
- name: Upload tarballs | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tarballs | |
path: artifacts/tarballs/**/* | |
release: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: bundles | |
- uses: actions/download-artifact@v4 | |
with: | |
name: tarballs | |
- id: compute_hash | |
name: Compute build metadata | |
run: | | |
echo git_short_sha=`echo ${{ github.sha }} | cut -c 1-7` | tee --append $GITHUB_OUTPUT | |
echo package_version=`tar -xOzf botframework-webchat-4*.tgz package/package.json | jq -r '.version'` | tee --append $GITHUB_OUTPUT | |
echo release_date=`date \"+%Y-%m-%d %R:%S\"` | tee --append $GITHUB_OUTPUT | |
echo release_tag_name=daily | tee --append $GITHUB_OUTPUT | |
echo sha384_es5=`cat webchat-es5.js | openssl dgst -sha384 -binary | openssl base64 -A` | tee --append $GITHUB_OUTPUT | |
echo sha384_full=`cat webchat.js | openssl dgst -sha384 -binary | openssl base64 -A` | tee --append $GITHUB_OUTPUT | |
echo sha384_minimal=`cat webchat-minimal.js | openssl dgst -sha384 -binary | openssl base64 -A` | tee --append $GITHUB_OUTPUT | |
- 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 }} |