Skip to content

Commit

Permalink
Add workflow to check apps building (#27)
Browse files Browse the repository at this point in the history
* Fix workflow

* test

* test

* maybe?

* Keep checked out apps commit

* sanity check for build failure

* Revert "sanity check for build failure"

This reverts commit 0ef848f.

* Check linting too

* sanity check linting

* fix

* Revert "sanity check linting"

This reverts commit 11452eb.
  • Loading branch information
Willy-JL authored Oct 10, 2024
1 parent 2c23155 commit 36671ed
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 109 deletions.
120 changes: 11 additions & 109 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@ name: "Build"

on:
push:
branches:
- "**"
- "!release"
tags:
- "*"
pull_request:

concurrency:
Expand All @@ -19,68 +14,38 @@ env:

jobs:
build:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [f7]
steps:
- name: "Checkout code"
- name: "Checkout firmware"
uses: actions/checkout@v4
with:
repository: Next-Flip/Momentum-Firmware
fetch-depth: 1
ref: dev
submodules: recursive

- name: "Checkout apps"
uses: actions/checkout@v4
with:
path: applications/external
fetch-depth: 1
ref: ${{ github.event.pull_request.head.sha }}

- name: "Get commit details"
id: names
run: |
BUILD_TYPE='DEBUG=0 COMPACT=1'
if [[ ${{ github.event_name }} == 'pull_request' ]]; then
TYPE="pull"
elif [[ "${{ github.ref }}" == "refs/tags/"* ]]; then
TYPE="tag"
else
TYPE="other"
fi
python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE" || cat "${{ github.event_path }}"
echo "event_type=$TYPE" >> $GITHUB_OUTPUT
echo "FBT_BUILD_TYPE=$BUILD_TYPE" >> $GITHUB_ENV
echo "TARGET=${{ matrix.target }}" >> $GITHUB_ENV
echo "TARGET_HW=$(echo "${{ matrix.target }}" | sed 's/f//')" >> $GITHUB_ENV
- name: "Check API versions for consistency between targets"
run: |
set -e
N_API_HEADER_SIGNATURES=`ls -1 targets/f*/api_symbols.csv | xargs -I {} sh -c "head -n2 {} | md5sum" | sort -u | wc -l`
if [ $N_API_HEADER_SIGNATURES != 1 ] ; then
echo API versions aren\'t matching for available targets. Please update!
echo API versions are:
head -n2 targets/f*/api_symbols.csv
exit 1
fi
- name: "Check API version for consistency with OFW release-candidate"
run: |
set -e
symbols="targets/$TARGET/api_symbols.csv"
ofw_api="$(curl -s "https://raw.githubusercontent.com/flipperdevices/flipperzero-firmware/release-candidate/${symbols}" | head -n2)"
our_api="$(head -n2 "${symbols}")"
if [ "$our_api" != "$ofw_api" ] ; then
echo API versions aren\'t matching OFW. Please update!
echo API versions are:
echo "Official: $(tail -n1 <<< "$ofw_api")"
echo "Momentum: $(tail -n1 <<< "$our_api")"
exit 1
fi
- name: "Build the firmware and apps"
id: build-fw
run: |
git add applications/external
./fbt TARGET_HW=$TARGET_HW $FBT_BUILD_TYPE updater_package
echo "firmware_api=$(./fbt TARGET_HW=$TARGET_HW get_apiversion)" >> $GITHUB_OUTPUT
- name: "Check for uncommitted changes"
run: |
Expand All @@ -91,66 +56,3 @@ jobs:
with:
path: |
dist/${{ env.TARGET }}-*/flipper-z-${{ env.TARGET }}-update-*
dist/${{ env.TARGET }}-*/flipper-z-${{ env.TARGET }}-sdk-*
- name: "Copy build output"
env:
INDEXER_URL: ${{ secrets.INDEXER_URL }}
if: ${{ env.INDEXER_URL != '' && (github.event.pull_request || (github.event_name == 'push' && ((github.ref_name == 'dev' && !contains(github.event.head_commit.message, '--nobuild')) || startsWith(github.ref, 'refs/tags/')))) }}
run: |
set -e
rm -rf artifacts || true
mkdir artifacts
cp dist/${TARGET}-*/flipper-z-${TARGET}-{update,sdk}-* artifacts/
cd dist/${TARGET}-*/${TARGET}-update-*/
ARTIFACT_TAG=flipper-z-"$(basename "$(realpath .)")"
7z a ../../../artifacts/${ARTIFACT_TAG}.zip .
echo "ARTIFACT_TAG=$ARTIFACT_TAG" >> $GITHUB_ENV
VERSION_TAG="$(basename "$(realpath .)" | cut -d- -f3-)"
echo "VERSION_TAG=$VERSION_TAG" >> $GITHUB_ENV
- name: "Upload artifacts to update server"
env:
INDEXER_URL: ${{ secrets.INDEXER_URL }}
if: ${{ env.INDEXER_URL != '' && (github.event.pull_request || (github.event_name == 'push' && ((github.ref_name == 'dev' && !contains(github.event.head_commit.message, '--nobuild')) || startsWith(github.ref, 'refs/tags/')))) }}
run: |
curl "${{ secrets.INDEXER_URL }}"/firmware/directory.json > previndex.json
FILES=$(for ARTIFACT in $(find artifacts -maxdepth 1 -not -type d); do echo "-F files=@${ARTIFACT}"; done)
curl --fail -L -H "Token: ${{ secrets.INDEXER_TOKEN }}" \
-F "branch=${BRANCH_NAME}" \
-F "version_token=${COMMIT_SHA}" \
${FILES[@]} \
"${{ secrets.INDEXER_URL }}"/firmware/uploadfiles
- name: "Find previous comment"
env:
INDEXER_URL: ${{ secrets.INDEXER_URL }}
if: ${{ env.INDEXER_URL != '' && github.event.pull_request && matrix.target == env.DEFAULT_TARGET }}
uses: peter-evans/find-comment@v3
id: find-comment
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: "github-actions[bot]"
body-includes: "Compiled ${{ matrix.target }} firmware for commit"

- name: "Create or update comment"
env:
INDEXER_URL: ${{ secrets.INDEXER_URL }}
if: ${{ env.INDEXER_URL != '' && github.event.pull_request && matrix.target == env.DEFAULT_TARGET }}
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: ${{ steps.find-comment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
**Compiled ${{ matrix.target }} firmware for commit `${{steps.names.outputs.commit_sha}}`:**
- [☁️ Flipper Lab/App](https://lab.flipper.net/?url=${{secrets.INDEXER_URL}}/firmware/${{steps.names.outputs.branch_name}}/flipper-z-${{steps.names.outputs.default_target}}-update-${{steps.names.outputs.suffix}}.tgz&channel=mntm-${{steps.names.outputs.branch_name}}&version=${{steps.names.outputs.commit_sha}})
- [📦 qFlipper Package](${{secrets.INDEXER_URL}}/firmware/${{steps.names.outputs.branch_name}}/flipper-z-${{steps.names.outputs.default_target}}-update-${{steps.names.outputs.suffix}}.tgz)
edit-mode: replace

- name: Send devbuild webhook
env:
INDEXER_URL: ${{ secrets.INDEXER_URL }}
BUILD_WEBHOOK: ${{ secrets.BUILD_WEBHOOK }}
if: ${{ env.INDEXER_URL != '' && github.event_name == 'push' && github.ref_name == 'dev' && !contains(github.event.head_commit.message, '--nobuild') }}
run: |
python .github/workflow_data/devbuild.py
32 changes: 32 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: "Lint"

on:
push:
pull_request:

env:
SET_GH_OUTPUT: 1

jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: "Checkout firmware"
uses: actions/checkout@v4
with:
repository: Next-Flip/Momentum-Firmware
fetch-depth: 1
ref: dev
submodules: recursive

- name: "Checkout apps"
uses: actions/checkout@v4
with:
path: applications/external
fetch-depth: 1
ref: ${{ github.event.pull_request.head.sha }}

- name: "Check formatting"
run: |
git add applications/external
./fbt lint_all

0 comments on commit 36671ed

Please sign in to comment.