| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- name: 'Build'
- on: push
- env:
- TARGETS: f6
- jobs:
- build:
- runs-on: [self-hosted]
- steps:
- - name: 'Cleanup workspace'
- uses: AutoModality/action-clean@v1
- - name: 'Decontaminate previous build leftovers'
- run: |
- if [ -d .git ]
- then
- git submodule status \
- || git checkout `git rev-list --max-parents=0 HEAD | tail -n 1`
- fi
- - name: 'Checkout code'
- uses: actions/checkout@v2
- with:
- fetch-depth: 0
- submodules: true
- - name: 'Docker cache'
- uses: satackey/action-docker-layer-caching@v0.0.11
- continue-on-error: true
- with:
- key: docker-cache-${{ hashFiles('docker/**') }}-{hash}
- restore-keys: docker-cache-${{ hashFiles('docker/**') }}-
- - name: 'Build docker image'
- uses: ./.github/actions/docker
- - name: 'Make artifacts directory'
- run: |
- test -d artifacts && rm -rf artifacts || true
- mkdir artifacts
- - name: 'Generate tag suffix'
- if: startsWith(github.ref, 'refs/tags/') == true
- run: echo "SUFFIX=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
- - name: 'Generate branch suffix'
- if: startsWith(github.ref, 'refs/tags/') != true
- run: echo "SUFFIX=$(git rev-parse --abbrev-ref HEAD)-$(date +'%d%m%Y')-$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- - name: 'Build bootloader in docker'
- uses: ./.github/actions/docker
- with:
- run: |
- for TARGET in ${TARGETS}
- do
- make -j$(nproc) -C bootloader TARGET=${TARGET}
- done
- - name: 'Generate dfu file for bootloader'
- uses: ./.github/actions/docker
- with:
- run: |
- for TARGET in ${TARGETS}
- do
- hex2dfu \
- -i bootloader/.obj/${TARGET}/bootloader.hex \
- -o bootloader/.obj/${TARGET}/bootloader.dfu \
- -l "Flipper Zero $(echo $TARGET | tr a-z A-Z)"
- done
- - name: 'Build firmware in docker'
- uses: ./.github/actions/docker
- with:
- run: |
- for TARGET in ${TARGETS}
- do
- make -j$(nproc) -C firmware TARGET=${TARGET}
- done
- - name: 'Generate dfu file for firmware'
- uses: ./.github/actions/docker
- with:
- run: |
- for TARGET in ${TARGETS}
- do
- hex2dfu \
- -i firmware/.obj/${TARGET}/firmware.hex \
- -o firmware/.obj/${TARGET}/firmware.dfu \
- -l "Flipper Zero $(echo $TARGET | tr a-z A-Z)"
- done
- - name: 'Generate full hex file'
- uses: ./.github/actions/docker
- with:
- run: |
- for TARGET in ${TARGETS}
- do
- srec_cat \
- bootloader/.obj/${TARGET}/bootloader.hex -Intel \
- firmware/.obj/${TARGET}/firmware.hex -Intel \
- -o firmware/.obj/${TARGET}/full.hex -Intel
- done
- - name: 'Move upload files'
- uses: ./.github/actions/docker
- with:
- run: |
- for TARGET in ${TARGETS}
- do
- mv bootloader/.obj/${TARGET}/bootloader.dfu \
- artifacts/flipper-z-${TARGET}-bootloader-${SUFFIX}.dfu
- mv bootloader/.obj/${TARGET}/bootloader.bin \
- artifacts/flipper-z-${TARGET}-bootloader-${SUFFIX}.bin
- mv bootloader/.obj/${TARGET}/bootloader.elf \
- artifacts/flipper-z-${TARGET}-bootloader-${SUFFIX}.elf
- mv firmware/.obj/${TARGET}/firmware.dfu \
- artifacts/flipper-z-${TARGET}-firmware-${SUFFIX}.dfu
- mv firmware/.obj/${TARGET}/firmware.bin \
- artifacts/flipper-z-${TARGET}-firmware-${SUFFIX}.bin
- mv firmware/.obj/${TARGET}/firmware.elf \
- artifacts/flipper-z-${TARGET}-firmware-${SUFFIX}.elf
- done
- - name: 'Generate full dfu file'
- uses: ./.github/actions/docker
- with:
- run: |
- for TARGET in ${TARGETS}
- do
- hex2dfu \
- -i firmware/.obj/${TARGET}/full.hex \
- -o artifacts/flipper-z-${TARGET}-full-${SUFFIX}.dfu \
- -l "Flipper Zero $(echo $TARGET | tr a-z A-Z)"
- done
- - name: 'Full flash asssembly: bootloader as base'
- run: |
- for TARGET in ${TARGETS}
- do
- cp \
- artifacts/flipper-z-${TARGET}-bootloader-${SUFFIX}.bin \
- artifacts/flipper-z-${TARGET}-full-${SUFFIX}.bin
- done
- - name: 'Full flash asssembly: bootloader padding'
- run: |
- for TARGET in ${TARGETS}
- do
- truncate -s 32768 artifacts/flipper-z-${TARGET}-full-${SUFFIX}.bin
- done
-
- - name: 'Full flash asssembly: append firmware'
- run: |
- for TARGET in ${TARGETS}
- do
- cat \
- artifacts/flipper-z-${TARGET}-firmware-${SUFFIX}.bin \
- >> artifacts/flipper-z-${TARGET}-full-${SUFFIX}.bin
- done
- - name: 'Upload artifacts to update server'
- uses: burnett01/rsync-deployments@4.1
- with:
- switches: -avzP --delete
- path: artifacts/
- remote_path: "${{ secrets.RSYNC_DEPLOY_BASE_PATH }}${GITHUB_REF##*/}/"
- remote_host: ${{ secrets.RSYNC_DEPLOY_HOST }}
- remote_port: ${{ secrets.RSYNC_DEPLOY_PORT }}
- remote_user: ${{ secrets.RSYNC_DEPLOY_USER }}
- remote_key: ${{ secrets.RSYNC_DEPLOY_KEY }}
- - name: 'Trigger update server reindex'
- uses: wei/curl@master
- with:
- args: -X POST -F 'key=${{ secrets.REINDEX_KEY }}' ${{ secrets.REINDEX_URL }}
|