Skip to content

Daily release

Daily release #310

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 }}