Publish embedded packages for Element Call releases #4
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: Build & publish embedded packages for releases | |
on: | |
release: | |
types: [published] | |
pull_request: | |
types: | |
- synchronize | |
- opened | |
- labeled | |
push: | |
branches: [livekit] | |
env: | |
# We perform a dry run for all events except releases. | |
# This is to help make sure that we notice if the packaging process has become | |
# broken ahead of a release. | |
DRY_RUN: ${{ github.event_name != 'release' }} | |
jobs: | |
build_element_call: | |
uses: ./.github/workflows/build-element-call.yaml | |
with: | |
vite_app_version: embedded-${{ github.event.release.tag_name }} | |
package: embedded | |
publish_tarball: | |
needs: build_element_call | |
if: always() | |
name: Publish tarball | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write # required to upload release asset | |
packages: write | |
env: | |
FILENAME_PREFIX: element-call-embedded-${{ github.event.release.tag_name }} | |
steps: | |
- name: 📥 Download built element-call artifact | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
run-id: ${{ github.event.workflow_run.id || github.run_id }} | |
name: build-output-embedded | |
path: ${{ env.FILENAME_PREFIX}} | |
- name: Create Tarball | |
run: tar --numeric-owner -cvzf ${{ env.FILENAME_PREFIX }}.tar.gz ${{ env.FILENAME_PREFIX }} | |
- name: Create Checksum | |
run: find ${{ env.FILENAME_PREFIX }} -type f -print0 | sort -z | xargs -0 sha256sum | tee ${{ env.FILENAME_PREFIX }}.sha256 | |
- name: Upload | |
if: ${{ !env.DRY_RUN }} | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: | | |
${{ env.FILENAME_PREFIX }}.tar.gz | |
${{ env.FILENAME_PREFIX }}.sha256 | |
publish_npm: | |
needs: build_element_call | |
if: always() | |
name: Publish NPM | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
id-token: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: 📥 Download built element-call artifact | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
run-id: ${{ github.event.workflow_run.id || github.run_id }} | |
name: build-output-embedded | |
path: embedded/web/dist | |
- name: Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: .node-version | |
registry-url: "https://registry.npmjs.org" | |
- name: Publish npm | |
working-directory: embedded/web | |
run: | | |
npm version ${{ github.event.release.tag_name }} --no-git-tag-version | |
echo "NPM_VERSION=$(jq '.version' --raw-output package.json)" >> "$GITHUB_ENV" | |
npm publish --provenance --access public ${{ env.DRY_RUN && '--dry-run' || '' }} | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_RELEASE_TOKEN }} | |
- name: Add release note | |
if: ${{ !env.DRY_RUN }} | |
uses: softprops/action-gh-release@v2 | |
with: | |
append_body: true | |
body: | | |
## NPM | |
This package provides an embedded build of Element Call that can be both used as a widget within another application. | |
``` | |
npm install @vector-im/element-call-embedded@${{ env.NPM_VERSION }} | |
``` | |
publish_android: | |
needs: build_element_call | |
if: always() | |
name: Publish Android AAR | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: 📥 Download built element-call artifact | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
run-id: ${{ github.event.workflow_run.id || github.run_id }} | |
name: build-output-embedded | |
path: embedded/android/lib/src/main/assets/element-call | |
- name: ☕️ Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: "temurin" | |
java-version: "17" | |
- name: Get version | |
run: | | |
VERSION=${{ github.event.release.tag_name }} | |
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV | |
- name: Publish AAR | |
if: ${{ !env.DRY_RUN }} | |
# TODO: can we do some kind of dry run? | |
env: | |
EC_VERSION: ${{ env.VERSION }} | |
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_RELEASE_USERNAME }} | |
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_RELEASE_PASSWORD }} | |
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_SIGNING_KEY }} | |
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }} | |
run: embedded/android/publish_android_package.sh -s | |
- name: Add release note | |
if: ${{ !env.DRY_RUN }} | |
uses: softprops/action-gh-release@v2 | |
with: | |
append_body: true | |
body: | | |
## Android AAR | |
This package provides an embedded build of Element Call that can be both used as a widget within another application. | |
``` | |
dependencies { | |
implementation 'io.element.call:element-call-embedded:${{ env.VERSION}}' | |
} | |
``` | |
publish_ios: | |
needs: build_element_call | |
if: always() | |
name: Publish SwiftPM Library | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
path: element-call | |
- name: 📥 Download built element-call artifact | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
run-id: ${{ github.event.workflow_run.id || github.run_id }} | |
name: build-output-embedded | |
path: element-call/embedded/ios/Sources/dist | |
- name: Get version | |
run: | | |
VERSION=${{ github.event.release.tag_name }} | |
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV | |
- name: Checkout element-call-swift | |
uses: actions/checkout@v4 | |
with: | |
repository: element-hq/element-call-swift | |
path: element-call-swift | |
token: ${{ secrets.ELEMENT_BOT_TOKEN }} | |
- name: Copy files | |
run: rsync -a --delete --exclude .git element-call/embedded/ios/ element-call-swift | |
- name: Commit and tag | |
working-directory: element-call-swift | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "Element CI" | |
git add -A | |
git commit -am "Release ${{ env.VERSION }}" | |
git tag -a ${{ env.VERSION }} -m "${{ github.event.release.html_url }}" | |
- name: Push | |
if: ${{ !env.DRY_RUN }} | |
working-directory: element-call-swift | |
run: | | |
git push --tags | |
- name: Add release note | |
if: ${{ !env.DRY_RUN }} | |
uses: softprops/action-gh-release@v2 | |
with: | |
append_body: true | |
body: | | |
## SwiftPM | |
This package provides an embedded build of Element Call that can be both used as a widget within another application. | |
``` | |
.package(url: "https://github.com/element-hq/element-call-swift.git", from: "${{ env.VERSION }}") | |
``` |