Update Cargo.toml #8
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: Deploy | |
on: | |
# Build and deploy the image on pushes to main branch | |
workflow_dispatch: | |
inputs: | |
reason: | |
required: true | |
description: "Reason for running this workflow" | |
use_test_image: | |
required: false | |
type: boolean | |
description: "Use base image testpr" | |
default: false | |
build_latest_as_test: | |
required: false | |
type: boolean | |
description: "Build latest as test" | |
default: false | |
push: | |
branches: | |
- main | |
paths: | |
- "src/**" | |
- "Dockerfile" | |
- "rootfs/**" | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} | |
jobs: | |
workflow-dispatch: | |
name: Triggered via Workflow Dispatch? | |
# only run this step if workflow dispatch triggered | |
# log the reason the workflow dispatch was triggered | |
if: | | |
github.event_name == 'workflow_dispatch' && | |
github.event.inputs.reason != '' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Log dispatch reason | |
env: | |
INPUTS_REASON: ${{ github.event.inputs.reason }} | |
INPUTS_USE_TEST_IMAGE: ${{ github.event.inputs.use_test_image }} | |
INPUTS_BUILD_LATEST_AS_TEST: ${{ github.event.inputs.build_latest_as_test }} | |
run: | | |
echo "Workflow dispatch reason: $INPUTS_REASON" | |
echo "Use test image: $INPUTS_USE_TEST_IMAGE" | |
echo "Build latest as test: $INPUTS_BUILD_LATEST_AS_TEST" | |
binary_build_armv7: | |
name: Build Binary - armv7 | |
runs-on: ubuntu-latest | |
# needs: test_rust_functionality | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
fetch-depth: 0 | |
- name: Run Docker on tmpfs | |
uses: JonasAlfredsson/docker-on-tmpfs@v1 | |
with: | |
tmpfs_size: 5 | |
swap_size: 4 | |
swap_location: "/mnt/swapfile" | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build armv7 | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: false | |
file: Dockerfile.build_binary | |
tags: sdre-hub:armv7 | |
platforms: linux/arm/v7 | |
outputs: type=local,dest=./image_armv7/ | |
- name: Upload artifact armv7 binary | |
uses: actions/[email protected] | |
with: | |
name: sdre-hub.armv7 | |
path: ./image_armv7/sdre-hub | |
binary_build_arm64: | |
name: Build Binary - arm64 | |
runs-on: ubuntu-latest | |
# needs: test_rust_functionality | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
fetch-depth: 0 | |
- name: Run Docker on tmpfs | |
uses: JonasAlfredsson/docker-on-tmpfs@v1 | |
with: | |
tmpfs_size: 5 | |
swap_size: 4 | |
swap_location: "/mnt/swapfile" | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build arm64 | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: false | |
file: Dockerfile.build_binary | |
tags: sdre-hub:arm64 | |
platforms: linux/arm64 | |
outputs: type=local,dest=./image_arm64/ | |
- name: Upload artifact arm64 binary | |
uses: actions/[email protected] | |
with: | |
name: sdre-hub.arm64 | |
path: ./image_arm64/sdre-hub | |
binary_build_amd64: | |
name: Build Binary - amd64 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
fetch-depth: 0 | |
- name: Run Docker on tmpfs | |
uses: JonasAlfredsson/docker-on-tmpfs@v1 | |
with: | |
tmpfs_size: 5 | |
swap_size: 4 | |
swap_location: "/mnt/swapfile" | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build amd64 | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: false | |
file: Dockerfile.build_binary | |
tags: sdre-hub:amd64 | |
platforms: linux/amd64 | |
outputs: type=local,dest=./image_amd64/ | |
- name: Upload artifact amd64 binary | |
uses: actions/[email protected] | |
with: | |
name: sdre-hub.amd64 | |
path: ./image_amd64/sdre-hub | |
frontend_build: | |
name: Build Frontend | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
fetch-depth: 0 | |
- name: Run Docker on tmpfs | |
uses: JonasAlfredsson/docker-on-tmpfs@v1 | |
with: | |
tmpfs_size: 5 | |
swap_size: 4 | |
swap_location: "/mnt/swapfile" | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build amd64 | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: false | |
file: Dockerfile.build_frontend | |
tags: sdre-hub:amd64 | |
platforms: linux/amd64 | |
outputs: type=local,dest=./frontend | |
- name: Upload artifact amd64 binary | |
uses: actions/[email protected] | |
with: | |
name: frontend | |
path: ./frontend/sh-frontend | |
consolidate_binaries: | |
name: Consolidate & Cache Binaries | |
runs-on: ubuntu-latest | |
needs: | |
[ | |
binary_build_amd64, | |
binary_build_arm64, | |
binary_build_armv7, | |
frontend_build, | |
] | |
steps: | |
- run: mkdir -p ./bin | |
- uses: actions/[email protected] | |
with: | |
name: sdre-hub.amd64 | |
path: ./bin/sdre-hub.amd64 | |
- uses: actions/[email protected] | |
with: | |
name: sdre-hub.armv7 | |
path: ./bin/sdre-hub.armv7 | |
- uses: actions/[email protected] | |
with: | |
name: sdre-hub.arm64 | |
path: ./bin/sdre-hub.arm64 | |
- uses: actions/[email protected] | |
with: | |
name: frontend | |
path: ./bin/sh-frontend | |
- run: ls -la */* | |
- name: Cache Binaries | |
uses: actions/cache@v4 | |
with: | |
path: ./bin/ | |
key: ${{ github.run_id }} | |
publish-tauri: | |
name: Publish Tauri | |
permissions: | |
contents: write | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- platform: "macos-latest" # for Arm based macs (M1 and above). | |
args: "--target aarch64-apple-darwin" | |
- platform: "macos-latest" # for Intel based macs. | |
args: "--target x86_64-apple-darwin" | |
- platform: "ubuntu-22.04" # for Tauri v1 you could replace this with ubuntu-20.04. | |
args: "" | |
- platform: "windows-latest" | |
args: "" | |
if: | | |
(github.event.inputs.use_test_image == 'false' || | |
github.event.inputs.use_test_image == '' ) && | |
(github.event.inputs.build_latest_as_test == 'false' || | |
github.event.inputs.build_latest_as_test == '' ) | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
- name: install Rust stable | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. | |
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} | |
- name: install dependencies (ubuntu only) | |
if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above. | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsoup2.4-dev libjavascriptcoregtk-4.0-dev libwebkit2gtk-4.0-dev | |
- name: install other stuff | |
run: | | |
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash | |
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh | |
cargo binstall trunk wasm-bindgen-cli --no-confirm | |
rustup target add wasm32-unknown-unknown | |
# - name: install frontend dependencies | |
# run: yarn install # change this to npm, pnpm or bun depending on which one you use. | |
- uses: tauri-apps/tauri-action@v0 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tagName: SDREHub-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version. | |
releaseName: "SDR-E Hub v__VERSION__" | |
releaseBody: "See the assets to download this version and install." | |
releaseDraft: false | |
prerelease: false | |
args: ${{ matrix.args }} | |
deploy: | |
name: Deploy | |
if: | | |
github.event.inputs.build_latest_as_test == 'false' || | |
github.event.inputs.build_latest_as_test == '' | |
needs: [consolidate_binaries] | |
uses: sdr-enthusiasts/common-github-workflows/.github/workflows/build_and_push_image.yml@main | |
with: | |
push_enabled: true | |
push_destinations: ghcr.io | |
build_with_tmpfs: true | |
ghcr_repo_owner: ${{ github.repository_owner }} | |
ghcr_repo: ${{ github.repository }} | |
# set build_latest to true if github.event.inputs.use_test_image is false | |
build_latest: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} | |
build_baseimage_test: ${{ github.event.inputs.use_test_image == 'true' }} | |
# only build the entire stack if we are not using the test image | |
build_version_specific: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} | |
build_platform_specific: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} | |
build_nohealthcheck: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} | |
build_baseimage_url: :base/:base-test-pr | |
get_version_method: cargo_toml_file_in_repo:file=/Cargo.toml | |
cache_enabled: true | |
cache_path: ./bin/ | |
cache_key: ${{ github.run_id }} | |
secrets: | |
ghcr_token: ${{ secrets.GITHUB_TOKEN }} | |
deploy_test: | |
name: Deploy as test | |
needs: [consolidate_binaries] | |
if: | | |
github.event.inputs.build_latest_as_test == 'true' && | |
(github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '') | |
uses: sdr-enthusiasts/common-github-workflows/.github/workflows/build_and_push_image.yml@main | |
with: | |
push_enabled: true | |
push_destinations: ghcr.io | |
build_with_tmpfs: true | |
ghcr_repo_owner: ${{ github.repository_owner }} | |
ghcr_repo: ${{ github.repository }} | |
# set build_latest to true if github.event.inputs.use_test_image is false | |
build_latest: true | |
build_baseimage_test: false | |
# only build the entire stack if we are not using the test image | |
build_version_specific: false | |
build_platform_specific: false | |
build_nohealthcheck: false | |
build_baseimage_url: :base/:base-test-pr | |
get_version_method: cargo_toml_file_in_repo:file=/Cargo.toml | |
cache_enabled: true | |
cache_path: ./bin/ | |
cache_key: ${{ github.run_id }} | |
docker_latest_tag: test | |
secrets: | |
ghcr_token: ${{ secrets.GITHUB_TOKEN }} |