Skip to content

Deploy

Deploy #361

Workflow file for this run

name: Deploy
on:
# Enable manual running of action if necessary
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
# Build and deploy the image on pushes to main branch
push:
branches:
- main
paths:
- "rust/**"
- "Dockerfile"
- "Dockerfile.build_binary"
- "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 }}
run: |
echo "Workflow dispatch reason: $INPUTS_REASON"
echo "Use test image: $INPUTS_USE_TEST_IMAGE"
binary_build_arm64:
name: Build Binary - arm64
runs-on: ubuntu-latest
# needs: test_rust_functionality
steps:
- name: Checkout
uses: actions/checkout@v4.1.7
with:
fetch-depth: 0
repository: sdr-enthusiasts/acars-bridge
- name: Run Docker on tmpfs
uses: JonasAlfredsson/docker-on-tmpfs@v1.0.1
with:
tmpfs_size: 5
swap_size: 4
swap_location: "/mnt/swapfile"
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.2.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.6.1
- name: Build arm64
uses: docker/build-push-action@v6.5.0
with:
context: .
push: false
file: Dockerfile.build_binary
tags: acars-bridge:arm64
platforms: linux/arm64
outputs: type=local,dest=./image_arm64/
- name: Upload artifact arm64 binary
uses: actions/upload-artifact@v4.3.5
with:
name: acars-bridge.arm64
path: ./image_arm64/acars-bridge
binary_build_amd64:
name: Build Binary - amd64
runs-on: ubuntu-latest
# needs: test_rust_functionality
steps:
- name: Checkout
uses: actions/checkout@v4.1.7
with:
fetch-depth: 0
repository: sdr-enthusiasts/acars-bridge
- name: Run Docker on tmpfs
uses: JonasAlfredsson/docker-on-tmpfs@v1.0.1
with:
tmpfs_size: 5
swap_size: 4
swap_location: "/mnt/swapfile"
- name: Set up QEMU
uses: docker/setup-qemu-action@v3.2.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.6.1
- name: Build amd64
uses: docker/build-push-action@v6.5.0
with:
context: .
push: false
file: Dockerfile.build_binary
tags: acars-bridge:amd64
platforms: linux/amd64
outputs: type=local,dest=./image_amd64/
- name: Upload artifact amd64 binary
uses: actions/upload-artifact@v4.3.5
with:
name: acars-bridge.amd64
path: ./image_amd64/acars-bridge
consolidate_binaries:
name: Consolidate & Cache Binaries
runs-on: ubuntu-latest
needs: [binary_build_amd64, binary_build_arm64]
steps:
- run: mkdir -p ./bin
- uses: actions/download-artifact@v4.1.8
with:
name: acars-bridge.amd64
path: ./bin/acars-bridge.amd64
- uses: actions/download-artifact@v4.1.8
with:
name: acars-bridge.arm64
path: ./bin/acars-bridge.arm64
- run: ls -la ./bin/*
- name: Cache Binaries
uses: actions/cache@v4.0.2
with:
path: ./bin/
key: ${{ github.run_id }}
build_and_push:
name: Image Build & Push
needs: [consolidate_binaries]
if: |
github.event.inputs.build_latest_as_test == 'false' ||
github.event.inputs.build_latest_as_test == ''
uses: sdr-enthusiasts/common-github-workflows/.github/workflows/build_and_push_image.yml@main
with:
push_enabled: true
push_destinations: ghcr.io
ghcr_repo_owner: ${{ github.repository_owner }}
ghcr_repo: ${{ github.repository }}
platform_linux_arm32v6_enabled: false
platform_linux_i386_enabled: false
platform_linux_arm32v7_enabled: false
get_version_method: git_commit_hash_short
# 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: :acars-decoder/:acars-decoder-test-pr
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
ghcr_repo_owner: ${{ github.repository_owner }}
ghcr_repo: ${{ github.repository }}
build_with_tmpfs: true
get_version_method: git_commit_hash_short
# set build_latest to true if github.event.inputs.use_test_image is false
build_latest: true
docker_latest_tag: test
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
platform_linux_arm32v6_enabled: false
platform_linux_i386_enabled: false
platform_linux_arm32v7_enabled: false
build_baseimage_url: :acars-decoder/:acars-decoder-test-pr
cache_enabled: true
cache_path: ./bin/
cache_key: ${{ github.run_id }}
secrets:
ghcr_token: ${{ secrets.GITHUB_TOKEN }}