name: Build App on: push: branches: - '**' pull_request: branches: - '**' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} APP_NAME: ${{ github.event.repository.name }} jobs: refs: name: Prepare CI Environment runs-on: ubuntu-20.04 outputs: sha_short: ${{ steps.refs.outputs.sha_short }} short_ref: ${{ steps.refs.outputs.short_ref }} version: ${{ steps.refs.outputs.version }} new_release: ${{ steps.refs.outputs.new_release }} steps: - name: Source checkout uses: actions/checkout@v3 with: submodules: recursive - name: Update SDKs if required run: make update-submodules - name: Semantic Release id: semantic uses: cycjimmy/semantic-release-action@v4 with: dry_run: true semantic_version: 21 extra_plugins: | @semantic-release/changelog @semantic-release/git conventional-changelog-conventionalcommits@7 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Set outputs id: refs run: | export BRANCH=${GITHUB_REF#refs/*/} echo "branch: ${BRANCH}" export BRANCHTRANSLATED=$(echo ${BRANCH} | tr '/' '_') echo "short_ref: ${BRANCHTRANSLATED}" export VERSION="" if ${{ steps.semantic.outputs.new_release_published == 'true' }}; then export VERSION=${{ steps.semantic.outputs.new_release_version }} else export VERSION=${BRANCHTRANSLATED}_$(git rev-parse --short=12 HEAD) fi echo "new_release: ${{ steps.semantic.outputs.new_release_published }}" echo "version: ${VERSION}" echo "::set-output name=new_release::${{ steps.semantic.outputs.new_release_published }}" echo "::set-output name=short_ref::${BRANCHTRANSLATED}" echo "::set-output name=sha_short::SHA-$(git rev-parse --short=12 HEAD)" echo "::set-output name=version::${VERSION}" build2: name: Build Simulator needs: refs runs-on: windows-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Setup MSBuild uses: microsoft/setup-msbuild@v1.0.2 - name: Checkout simulator repository run: | git clone https://github.com/openshwprojects/obkSimulator mkdir -p ./libs_for_simulator cp -r ./obkSimulator/simulator/libs_for_simulator/* ./libs_for_simulator - name: Build project run: msbuild openBeken_win32_mvsc2017.vcxproj /p:Configuration=Release /p:PlatformToolset=v143 - name: Flatten build assets run: | mkdir -p flat cp ./Release/openBeken_win32.exe flat/ cp ./obkSimulator/simulator/*.dll flat/ cp ./run_*.bat flat/ mkdir -p flat/examples cp -r ./obkSimulator/examples/* flat/examples/ - name: Run unit tests run: | ./flat/openBeken_win32.exe -runUnitTests 2 - name: Compress build assets run: | Compress-Archive -Path flat/* -DestinationPath obkSimulator_win32_${{ needs.refs.outputs.version }}.zip - name: Copy build assets run: | mkdir -Force output/${{ needs.refs.outputs.version }} cp obkSimulator_win32_${{ needs.refs.outputs.version }}.zip output/${{ needs.refs.outputs.version }}/obkSimulator_${{ needs.refs.outputs.version }}.zip - name: Upload build assets uses: actions/upload-artifact@v3 with: name: ${{ env.APP_NAME }}_${{ needs.refs.outputs.version }} path: output/${{ needs.refs.outputs.version }}/obkSimulator_${{ needs.refs.outputs.version }}.zip build: name: Build needs: refs runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: platform: [OpenBK7231T, OpenBK7231N, OpenXR809, OpenBL602, OpenW800, OpenW600, OpenLN882H, OpenTR6260] steps: - name: Source checkout uses: actions/checkout@v3 with: submodules: recursive - uses: actions/setup-python@v2 with: python-version: '3.8' architecture: 'x64' - name: Install dependencies run: | sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get -y install libc6-i386 make cmake gcc-arm-none-eabi pip3 install pycryptodomex pip3 install configobj pip3 install toml pip3 install fdt - run: ls -la - name: Run make run: make APP_VERSION=${{ needs.refs.outputs.version }} APP_NAME=${{ matrix.platform }} ${{ matrix.platform }} - name: Save build assets uses: actions/upload-artifact@v3 with: name: ${{ env.APP_NAME }}_${{ needs.refs.outputs.version }} path: | output/${{ needs.refs.outputs.version }}/OpenBK7231T_UA_${{ needs.refs.outputs.version }}.bin output/${{ needs.refs.outputs.version }}/OpenBK7231T_UG_${{ needs.refs.outputs.version }}.bin output/${{ needs.refs.outputs.version }}/OpenBK7231T_QIO_${{ needs.refs.outputs.version }}.bin output/${{ needs.refs.outputs.version }}/OpenBK7231N_QIO_${{ needs.refs.outputs.version }}.bin output/${{ needs.refs.outputs.version }}/OpenBK7231N_UG_${{ needs.refs.outputs.version }}.bin output/${{ needs.refs.outputs.version }}/OpenBK7231M_QIO_${{ needs.refs.outputs.version }}.bin output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}.rbl output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}.img output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}.bin output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}.fls output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}_ota.img output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}_gz.img output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}_OTA.bin output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}_OTA.bin.xz output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}_OTA.bin.xz.ota if-no-files-found: warn build_idf: name: Build IDF needs: refs runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: platform: [OpenESP32, OpenESP32C3, OpenESP32C2, OpenESP32C6, OpenESP32S3, OpenESP32S2] steps: - name: Source checkout uses: actions/checkout@v3 with: submodules: recursive - uses: actions/setup-python@v2 with: python-version: '3.8' architecture: 'x64' - name: Install dependencies run: | sudo apt-get update sudo apt-get -y install make cmake python3-venv pip3 install pycryptodomex pip3 install configobj pip3 install toml pip3 install fdt - name: Run make run: | cd sdk/esp-idf ./install.sh > /dev/null . ./export.sh . ./add_path.sh cd ../.. make APP_VERSION=${{ needs.refs.outputs.version }} APP_NAME=${{ matrix.platform }} ${{ matrix.platform }} - name: Save build assets uses: actions/upload-artifact@v3 with: name: ${{ env.APP_NAME }}_${{ needs.refs.outputs.version }} path: | output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}.img output/${{ needs.refs.outputs.version }}/${{ matrix.platform }}_${{ needs.refs.outputs.version }}.factory.bin if-no-files-found: warn release: name: Semantic Release Images and Artifacts runs-on: ubuntu-20.04 needs: [ refs, build, build_idf, build2 ] if: always() && needs.refs.outputs.new_release == 'true' && (github.ref == 'refs/heads/main' || github.ref_name == 'alpha') steps: - name: Source checkout uses: actions/checkout@v3 - name: Fetch build assets uses: actions/download-artifact@v3 with: name: ${{ env.APP_NAME }}_${{ needs.refs.outputs.version }} path: output/${{ needs.refs.outputs.version }} - name: Run Semantic Release id: semantic uses: cycjimmy/semantic-release-action@v4 with: dry_run: false semantic_version: 21 extra_plugins: | @semantic-release/changelog @semantic-release/git conventional-changelog-conventionalcommits@7 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Echo Semantic Release Versions if: steps.semantic.outputs.new_release_published == 'true' run: | echo ${{ steps.semantic.outputs.new_release_version }} echo ${{ steps.semantic.outputs.new_release_major_version }} echo ${{ steps.semantic.outputs.new_release_minor_version }} echo ${{ steps.semantic.outputs.new_release_patch_version }}