|
@@ -129,458 +129,6 @@ jobs:
|
|
|
git status
|
|
|
build_tools.py environment --build ${{ needs.bootstrap.outputs.build_number }} --env_file "$GITHUB_ENV" --node "${{matrix.node}}" --depth ${{matrix.depth}} --major 2 --docker sle118/squeezelite-esp32-idfv43
|
|
|
|
|
|
- - uses: actions/download-artifact@master
|
|
|
- name: Restore common objects
|
|
|
- with:
|
|
|
- name: prebuilt_objects
|
|
|
- - name: Build the firmware
|
|
|
- if: ${{ needs.bootstrap.outputs.mock == 0 }}
|
|
|
- run: |
|
|
|
- . ${IDF_PYTHON_ENV_PATH}/bin/activate
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/protoc
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/protoc-gen-nanopb
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/*.py
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/*.py2
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/proto/*.py
|
|
|
- echo "Copying target sdkconfig"
|
|
|
- cp build-scripts/${TARGET_BUILD_NAME}-sdkconfig.defaults sdkconfig
|
|
|
- echo "Building project"
|
|
|
- idf.py build -DDEPTH=${DEPTH} -DBUILD_NUMBER=${BUILD_NUMBER}-${DEPTH}
|
|
|
- - name: Build Mock firmware
|
|
|
- if: ${{ needs.bootstrap.outputs.mock == 1 }}
|
|
|
- run: |
|
|
|
- mkdir -p build
|
|
|
- cd build
|
|
|
- mkdir -p partition_table
|
|
|
- mkdir -p bootloader
|
|
|
- echo \\"mock content\\"> ./squeezelite.bin
|
|
|
- echo \"mock content\"> ./recovery.bin
|
|
|
- echo \"mock content\"> ./bootloader/bootloader.bin
|
|
|
- echo \"mock content\"> ./partition_table/partition-table.bin
|
|
|
- echo \"mock content\"> ./ota_data_initial.bin
|
|
|
- echo \"mock content\"> ./flash_project_args
|
|
|
- echo \"mock content\"> ./size_comp1.txt
|
|
|
- echo \"mock content\"> ./size_comp2.txt
|
|
|
- echo \"mock content\"> ./partitions.csv
|
|
|
- echo { \"write_flash_args\" : [ \"--flash_mode\", \"dio\", \"--flash_size\", \"detect\", \"--flash_freq\", \"80m\" ], \"flash_settings\" : { \"flash_mode\": \"dio\", \"flash_size\": \"detect\", \"flash_freq\": \"80m\" }, \"flash_files\" : { \"0x8000\" : \"partition_table/partition-table.bin\", \"0xd000\" : \"ota_data_initial.bin\", \"0x1000\" : \"bootloader/bootloader.bin\", \"0x10000\" : \"recovery.bin\", \"0x150000\" : \"squeezelite.bin\" }, \"partition_table\" : { \"offset\" : \"0x8000\", \"file\" : \"partition_table/partition-table.bin\" }, \"otadata\" : { \"offset\" : \"0xd000\", \"file\" : \"ota_data_initial.bin\" }, \"bootloader\" : { \"offset\" : \"0x1000\", \"file\" : \"bootloader/bootloader.bin\" }, \"app\" : { \"offset\" : \"0x10000\", \"file\" : \"recovery.bin\" }, \"squeezelite\" : { \"offset\" : \"0x150000\", \"file\" : \"squeezelite.bin\" }, \"extra_esptool_args\" : { \"after\" : \"hard_reset\", \"before\" : \"default_reset\" } } > ./flasher_args.json
|
|
|
- - name: Create Release Artifact Zip
|
|
|
- if: ${{ needs.bootstrap.outputs.release_flag == 1 && needs.bootstrap.outputs.mock == 0 }}
|
|
|
- run: |
|
|
|
- if [ -z "${artifact_file_name}" ]
|
|
|
- then
|
|
|
- echo "No artifact file name set. Will not generate zip file."
|
|
|
- else
|
|
|
- echo "Generating build artifact zip file"
|
|
|
- zip -r build_output.zip build
|
|
|
- zip build/${artifact_file_name} partitions*.csv components/ build/*.bin build/bootloader/bootloader.bin build/partition_table/partition-table.bin build/flash_project_args build/size_*.txt
|
|
|
- fi
|
|
|
- - name: Upload Build Artifacts
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
- if: ${{ needs.bootstrap.outputs.mock == 0 }}
|
|
|
- with:
|
|
|
- name: ${{ env.artifact_prefix }}
|
|
|
- path: |
|
|
|
- build/flash_project_args
|
|
|
- build/size_comp1.txt
|
|
|
- build/size_comp2.txt
|
|
|
- partitions.csv
|
|
|
- sdkconfig
|
|
|
- server_certs/github.pem
|
|
|
- build/*.bin
|
|
|
- build/bootloader/bootloader.bin
|
|
|
- build/partition_table/partition-table.bin
|
|
|
- build_output.zip
|
|
|
- - name: Create Release
|
|
|
- if: ${{ needs.bootstrap.outputs.release_flag == 1 && needs.bootstrap.outputs.mock == 0 }}
|
|
|
- id: create_release
|
|
|
- uses: actions/create-release@v1
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
|
|
|
- with:
|
|
|
- tag_name: ${{ env.tag }}
|
|
|
- release_name: ${{ env.name }}
|
|
|
- body: ${{ env.description }}
|
|
|
- draft: false
|
|
|
- prerelease: true
|
|
|
- - name: Upload Release Asset - Squeezelite binary file
|
|
|
- if: ${{ needs.bootstrap.outputs.release_flag == 1 && needs.bootstrap.outputs.mock == 0 }}
|
|
|
- id: upload-release-asset
|
|
|
- uses: actions/upload-release-asset@v1
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
- with:
|
|
|
- upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
|
|
|
- asset_path: build/squeezelite.bin
|
|
|
- asset_name: ${{ env.artifact_bin_file_name }}
|
|
|
- asset_content_type: application/octet-stream
|
|
|
- - name: Upload Release Asset - Zip file
|
|
|
- if: ${{ needs.bootstrap.outputs.release_flag == 1 && needs.bootstrap.outputs.mock == 0 }}
|
|
|
- id: upload-release-asset-zip
|
|
|
- uses: actions/upload-release-asset@v1
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
- with:
|
|
|
- upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
|
|
|
- asset_path: build/${{ env.artifact_file_name }}
|
|
|
- asset_name: ${{ env.artifact_file_name }}
|
|
|
- asset_content_type: application/octet-stream
|
|
|
-name: Platform Build
|
|
|
-on:
|
|
|
- push:
|
|
|
- branches:
|
|
|
- - '**4.3'
|
|
|
- workflow_dispatch:
|
|
|
- inputs:
|
|
|
- ui_build:
|
|
|
- description: 'Force Rebuilding the UI. When not forced, the system will check for [ui-build] in the last commit message to trigger a ui rebuild'
|
|
|
- required: true
|
|
|
- type: boolean
|
|
|
- release_build:
|
|
|
- description: 'Force a Release build. When not forced, the system will check for release word in the last commit message to trigger a release'
|
|
|
- required: true
|
|
|
- type: boolean
|
|
|
-jobs:
|
|
|
- bootstrap:
|
|
|
- name: Global setup
|
|
|
- runs-on: ubuntu-latest
|
|
|
- container:
|
|
|
- image: sle118/squeezelite-esp32-idfv43
|
|
|
- outputs:
|
|
|
- build_number: ${{ steps.buildnumber.outputs.build_number }}
|
|
|
- ui_build: ${{ steps.build_flags.outputs.ui_build }}
|
|
|
- release_flag: ${{ steps.build_flags.outputs.release_flag }}
|
|
|
- mock: ${{ steps.build_flags.outputs.mock }}
|
|
|
- steps:
|
|
|
- - uses: actions/checkout@v2
|
|
|
- with:
|
|
|
- fetch-depth: 0
|
|
|
- submodules: true
|
|
|
- - name: Generate common build number
|
|
|
- id: buildnumber
|
|
|
- uses: einaregilsson/build-number@v3
|
|
|
- with:
|
|
|
- token: ${{secrets.github_token}}
|
|
|
- - name: Set build flags
|
|
|
- id: build_flags
|
|
|
- run: |
|
|
|
- git config --global --add safe.directory /__w/squeezelite-esp32/squeezelite-esp32
|
|
|
- [ ${{github.event.inputs.ui_build}} ] && ui_build_option="--ui_build" || ui_build_option=""
|
|
|
- [ ${{github.event.inputs.release_build}} ] && release_build_option="--force" || release_build_option=""
|
|
|
- echo "ui_build_option=$ui_build_option" >> $GITHUB_ENV
|
|
|
- echo "release_build_option=$release_build_option" >> $GITHUB_ENV
|
|
|
- echo "Dumping environment"
|
|
|
- env
|
|
|
- . /opt/esp/python_env/idf4.3_py3.8_env/bin/activate
|
|
|
- # build_flags support the following options
|
|
|
- # --mock - to mock the compilation part - this is to be used for testing only
|
|
|
- # --force - to force a release build even if the last commit message doesn't contain the word "release"
|
|
|
- # --ui_build - to force a ui_build even if the last commit message doesn't contain "[ui-build]"
|
|
|
- build_tools.py build_flags $ui_build_option $release_build_option
|
|
|
- - name: Show Build Flags
|
|
|
- run: |
|
|
|
- echo "Running with the following options"
|
|
|
- echo "Web Build Flag=${{steps.build_flags.outputs.ui_build}}"
|
|
|
- echo "Mock flag=${{steps.build_flags.outputs.mock}}"
|
|
|
- echo "Release Flag=${{steps.build_flags.outputs.release_flag}}"
|
|
|
- - name: Refresh certificates
|
|
|
- if: ${{ steps.build_flags.outputs.release_flag }}
|
|
|
- run: |
|
|
|
- git update-index --chmod=+x ./server_certs/getcert.sh
|
|
|
- cd server_certs;./getcert.sh;cat github.pem;cd ..
|
|
|
- - name: Setup Node.js dependencies
|
|
|
- if: ${{ !env.ACT }}
|
|
|
- uses: actions/setup-node@v3
|
|
|
- with:
|
|
|
- node-version: 16
|
|
|
- cache: 'npm'
|
|
|
- cache-dependency-path: components/wifi-manager/webapp/package.json
|
|
|
- - name: Build Web Application
|
|
|
- if: ${{ steps.build_flags.outputs.ui_build == 1 }}
|
|
|
- run: |
|
|
|
- cd components/wifi-manager/webapp/
|
|
|
- npm install
|
|
|
- npm run-script build
|
|
|
- - name: Update repository with prebuilt items
|
|
|
- if: ${{ steps.build_flags.outputs.ui_build == 1 || steps.build_flags.outputs.release_flag == 1 }}
|
|
|
- run: |
|
|
|
- git config user.name github-actions
|
|
|
- git config user.email github-actions@github.com
|
|
|
- git add server_certs
|
|
|
- git add components/wifi-manager/webapp/*.h
|
|
|
- git add components/wifi-manager/webapp/*.c
|
|
|
- git add components/wifi-manager/webapp/*.cmake
|
|
|
- git add components/wifi-manager/webapp/dist/*
|
|
|
- git commit -m "Update prebuilt objects [skip actions]"
|
|
|
- git push https://${{secrets.github_token}}@github.com/sle118/squeezelite-esp32.git
|
|
|
- - name: Locally store commonly built objects
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
- with:
|
|
|
- name: prebuilt_objects
|
|
|
- path: |
|
|
|
- server_certs
|
|
|
- components/wifi-manager/webapp/*.h
|
|
|
- components/wifi-manager/webapp/*.c
|
|
|
- components/wifi-manager/webapp/dist/*
|
|
|
- components/wifi-manager/webapp/*.cmake
|
|
|
- build:
|
|
|
- runs-on: ubuntu-latest
|
|
|
- container:
|
|
|
- image: sle118/squeezelite-esp32-idfv43
|
|
|
- needs: [bootstrap]
|
|
|
- strategy:
|
|
|
- matrix:
|
|
|
- node: [I2S-4MFlash, SqueezeAmp, Muse]
|
|
|
- depth: [16, 32]
|
|
|
- exclude:
|
|
|
- - node: Muse
|
|
|
- depth: 32
|
|
|
- - node: bootstrap
|
|
|
- depth: 32
|
|
|
- steps:
|
|
|
- - uses: actions/checkout@v2
|
|
|
- with:
|
|
|
- fetch-depth: 0
|
|
|
- submodules: true
|
|
|
- - name: Show Build Flags
|
|
|
- run: |
|
|
|
- echo "Running with the following options"
|
|
|
- echo "Web Build Flag=${{needs.bootstrap.outputs.ui_build}}"
|
|
|
- echo "Mock flag=${{needs.bootstrap.outputs.mock}}"
|
|
|
- echo "Release Flag=${{needs.bootstrap.outputs.release_flag}}"
|
|
|
- echo Environment File name: $GITHUB_ENV
|
|
|
- - name: Set build parameters
|
|
|
- run: |
|
|
|
- . /opt/esp/python_env/idf4.3_py3.8_env/bin/activate
|
|
|
- git config --global --add safe.directory /__w/squeezelite-esp32/squeezelite-esp32
|
|
|
- git status
|
|
|
- build_tools.py environment --build ${{ needs.bootstrap.outputs.build_number }} --env_file "$GITHUB_ENV" --node "${{matrix.node}}" --depth ${{matrix.depth}} --major 2 --docker sle118/squeezelite-esp32-idfv43
|
|
|
-
|
|
|
- - uses: actions/download-artifact@master
|
|
|
- name: Restore common objects
|
|
|
- with:
|
|
|
- name: prebuilt_objects
|
|
|
- - name: Build the firmware
|
|
|
- if: ${{ needs.bootstrap.outputs.mock == 0 }}
|
|
|
- run: |
|
|
|
- . ${IDF_PYTHON_ENV_PATH}/bin/activate
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/protoc
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/protoc-gen-nanopb
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/*.py
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/*.py2
|
|
|
- chmod +x ./components/spotify/cspot/bell/external/nanopb/generator/proto/*.py
|
|
|
- echo "Copying target sdkconfig"
|
|
|
- cp build-scripts/${TARGET_BUILD_NAME}-sdkconfig.defaults sdkconfig
|
|
|
- echo "Building project"
|
|
|
- idf.py build -DDEPTH=${DEPTH} -DBUILD_NUMBER=${BUILD_NUMBER}-${DEPTH}
|
|
|
- - name: Build Mock firmware
|
|
|
- if: ${{ needs.bootstrap.outputs.mock == 1 }}
|
|
|
- run: |
|
|
|
- mkdir -p build
|
|
|
- cd build
|
|
|
- mkdir -p partition_table
|
|
|
- mkdir -p bootloader
|
|
|
- echo \\"mock content\\"> ./squeezelite.bin
|
|
|
- echo \"mock content\"> ./recovery.bin
|
|
|
- echo \"mock content\"> ./bootloader/bootloader.bin
|
|
|
- echo \"mock content\"> ./partition_table/partition-table.bin
|
|
|
- echo \"mock content\"> ./ota_data_initial.bin
|
|
|
- echo \"mock content\"> ./flash_project_args
|
|
|
- echo \"mock content\"> ./size_comp1.txt
|
|
|
- echo \"mock content\"> ./size_comp2.txt
|
|
|
- echo \"mock content\"> ./partitions.csv
|
|
|
- echo { \"write_flash_args\" : [ \"--flash_mode\", \"dio\", \"--flash_size\", \"detect\", \"--flash_freq\", \"80m\" ], \"flash_settings\" : { \"flash_mode\": \"dio\", \"flash_size\": \"detect\", \"flash_freq\": \"80m\" }, \"flash_files\" : { \"0x8000\" : \"partition_table/partition-table.bin\", \"0xd000\" : \"ota_data_initial.bin\", \"0x1000\" : \"bootloader/bootloader.bin\", \"0x10000\" : \"recovery.bin\", \"0x150000\" : \"squeezelite.bin\" }, \"partition_table\" : { \"offset\" : \"0x8000\", \"file\" : \"partition_table/partition-table.bin\" }, \"otadata\" : { \"offset\" : \"0xd000\", \"file\" : \"ota_data_initial.bin\" }, \"bootloader\" : { \"offset\" : \"0x1000\", \"file\" : \"bootloader/bootloader.bin\" }, \"app\" : { \"offset\" : \"0x10000\", \"file\" : \"recovery.bin\" }, \"squeezelite\" : { \"offset\" : \"0x150000\", \"file\" : \"squeezelite.bin\" }, \"extra_esptool_args\" : { \"after\" : \"hard_reset\", \"before\" : \"default_reset\" } } > ./flasher_args.json
|
|
|
- - name: Create Release Artifact Zip
|
|
|
- if: ${{ needs.bootstrap.outputs.release_flag == 1 && needs.bootstrap.outputs.mock == 0 }}
|
|
|
- run: |
|
|
|
- if [ -z "${artifact_file_name}" ]
|
|
|
- then
|
|
|
- echo "No artifact file name set. Will not generate zip file."
|
|
|
- else
|
|
|
- echo "Generating build artifact zip file"
|
|
|
- zip -r build_output.zip build
|
|
|
- zip build/${artifact_file_name} partitions*.csv components/ build/*.bin build/bootloader/bootloader.bin build/partition_table/partition-table.bin build/flash_project_args build/size_*.txt
|
|
|
- fi
|
|
|
- - name: Upload Build Artifacts
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
- if: ${{ needs.bootstrap.outputs.mock == 0 }}
|
|
|
- with:
|
|
|
- name: ${{ env.artifact_prefix }}
|
|
|
- path: |
|
|
|
- build/flash_project_args
|
|
|
- build/size_comp1.txt
|
|
|
- build/size_comp2.txt
|
|
|
- partitions.csv
|
|
|
- sdkconfig
|
|
|
- server_certs/github.pem
|
|
|
- build/*.bin
|
|
|
- build/bootloader/bootloader.bin
|
|
|
- build/partition_table/partition-table.bin
|
|
|
- build_output.zip
|
|
|
- - name: Create Release
|
|
|
- if: ${{ needs.bootstrap.outputs.release_flag == 1 && needs.bootstrap.outputs.mock == 0 }}
|
|
|
- id: create_release
|
|
|
- uses: actions/create-release@v1
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
|
|
|
- with:
|
|
|
- tag_name: ${{ env.tag }}
|
|
|
- release_name: ${{ env.name }}
|
|
|
- body: ${{ env.description }}
|
|
|
- draft: false
|
|
|
- prerelease: true
|
|
|
- - name: Upload Release Asset - Squeezelite binary file
|
|
|
- if: ${{ needs.bootstrap.outputs.release_flag == 1 && needs.bootstrap.outputs.mock == 0 }}
|
|
|
- id: upload-release-asset
|
|
|
- uses: actions/upload-release-asset@v1
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
- with:
|
|
|
- upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
|
|
|
- asset_path: build/squeezelite.bin
|
|
|
- asset_name: ${{ env.artifact_bin_file_name }}
|
|
|
- asset_content_type: application/octet-stream
|
|
|
- - name: Upload Release Asset - Zip file
|
|
|
- if: ${{ needs.bootstrap.outputs.release_flag == 1 && needs.bootstrap.outputs.mock == 0 }}
|
|
|
- id: upload-release-asset-zip
|
|
|
- uses: actions/upload-release-asset@v1
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
- with:
|
|
|
- upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
|
|
|
- asset_path: build/${{ env.artifact_file_name }}
|
|
|
- asset_name: ${{ env.artifact_file_name }}
|
|
|
- asset_content_type: application/octet-stream
|
|
|
-name: Platform Build
|
|
|
-on:
|
|
|
- push:
|
|
|
- branches:
|
|
|
- - '**4.3'
|
|
|
- workflow_dispatch:
|
|
|
- inputs:
|
|
|
- ui_build:
|
|
|
- description: 'Force Rebuilding the UI. When not forced, the system will check for [ui-build] in the last commit message to trigger a ui rebuild'
|
|
|
- required: true
|
|
|
- type: boolean
|
|
|
- release_build:
|
|
|
- description: 'Force a Release build. When not forced, the system will check for release word in the last commit message to trigger a release'
|
|
|
- required: true
|
|
|
- type: boolean
|
|
|
-jobs:
|
|
|
- bootstrap:
|
|
|
- name: Global setup
|
|
|
- runs-on: ubuntu-latest
|
|
|
- container:
|
|
|
- image: sle118/squeezelite-esp32-idfv43
|
|
|
- outputs:
|
|
|
- build_number: ${{ steps.buildnumber.outputs.build_number }}
|
|
|
- ui_build: ${{ steps.build_flags.outputs.ui_build }}
|
|
|
- release_flag: ${{ steps.build_flags.outputs.release_flag }}
|
|
|
- mock: ${{ steps.build_flags.outputs.mock }}
|
|
|
- steps:
|
|
|
- - uses: actions/checkout@v2
|
|
|
- with:
|
|
|
- fetch-depth: 0
|
|
|
- submodules: true
|
|
|
- - name: Generate common build number
|
|
|
- id: buildnumber
|
|
|
- uses: einaregilsson/build-number@v3
|
|
|
- with:
|
|
|
- token: ${{secrets.github_token}}
|
|
|
- - name: Set build flags
|
|
|
- id: build_flags
|
|
|
- run: |
|
|
|
- git config --global --add safe.directory /__w/squeezelite-esp32/squeezelite-esp32
|
|
|
- [ ${{github.event.inputs.ui_build}} ] && ui_build_option="--ui_build" || ui_build_option=""
|
|
|
- [ ${{github.event.inputs.release_build}} ] && release_build_option="--force" || release_build_option=""
|
|
|
- echo "ui_build_option=$ui_build_option" >> $GITHUB_ENV
|
|
|
- echo "release_build_option=$release_build_option" >> $GITHUB_ENV
|
|
|
- echo "Dumping environment"
|
|
|
- env
|
|
|
- . /opt/esp/python_env/idf4.3_py3.8_env/bin/activate
|
|
|
- # build_flags support the following options
|
|
|
- # --mock - to mock the compilation part - this is to be used for testing only
|
|
|
- # --force - to force a release build even if the last commit message doesn't contain the word "release"
|
|
|
- # --ui_build - to force a ui_build even if the last commit message doesn't contain "[ui-build]"
|
|
|
- build_tools.py build_flags $ui_build_option $release_build_option
|
|
|
- - name: Show Build Flags
|
|
|
- run: |
|
|
|
- echo "Running with the following options"
|
|
|
- echo "Web Build Flag=${{steps.build_flags.outputs.ui_build}}"
|
|
|
- echo "Mock flag=${{steps.build_flags.outputs.mock}}"
|
|
|
- echo "Release Flag=${{steps.build_flags.outputs.release_flag}}"
|
|
|
- - name: Refresh certificates
|
|
|
- if: ${{ steps.build_flags.outputs.release_flag }}
|
|
|
- run: |
|
|
|
- git update-index --chmod=+x ./server_certs/getcert.sh
|
|
|
- cd server_certs;./getcert.sh;cat github.pem;cd ..
|
|
|
- - name: Setup Node.js dependencies
|
|
|
- if: ${{ !env.ACT }}
|
|
|
- uses: actions/setup-node@v3
|
|
|
- with:
|
|
|
- node-version: 16
|
|
|
- cache: 'npm'
|
|
|
- cache-dependency-path: components/wifi-manager/webapp/package.json
|
|
|
- - name: Build Web Application
|
|
|
- if: ${{ steps.build_flags.outputs.ui_build == 1 }}
|
|
|
- run: |
|
|
|
- cd components/wifi-manager/webapp/
|
|
|
- npm install
|
|
|
- npm run-script build
|
|
|
- - name: Update repository with prebuilt items
|
|
|
- if: ${{ steps.build_flags.outputs.ui_build == 1 || steps.build_flags.outputs.release_flag == 1 }}
|
|
|
- run: |
|
|
|
- git config user.name github-actions
|
|
|
- git config user.email github-actions@github.com
|
|
|
- git add server_certs
|
|
|
- git add components/wifi-manager/webapp/*.h
|
|
|
- git add components/wifi-manager/webapp/*.c
|
|
|
- git add components/wifi-manager/webapp/*.cmake
|
|
|
- git add components/wifi-manager/webapp/dist/*
|
|
|
- git commit -m "Update prebuilt objects [skip actions]"
|
|
|
- git push https://${{secrets.github_token}}@github.com/sle118/squeezelite-esp32.git
|
|
|
- - name: Locally store commonly built objects
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
- with:
|
|
|
- name: prebuilt_objects
|
|
|
- path: |
|
|
|
- server_certs
|
|
|
- components/wifi-manager/webapp/*.h
|
|
|
- components/wifi-manager/webapp/*.c
|
|
|
- components/wifi-manager/webapp/dist/*
|
|
|
- components/wifi-manager/webapp/*.cmake
|
|
|
- build:
|
|
|
- runs-on: ubuntu-latest
|
|
|
- container:
|
|
|
- image: sle118/squeezelite-esp32-idfv43
|
|
|
- needs: [bootstrap]
|
|
|
- strategy:
|
|
|
- matrix:
|
|
|
- node: [I2S-4MFlash, SqueezeAmp, Muse]
|
|
|
- depth: [16, 32]
|
|
|
- exclude:
|
|
|
- - node: Muse
|
|
|
- depth: 32
|
|
|
- - node: bootstrap
|
|
|
- depth: 32
|
|
|
- steps:
|
|
|
- - uses: actions/checkout@v2
|
|
|
- with:
|
|
|
- fetch-depth: 0
|
|
|
- submodules: true
|
|
|
- - name: Show Build Flags
|
|
|
- run: |
|
|
|
- echo "Running with the following options"
|
|
|
- echo "Web Build Flag=${{needs.bootstrap.outputs.ui_build}}"
|
|
|
- echo "Mock flag=${{needs.bootstrap.outputs.mock}}"
|
|
|
- echo "Release Flag=${{needs.bootstrap.outputs.release_flag}}"
|
|
|
- echo Environment File name: $GITHUB_ENV
|
|
|
- - name: Set build parameters
|
|
|
- run: |
|
|
|
- . /opt/esp/python_env/idf4.3_py3.8_env/bin/activate
|
|
|
- git config --global --add safe.directory /__w/squeezelite-esp32/squeezelite-esp32
|
|
|
- git status
|
|
|
- build_tools.py environment --build ${{ needs.bootstrap.outputs.build_number }} --env_file "$GITHUB_ENV" --node "${{matrix.node}}" --depth ${{matrix.depth}} --major 2 --docker sle118/squeezelite-esp32-idfv43
|
|
|
-
|
|
|
- uses: actions/download-artifact@master
|
|
|
name: Restore common objects
|
|
|
with:
|
|
@@ -682,6 +230,4 @@ jobs:
|
|
|
if: ${{ always() && !cancelled() && needs.bootstrap.outputs.release_flag == 1 && needs.bootstrap.outputs.mock == 0 }}
|
|
|
uses: ./.github/workflows/web_deploy.yml
|
|
|
secrets:
|
|
|
- WEB_INSTALLER: ${{ secrets.WEB_INSTALLER }}
|
|
|
-
|
|
|
-
|
|
|
+ WEB_INSTALLER: ${{ secrets.WEB_INSTALLER }}
|