Skip to content

Merge pull request #906 from NebraLtd/shawaj-patch-2 #215

Merge pull request #906 from NebraLtd/shawaj-patch-2

Merge pull request #906 from NebraLtd/shawaj-patch-2 #215

name: NebraOS Cloud Deploy (Testnet)
on:
push:
# Only run workflow for pushes to specific files on master branch
paths:
- 'settings.ini'
- 'templates/**'
workflow_dispatch:
jobs:
testnet:
if: github.ref_name == 'master' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
strategy:
max-parallel: 1
fail-fast: false
matrix:
sbc: [raspi, rockpi, rak, finestra, sensecap, og, controllino, pisces, cotx, pantherx1, linxdot, linxdot-rk3566, syncrobit, syncrobit-rkcm3, pycom, risinghf, midas, bobcat-px30, bobcat-rk3566]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python Libraries
run: pip install -r requirements.txt
- name: Export short SHA of current commit
run: |
FIRMWARE_SHORT_HASH=$( echo ${GITHUB_SHA:0:7} )
echo "FIRMWARE_SHORT_HASH=$FIRMWARE_SHORT_HASH" >> $GITHUB_ENV
# Get the latest GA release and branch
source <(grep FIRMWARE_VERSION settings.ini)
LATEST_GA=$FIRMWARE_VERSION
GITHUB_BRANCH=$( echo "${{ github.ref }}" | sed 's/refs\/heads\///g' )
echo "timestamp=$(date +'%s')" >> $GITHUB_ENV
echo "day=$(date +'%F')" >> $GITHUB_ENV
echo "LATEST_GA=$LATEST_GA" >> $GITHUB_ENV
echo "GITHUB_BRANCH=$GITHUB_BRANCH" >> $GITHUB_ENV
- name: Generate Docker Compose
run: |
miner="${{ matrix.sbc }}"
if [[ "$miner" == "raspi" ]] ; then
variant="nebra-indoor1"
variant2="nebra-outdoor1"
fleet="helium-testnet"
repo="helium-$variant"
repo2="helium-$variant2"
elif [[ "$miner" == "rockpi" ]] ; then
variant="nebra-indoor2"
variant2="nebra-outdoor2"
fleet="helium-testnet-rockpi"
repo="helium-$variant"
repo2="helium-$variant2"
elif [[ "$miner" == "og" ]] ; then
variant="helium-fl1"
fleet="helium-testnet-og"
repo="helium-og"
repo2="None"
elif [[ "$miner" == "bobcat-px30" ]] || [[ "$miner" == "bobcat-rk3566" ]] ; then
variant="$miner"
fleet="helium-testnet-$miner"
repo="helium-$miner"
repo2="None"
else
variant="$miner-fl1"
fleet="helium-testnet-$miner"
repo="helium-$miner"
repo2="None"
fi
echo "Variant: $variant"
echo "REPO=$repo" >> $GITHUB_ENV
echo "Repo: $repo"
echo "REPO2=$repo2" >> $GITHUB_ENV
echo "Repo 2: $repo2"
echo "FLEET=$fleet" >> $GITHUB_ENV
echo "Fleet: $fleet"
FIRMWARE_SHORT_HASH=${{ env.FIRMWARE_SHORT_HASH }}
python gen_docker_compose_by_variant.py "$variant" -o docker-compose.yml
if [[ "$repo2" != "None" ]] ; then
python gen_docker_compose_by_variant.py "$variant2" -o "docker-compose.yml.$repo2"
fi
- name: Balena Deploy
uses: nebraltd/[email protected]
with:
balena_api_token: ${{secrets.NEBRAOS_CLOUD_TOKEN}}
balena_url: cloud.nebra.com
balena_command: "deploy nebraltd/${{ env.FLEET }} --debug --nocache --build"
- name: Upload docker-compose.yml artifact
uses: actions/upload-artifact@v4
with:
name: docker-compose.yml.${{ env.REPO }}.testnet
path: docker-compose.yml
- name: Upload docker-compose.yml artifact (repo2)
if: env.REPO2 != 'None'
uses: actions/upload-artifact@v4
with:
name: docker-compose.yml.${{ env.REPO2 }}.testnet
path: docker-compose.yml.${{ env.REPO2 }}
- name: Upload docker-compose.yml to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: docker-compose.yml
asset_name: docker-compose.yml.${{ env.REPO }}
tag: TESTNET-${{ env.LATEST_GA }}-${{ env.day }}
overwrite: true
body: "TESTNET: This is helium-miner-software release TESTNET-${{ env.LATEST_GA }}-${{ env.day }}"
- name: Upload docker-compose.yml to release (repo2)
if: env.REPO2 != 'None'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: docker-compose.yml.${{ env.REPO2 }}
asset_name: docker-compose.yml.${{ env.REPO2 }}
tag: TESTNET-${{ env.LATEST_GA }}-${{ env.day }}
overwrite: true
body: "TESTNET: This is helium-miner-software release TESTNET-${{ env.LATEST_GA }}-${{ env.day }}"
- name: Trigger build action in ${{ env.REPO }} repo
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.MR_BUMP }}
event-type: build-open-fleet
repository: NebraLtd/${{ env.REPO }}
client-payload: '{"release": "${{ env.LATEST_GA }}_GA", "tag": "${{ env.LATEST_GA }}", "firmware": "${{ env.FIRMWARE_SHORT_HASH }}", "branch": "${{ env.GITHUB_BRANCH }}"}'
- name: Trigger build action in ${{ env.REPO2 }} repo
uses: peter-evans/repository-dispatch@v3
if: matrix.sbc == 'raspi' || matrix.sbc == 'rockpi'
with:
token: ${{ secrets.MR_BUMP }}
event-type: build-open-fleet
repository: NebraLtd/${{ env.REPO2 }}
client-payload: '{"release": "${{ env.LATEST_GA }}_GA", "tag": "${{ env.LATEST_GA }}", "firmware": "${{ env.FIRMWARE_SHORT_HASH }}", "branch": "${{ env.GITHUB_BRANCH }}"}'