For CI staging build, update Rust to 1.81 and add libsoup-3.0-dev to … #110
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: Publish Staging AD4M | |
on: | |
push: | |
branches: | |
- staging | |
jobs: | |
create-release: | |
runs-on: GH-hosted-ubuntu | |
outputs: | |
upload_url: ${{ steps.create-release.outputs.upload_url }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: setup node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- name: Install Deno | |
uses: denoland/setup-deno@v1 | |
with: | |
deno-version: v1.32.4 | |
- name: Create Tags From | |
id: create_tag | |
uses: jaywcjlove/create-tag-action@v1.3.14 | |
- name: create release ad4m launcher | |
id: create-release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token | |
with: | |
tag_name: ${{ steps.create_tag.outputs.version }} | |
release_name: AD4M Launcher & CLI ${{ steps.create_tag.outputs.version }} Prerelease | |
body: See the assets to download this version and install. | |
draft: true | |
prerelease: true | |
build-launcher-binary: | |
strategy: | |
fail-fast: false | |
matrix: | |
#platform: [GH-hosted-ubuntu, macos-latest, windows-latest] | |
platform: [GH-hosted-ubuntu, macos-latest] | |
node-version: [18.x] | |
needs: | |
- create-release | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- name: Fetch source code | |
uses: actions/checkout@v2 | |
- name: Install Rust stable | |
uses: actions-rs/toolchain@v1 | |
with: | |
override: true | |
toolchain: 1.81.0 | |
- run: rustup target add wasm32-unknown-unknown | |
- name: Install Rust targets for macOS | |
if: matrix.platform == 'macos-latest' | |
run: | | |
rustup target add x86_64-apple-darwin | |
rustup target add aarch64-apple-darwin | |
- name: Install Deno | |
uses: denoland/setup-deno@v1 | |
with: | |
deno-version: v1.32.4 | |
- uses: pnpm/action-setup@v4 | |
- name: install dependencies (ubuntu only) | |
if: matrix.platform == 'GH-hosted-ubuntu' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf protobuf-compiler cmake fuse libfuse2 mesa-utils mesa-vulkan-drivers libsoup-3.0-dev | |
- name: install dependencies (macos only) | |
if: matrix.platform == 'macos-latest' | |
run: brew install protobuf cmake | |
- name: install dependencies (windows only) | |
if: matrix.platform == 'windows-latest' | |
run: choco install strawberryperl protoc cmake curl cygwin gnuwin32-m4 msys2 make mingw | |
- name: get version | |
run: echo "PACKAGE_VERSION=$(node -p "require('./ui/package.json').version")" >> $GITHUB_ENV | |
- name: Extract version | |
id: extract_version | |
uses: Saionaro/extract-package-version@v1.1.1 | |
with: | |
path: ui | |
- name: Change package UI version | |
id: changed_version | |
if: matrix.platform == 'windows-latest' | |
run: cd ui && pnpm change-ui-version | |
- name: Extract changed version | |
id: changed_extract_version | |
uses: Saionaro/extract-package-version@v1.1.1 | |
with: | |
path: ui | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v1 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install GO | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.22.0' | |
- name: Install/update node-gyp | |
run: npm install -g node-gyp | |
- name: Use Python 3.11 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- name: pnpm Install | |
run: pnpm install --no-cache | |
- name: Install core dependencies | |
run: cd ./core && pnpm install --no-cache | |
- name: Decrypt and install certificates | |
if: matrix.platform == 'macos-latest' | |
env: | |
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} | |
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | |
run: | | |
echo $APPLE_CERTIFICATE | base64 --decode > certificate.p12 | |
security create-keychain -p "actions" build.keychain | |
security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign | |
security list-keychain -d user -s build.keychain | |
security unlock-keychain -p "actions" build.keychain | |
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles | |
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "actions" build.keychain | |
- name: Build AD4M-CLI & build Launcher binary (macos/linux-latest) | |
if: matrix.platform != 'windows-latest' | |
env: | |
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
#APPLE_ID: ${{ secrets.APPLE_ID }} | |
#APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} | |
#APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} | |
#APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | |
#APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
#APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} | |
run: pnpm run package-ad4m | |
- name: Build AD4M-CLI & build Launcher binary (windows-latest) | |
if: matrix.platform == 'windows-latest' | |
env: | |
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | |
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | |
run: pnpm run package-ad4m | |
- name: Upload Release Deb Asset | |
id: upload-release-deb-asset | |
if: matrix.platform == 'GH-hosted-ubuntu' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: /home/runner/work/ad4m/ad4m/target/release/bundle/deb/adam-launcher_${{ steps.extract_version.outputs.version }}_amd64.deb | |
asset_name: adam-launcher_${{ steps.extract_version.outputs.version }}_amd64.deb | |
asset_content_type: application/octet-stream | |
- name: Upload Release AppImage Asset | |
id: upload-release-appimage-asset | |
if: matrix.platform == 'GH-hosted-ubuntu' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: /home/runner/work/ad4m/ad4m/target/release/bundle/appimage/adam-launcher_${{ steps.extract_version.outputs.version }}_amd64.AppImage | |
asset_name: adam-launcher_${{ steps.extract_version.outputs.version }}_amd64.AppImage | |
asset_content_type: application/octet-stream | |
- name: Upload Release AppImage Update Asset | |
id: upload-release-appimage-asset-update | |
if: matrix.platform == 'GH-hosted-ubuntu' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: /home/runner/work/ad4m/ad4m/target/release/bundle/appimage/adam-launcher_${{ steps.extract_version.outputs.version }}_amd64.AppImage.tar.gz | |
asset_name: adam-launcher_${{ steps.extract_version.outputs.version }}_amd64.deb.tar.gz | |
asset_content_type: application/octet-stream | |
- name: Upload Release AppImage update sig Asset | |
id: upload-release-appimage-asset-update-sig | |
if: matrix.platform == 'GH-hosted-ubuntu' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: /home/runner/work/ad4m/ad4m/target/release/bundle/appimage/adam-launcher_${{ steps.extract_version.outputs.version }}_amd64.AppImage.tar.gz.sig | |
asset_name: adam-launcher_${{ steps.extract_version.outputs.version }}_amd64.deb.tar.gz.sig | |
asset_content_type: application/octet-stream | |
- name: Upload Release AD4M CLI Linux Binary | |
id: upload-release-linux-ad4m-cli-binary | |
if: matrix.platform == 'GH-hosted-ubuntu' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: /home/runner/work/ad4m/ad4m/target/release/ad4m | |
asset_name: ad4m-linux-${{ steps.extract_version.outputs.version }}-x64 | |
asset_content_type: application/octet-stream | |
- name: Upload Release Macos Asset | |
id: upload-release-macos-asset | |
if: matrix.platform == 'macos-latest' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: "/Users/runner/work/ad4m/ad4m/target/universal-apple-darwin/release/bundle/dmg/ADAM Launcher_${{ steps.extract_version.outputs.version }}_universal.dmg" | |
asset_name: ADAM\ Launcher_${{ steps.extract_version.outputs.version }}_aarch64.dmg | |
asset_content_type: application/octet-stream | |
- name: Upload Release Macos update Asset | |
id: upload-release-macos-asset-update | |
if: matrix.platform == 'macos-latest' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: "/Users/runner/work/ad4m/ad4m/target/universal-apple-darwin/release/bundle/macos/ADAM Launcher.app.tar.gz" | |
asset_name: ADAM\ Launcher_${{ steps.extract_version.outputs.version }}_aarch64.app.tar.gz | |
asset_content_type: application/octet-stream | |
- name: Upload Release Macos update sig Asset | |
id: upload-release-macos-asset-update-sig | |
if: matrix.platform == 'macos-latest' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: "/Users/runner/work/ad4m/ad4m/target/universal-apple-darwin/release/bundle/macos/ADAM Launcher.app.tar.gz.sig" | |
asset_name: ADAM\ Launcher_${{ steps.extract_version.outputs.version }}_aarch64.app.tar.gz.sig | |
asset_content_type: application/octet-stream | |
- name: Upload Release AD4M CLI Macos Binary | |
id: upload-release-macos-ad4m-cli-binary | |
if: matrix.platform == 'macos-latest' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: /Users/runner/work/ad4m/ad4m/target/release/ad4m | |
asset_name: ad4m-macos-${{ steps.extract_version.outputs.version }}-x64 | |
asset_content_type: application/octet-stream | |
- name: Upload Release MSI Asset | |
id: upload-release-msi-asset | |
if: matrix.platform == 'windows-latest' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: 'D:\a\ad4m\ad4m\target\release\bundle\msi\ADAM Launcher_${{ steps.changed_extract_version.outputs.version }}_x64_en-US.msi' | |
asset_name: ADAM\ Launcher_${{ steps.changed_extract_version.outputs.version }}_x64_en-US.msi | |
asset_content_type: application/octet-stream | |
- name: Upload Release MSI update Asset | |
id: upload-release-msi-asset-update | |
if: matrix.platform == 'windows-latest' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: 'D:\a\ad4m\ad4m\target\release\bundle\msi\ADAM Launcher_${{ steps.changed_extract_version.outputs.version }}_x64_en-US.msi.zip' | |
asset_name: ADAM\ Launcher_${{ steps.changed_extract_version.outputs.version }}_x64_en-US.msi.zip | |
asset_content_type: application/octet-stream | |
- name: Upload Release MSI update sig Asset | |
id: upload-release-msi-asset-update-sig | |
if: matrix.platform == 'windows-latest' | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
asset_path: 'D:\a\ad4m\ad4m\target\release\bundle\msi\ADAM Launcher_${{ steps.changed_extract_version.outputs.version }}_x64_en-US.msi.zip.sig' | |
asset_name: ADAM\ Launcher_${{ steps.changed_extract_version.outputs.version }}_x64_en-US.msi.zip.sig | |
asset_content_type: application/octet-stream | |
# - name: Upload Release AD4M CLI Windows Binary | |
# id: upload-release-windows-ad4m-cli-binary | |
# if: matrix.platform == 'windows-latest' | |
# uses: actions/upload-release-asset@v1 | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# with: | |
# upload_url: ${{ needs.create-release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
# asset_path: D:\a\ad4m\ad4m\target\release\ad4m-x64.exe | |
# asset_name: ad4m-windows-${{ steps.extract_version.outputs.version }}-x64.exe | |
# asset_content_type: application/octet-stream | |
npm-publish: | |
runs-on: GH-hosted-ubuntu | |
steps: | |
- uses: actions/checkout@v3 | |
# Setup .npmrc file to publish to npm | |
- name: Use Node.js 16.x | |
uses: actions/setup-node@v1 | |
with: | |
node-version: 16.x | |
- uses: pnpm/action-setup@v4 | |
- name: Extract version | |
id: extract_version | |
uses: Saionaro/extract-package-version@v1.1.1 | |
with: | |
path: ui | |
- name: Check if string contains prerelease | |
run: | | |
STRING="${{ steps.extract_version.outputs.version }}" | |
if [[ $STRING == *"prerelease"* ]]; then | |
echo "CONTAINS_PRERELEASE=true" >> $GITHUB_ENV | |
else | |
echo "CONTAINS_PRERELEASE=false" >> $GITHUB_ENV | |
fi | |
- name: Install GO | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.22' | |
- name: Install Linux Deps | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf protobuf-compiler cmake fuse libfuse2 mesa-utils mesa-vulkan-drivers | |
- name: Install deps | |
run: pnpm install | |
- name: Install core dependencies | |
run: cd ./core && pnpm install | |
- name: Install Deno | |
uses: denoland/setup-deno@v1 | |
with: | |
deno-version: v1.32.4 | |
- name: Build modules | |
run: pnpm run build-libs | |
- name: Set NPM tag | |
run: | | |
if [ "$CONTAINS_PRERELEASE" = "true" ]; then | |
echo "NPM_TAG=next" >> $GITHUB_ENV | |
else | |
echo "NPM_TAG=latest" >> $GITHUB_ENV | |
fi | |
- name: Change Package Visibility to Public | |
run: | | |
cd core | |
sed -i 's/"private": true/"private": false/' package.json | |
- name: Publish core | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.COASYS_NPM_TOKEN }} | |
package: core/package.json | |
tag: ${{ env.NPM_TAG }} | |
access: public | |
- name: Publish connect | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.COASYS_NPM_TOKEN }} | |
package: connect/package.json | |
tag: ${{ env.NPM_TAG }} | |
access: public | |
- name: Publish ad4m hook helpers | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.COASYS_NPM_TOKEN }} | |
package: ad4m-hooks/helpers/package.json | |
tag: ${{ env.NPM_TAG }} | |
access: public | |
- name: Publish ad4m react hooks | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.COASYS_NPM_TOKEN }} | |
package: ad4m-hooks/react/package.json | |
tag: ${{ env.NPM_TAG }} | |
access: public | |
- name: Publish ad4m vue hooks | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.COASYS_NPM_TOKEN }} | |
package: ad4m-hooks/vue/package.json | |
tag: ${{ env.NPM_TAG }} | |
access: public | |
- name: Publish executor | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.COASYS_NPM_TOKEN }} | |
package: executor/package.json | |
tag: ${{ env.NPM_TAG }} | |
access: public | |
- name: Publish Test runner | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.COASYS_NPM_TOKEN }} | |
package: test-runner/package.json | |
tag: ${{ env.NPM_TAG }} | |
access: public | |
crates-publish: | |
runs-on: GH-hosted-ubuntu | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.77.0 | |
override: true | |
- name: Install GO | |
uses: actions/setup-go@v4 | |
with: | |
go-version: '1.22' | |
- uses: pnpm/action-setup@v4 | |
- name: Install Linux Deps | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf protobuf-compiler cmake fuse libfuse2 mesa-utils mesa-vulkan-drivers | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '18.x' | |
- name: Install Deno | |
uses: denoland/setup-deno@v1 | |
with: | |
deno-version: v1.32.4 | |
- name: Cache cargo | |
id: cache-cargo | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-cargo | |
restore-keys: ${{ runner.os }}-cargo | |
- run: rustup target add wasm32-unknown-unknown | |
- run: pnpm install | |
- run: pnpm build-core-executor | |
- run: ls -al executor/lib | |
- run: cargo install cargo-workspaces || echo "cargo-workspaces already installed" | |
- run: cargo login ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
- run: cargo workspaces publish --from-git |