Skip to content

Build RTK Everywhere #184

Build RTK Everywhere

Build RTK Everywhere #184

name: Build RTK Everywhere
on:
workflow_dispatch:
branches:
env:
FILENAME_PREFIX: RTK_Everywhere_Firmware
FIRMWARE_VERSION_MAJOR: 2
FIRMWARE_VERSION_MINOR: 3
CORE_VERSION: 3.0.7
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@main
- name: Get current date
id: date
run: echo "date=$(date +'%b_%d_%Y')" >> $GITHUB_OUTPUT
- name: Get current date
id: dateNoScores
run: echo "dateNoScores=$(date +'%b %d %Y')" >> $GITHUB_OUTPUT
- name: Extract branch name
run: echo "BRANCH=${{github.ref_name}}" >> $GITHUB_ENV
#File_Name_v1_0.bin
#File_Name_RC-Jan_26_2023.bin
- name: Create file ending and compiler flags based on branch
run: |
if [[ $BRANCH == 'main' ]]; then
echo "FILE_ENDING_UNDERSCORE=_v${{ env.FIRMWARE_VERSION_MAJOR }}_${{ env.FIRMWARE_VERSION_MINOR }}" >> "$GITHUB_ENV"
echo "FILE_ENDING_NOUNDERSCORE=_v${{ env.FIRMWARE_VERSION_MAJOR }}.${{ env.FIRMWARE_VERSION_MINOR }}" >> "$GITHUB_ENV"
echo "JSON_ENDING=" >> "$GITHUB_ENV"
echo "JSON_FILE_NAME=RTK-Everywhere-Firmware.json" >> "$GITHUB_ENV"
echo "ENABLE_DEVELOPER=false" >> "$GITHUB_ENV"
echo "DEBUG_LEVEL=none" >> "$GITHUB_ENV"
else
echo "FILE_ENDING_UNDERSCORE=_RC-${{ steps.date.outputs.date }}" >> "$GITHUB_ENV"
echo "FILE_ENDING_NOUNDERSCORE=_RC-${{ steps.dateNoScores.outputs.dateNoScores }}" >> "$GITHUB_ENV"
echo "JSON_ENDING=-${{ steps.dateNoScores.outputs.dateNoScores }}" >> "$GITHUB_ENV"
echo "JSON_FILE_NAME=RTK-Everywhere-RC-Firmware.json" >> "$GITHUB_ENV"
echo "ENABLE_DEVELOPER=true" >> "$GITHUB_ENV"
echo "DEBUG_LEVEL=error" >> "$GITHUB_ENV"
fi
- name: Run Dockerfile and copy files
# The --quiet suppresses the build output, keeping the secrets safe
run: |
cd ./Firmware
echo "*** The docker build is quiet to protect the GitHub secrets ***"
docker build -t rtk_everywhere_firmware --no-cache --quiet \
--build-arg CORE_VERSION=${{ env.CORE_VERSION }} \
--build-arg FIRMWARE_VERSION_MAJOR=${{ env.FIRMWARE_VERSION_MAJOR }} \
--build-arg FIRMWARE_VERSION_MINOR=${{ env.FIRMWARE_VERSION_MINOR }} \
--build-arg POINTPERFECT_LBAND_TOKEN="${{ secrets.POINTPERFECT_LBAND_TOKEN }}" \
--build-arg POINTPERFECT_IP_TOKEN="${{ secrets.POINTPERFECT_IP_TOKEN }}" \
--build-arg POINTPERFECT_LBAND_IP_TOKEN="${{ secrets.POINTPERFECT_LBAND_IP_TOKEN }}" \
--build-arg POINTPERFECT_RTCM_TOKEN="${{ secrets.POINTPERFECT_RTCM_TOKEN }}" \
--build-arg ENABLE_DEVELOPER=${{ env.ENABLE_DEVELOPER }} \
--build-arg DEBUG_LEVEL=${{ env.DEBUG_LEVEL }} \
.
docker create --name=rtk_everywhere rtk_everywhere_firmware:latest
mkdir ./build
docker cp rtk_everywhere:/RTK_Everywhere.ino.bin ./build
docker cp rtk_everywhere:/RTK_Everywhere.ino.elf ./build
docker cp rtk_everywhere:/RTK_Everywhere/form.h ./RTK_Everywhere
docker container rm rtk_everywhere
- name: Commit and push form.h
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add ./Firmware/RTK_Everywhere/form.h
git commit -m "Update form.h via Python"
git push origin ${{ env.BRANCH }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Rename binary
run: |
cd ./Firmware/build
mv RTK_Everywhere.ino.bin ${{ env.FILENAME_PREFIX }}${{ env.FILE_ENDING_UNDERSCORE }}.bin
- name: Upload binary to action
uses: actions/upload-artifact@v4
with:
name: ${{ env.FILENAME_PREFIX }}${{ env.FILE_ENDING_UNDERSCORE }}
path: ./Firmware/build/${{ env.FILENAME_PREFIX }}${{ env.FILE_ENDING_UNDERSCORE }}.bin
- name: Push binary to Binaries Repo
# uses: dmnemec/copy_file_to_another_repo_action #Workaround for Issue: https://github.com/orgs/community/discussions/55820#discussioncomment-5946136
uses: Jason2866/copy_file_to_another_repo_action@http408_fix
env:
API_TOKEN_GITHUB: ${{ secrets.PUSH_BINARIES_REPO }}
with:
source_file: ./Firmware/build/${{ env.FILENAME_PREFIX }}${{ env.FILE_ENDING_UNDERSCORE }}.bin
destination_repo: 'sparkfun/SparkFun_RTK_Everywhere_Firmware_Binaries'
destination_folder: ''
user_email: 'nathan@sparkfun.com'
user_name: 'nseidle'
commit_message: 'Github Action - Updating Binary ${{ steps.dateNoScores.outputs.dateNoScores }}'
- name: Update JSON File
uses: "DamianReeves/write-file-action@master"
with:
path: ${{ env.JSON_FILE_NAME }}
write-mode: overwrite
contents: |
{"Configurations": [{"Version":"${{ env.FIRMWARE_VERSION_MAJOR }}.${{ env.FIRMWARE_VERSION_MINOR }}${{ env.JSON_ENDING }}", "URL":"https://raw.githubusercontent.com/sparkfun/SparkFun_RTK_Everywhere_Firmware_Binaries/main/${{ env.FILENAME_PREFIX }}${{ env.FILE_ENDING_UNDERSCORE }}.bin"}]}
- name: Push JSON to Binaries Repo
# uses: dmnemec/copy_file_to_another_repo_action #Workaround for Issue: https://github.com/orgs/community/discussions/55820#discussioncomment-5946136
uses: Jason2866/copy_file_to_another_repo_action@http408_fix
env:
API_TOKEN_GITHUB: ${{ secrets.PUSH_BINARIES_REPO }}
with:
source_file: ${{ env.JSON_FILE_NAME }}
destination_repo: 'sparkfun/SparkFun_RTK_Everywhere_Firmware_Binaries'
destination_folder: ''
user_email: 'nathan@sparkfun.com'
user_name: 'nseidle'
commit_message: 'Github Action - Updating JSON ${{ steps.dateNoScores.outputs.dateNoScores }}'