Deploy #305
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: | |
# 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_armv7: | |
name: Build Binary - armv7 | |
runs-on: ubuntu-latest | |
# needs: test_rust_functionality | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
fetch-depth: 0 | |
repository: sdr-enthusiasts/acars-bridge | |
- name: Run Docker on tmpfs | |
uses: JonasAlfredsson/[email protected] | |
with: | |
tmpfs_size: 5 | |
swap_size: 4 | |
swap_location: "/mnt/swapfile" | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/[email protected] | |
- name: Build armv7 | |
uses: docker/[email protected] | |
with: | |
context: . | |
push: false | |
file: Dockerfile.build_binary | |
tags: acars-bridge:armv7 | |
platforms: linux/arm/v7 | |
outputs: type=local,dest=./image_armv7/ | |
- name: Upload artifact armv7 binary | |
uses: actions/[email protected] | |
with: | |
name: acars-bridge.armv7 | |
path: ./image_armv7/acars-bridge | |
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 | |
repository: sdr-enthusiasts/acars-bridge | |
- name: Run Docker on tmpfs | |
uses: JonasAlfredsson/[email protected] | |
with: | |
tmpfs_size: 5 | |
swap_size: 4 | |
swap_location: "/mnt/swapfile" | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/[email protected] | |
- name: Build arm64 | |
uses: docker/[email protected] | |
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/[email protected] | |
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/[email protected] | |
with: | |
fetch-depth: 0 | |
repository: sdr-enthusiasts/acars-bridge | |
- name: Run Docker on tmpfs | |
uses: JonasAlfredsson/[email protected] | |
with: | |
tmpfs_size: 5 | |
swap_size: 4 | |
swap_location: "/mnt/swapfile" | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/[email protected] | |
- name: Build amd64 | |
uses: docker/[email protected] | |
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/[email protected] | |
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, binary_build_armv7] | |
steps: | |
- run: mkdir -p ./bin | |
- uses: actions/[email protected] | |
with: | |
name: acars-bridge.amd64 | |
path: ./bin/acars-bridge.amd64 | |
- uses: actions/[email protected] | |
with: | |
name: acars-bridge.armv7 | |
path: ./bin/acars-bridge.armv7 | |
- uses: actions/[email protected] | |
with: | |
name: acars-bridge.arm64 | |
path: ./bin/acars-bridge.arm64 | |
- run: ls -la ./bin/* | |
- name: Cache Binaries | |
uses: actions/[email protected] | |
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 | |
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 | |
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 }} |