|
|
@@ -1,251 +0,0 @@
|
|
|
-name: "Build for Firmware"
|
|
|
-run-name: "Build ${{ inputs.DEPLOY_TARGET }} by @${{ github.ACTOR }}"
|
|
|
-
|
|
|
-on:
|
|
|
- workflow_dispatch:
|
|
|
- inputs:
|
|
|
- version:
|
|
|
- description: "Enter version to build or left empty for current version"
|
|
|
- required: false
|
|
|
- type: string
|
|
|
- release:
|
|
|
- types: [created, prereleased]
|
|
|
- push:
|
|
|
- paths:
|
|
|
- - .github/workflows/build-with-firmware.yml
|
|
|
-
|
|
|
-permissions:
|
|
|
- contents: write
|
|
|
- packages: write
|
|
|
-
|
|
|
-concurrency:
|
|
|
- group: firmware-build-${{ vars.FIRMWARE_VERSION }}-${{ vars.RELEASE_VERSION }}
|
|
|
- cancel-in-progress: false
|
|
|
-
|
|
|
-jobs:
|
|
|
- build-and-upload:
|
|
|
- runs-on: ubuntu-latest
|
|
|
- env:
|
|
|
- REPO_SELF: ${{ vars.REPO_SELF }}
|
|
|
- OFW_PATH: "applications_user/subbrute"
|
|
|
- RELATIVE_PATH: "applications/external/subbrute"
|
|
|
- CURRENT_VERSION: ${{ vars.RELEASE_VERSION }}
|
|
|
- RELEASE_VERSION: ${{ vars.RELEASE_VERSION }}
|
|
|
- ZIP_NAME: ""
|
|
|
- ZIP_TAG: ""
|
|
|
- TGZ_NAME: ""
|
|
|
- TGZ_TAG: ""
|
|
|
- strategy:
|
|
|
- fail-fast: false
|
|
|
- matrix:
|
|
|
- firmware: [unlshd, official]
|
|
|
- include:
|
|
|
- - firmware: unlshd
|
|
|
- url: ${{ vars.REPO_UNLEASHED }}
|
|
|
- version: ${{ vars.FIRMWARE_VERSION }}
|
|
|
- src-included: 0
|
|
|
- - firmware: official
|
|
|
- url: ${{ vars.REPO_OFFICIAL }}
|
|
|
- version: "official"
|
|
|
- src-included: 0
|
|
|
- steps:
|
|
|
- - name: Set version
|
|
|
- env:
|
|
|
- INPUT_VERSION: ${{ inputs.version }}
|
|
|
- CURRENT_VERSION: ${{ env.CURRENT_VERSION }}
|
|
|
- shell: pwsh
|
|
|
- run: |
|
|
|
- $ReleaseVersion = ([string]::IsNullOrWhitespace($env:INPUT_VERSION) ? $env:CURRENT_VERSION : $env:INPUT_VERSION)
|
|
|
- Write-Output ('RELEASE_VERSION={0}' -f $ReleaseVersion) >> $env:GITHUB_ENV
|
|
|
-
|
|
|
- - name: Copy Firmware Files
|
|
|
- uses: actions/checkout@v3
|
|
|
- with:
|
|
|
- repository: "${{ matrix.url }}"
|
|
|
- clean: "true"
|
|
|
- submodules: "true"
|
|
|
- ref: "dev"
|
|
|
-
|
|
|
- - name: Copy Repo Files
|
|
|
- if: ${{ matrix.src-included == 0 }}
|
|
|
- uses: actions/checkout@v3
|
|
|
- with:
|
|
|
- repository: "${{ vars.REPO_SELF }}"
|
|
|
- clean: "true"
|
|
|
- submodules: "true"
|
|
|
- path: "${{ env.OFW_PATH }}"
|
|
|
-
|
|
|
- - name: Print vars about state or repo if Unleashed
|
|
|
- if: ${{ matrix.src-included == 1 }}
|
|
|
- shell: pwsh
|
|
|
- run: |
|
|
|
- git log --pretty=format:'%s by %C(yellow)%an%Creset (%ad)%n %n%b' --date=local --abbrev-commit --max-count=1
|
|
|
- git submodule set-branch --branch master '${{ env.RELATIVE_PATH }}'
|
|
|
- git submodule sync '${{ env.RELATIVE_PATH }}'
|
|
|
- cd '${{ env.OFW_PATH }}'
|
|
|
- if ( '${{ env.CURRENT_VERSION }}' -ne '${{ env.RELEASE_VERSION }}' ) {
|
|
|
- Write-Output '::warning title=Different version::Current version is ${{ env.CURRENT_VERSION }} but we trying to build ${{ env.RELEASE_VERSION }}'
|
|
|
- git checkout tags/v${{ env.RELEASE_VERSION }} -b tmp-build
|
|
|
-
|
|
|
- if ( $LASTEXITCODE -ne 0 ) {
|
|
|
- Write-Error '::error title=Cannot checkout to this version::Error during execution checkout to this tag ${{ env.RELEASE_VERSION }}'
|
|
|
- exit 1
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $Output = (git log --pretty=format:'%s by %C(yellow)%an%Creset (%ad)%n %n%b' --date=local --abbrev-commit --max-count=1)
|
|
|
-
|
|
|
- if ( $LASTEXITCODE -ne 0 ) {
|
|
|
- Write-Error '::error title=Invalid checkout::Invalid checkout'
|
|
|
- exit 1
|
|
|
- }
|
|
|
- Write-Output ('::notice title=Git output::{0}' -f $Output)
|
|
|
-
|
|
|
- - name: Print vars about state or repo if Official
|
|
|
- if: ${{ matrix.src-included == 0 }}
|
|
|
- shell: pwsh
|
|
|
- run: |
|
|
|
- git log --pretty=format:'%s by %C(yellow)%an%Creset (%ad)%n %n%b' --date=local --abbrev-commit --max-count=1
|
|
|
- cd '${{ env.OFW_PATH }}'
|
|
|
-
|
|
|
- if ( '${{ env.CURRENT_VERSION }}' -ne '${{ env.RELEASE_VERSION }}' ) {
|
|
|
- Write-Output '::warning title=Different version::Current version is ${{ env.CURRENT_VERSION }} but we trying to build ${{ env.RELEASE_VERSION }}'
|
|
|
- git checkout tags/v${{ env.RELEASE_VERSION }} -b tmp-build
|
|
|
-
|
|
|
- if ( $LASTEXITCODE -ne 0 ) {
|
|
|
- Write-Error '::error title=Cannot checkout to this version::Error during execution checkout to this tag ${{ env.RELEASE_VERSION }}'
|
|
|
- exit 1
|
|
|
- }
|
|
|
- } else {
|
|
|
- $Output = (git log --pretty=format:'%s by %C(yellow)%an%Creset (%ad)%n %n%b' --date=local --abbrev-commit --max-count=1)
|
|
|
-
|
|
|
- if ( $LASTEXITCODE -ne 0 ) {
|
|
|
- Write-Error '::error title=Invalid checkout::Invalid checkout'
|
|
|
- exit 1
|
|
|
- }
|
|
|
- Write-Output ('::notice title=Git output::{0}' -f $Output)
|
|
|
- }
|
|
|
-
|
|
|
- # - name: Restore FBT
|
|
|
- # id: cache-restore
|
|
|
- # if: ${{ success() }}
|
|
|
- # uses: actions/cache/restore@v3
|
|
|
- # with:
|
|
|
- # path: |
|
|
|
- # build/**
|
|
|
- # debug/**
|
|
|
- # # An explicit key for restoring and saving the cache
|
|
|
- # key: 'fbt=${{ env.FIRMWARE_VERSION }}'
|
|
|
- #
|
|
|
- - name: Remove other apps
|
|
|
- shell: pwsh
|
|
|
- if: ${{ success() }}
|
|
|
- # rm to remove problem FAP which includes non-existent files
|
|
|
- run: |
|
|
|
- Remove-Item -Force -Recurse ./applications/debug -ErrorAction SilentlyContinue
|
|
|
- Remove-Item -Force -Recurse ./applications/examples -ErrorAction SilentlyContinue
|
|
|
- # New-Item -Force ./tmp -ItemType Directory -ErrorAction SilentlyContinue
|
|
|
- # Copy-Item -Force -Recurse ./applications/external/subbrute/ ./tmp/ -ErrorAction SilentlyContinue
|
|
|
- # Remove-Item -Force -Recurse ./applications/external/* -ErrorAction SilentlyContinue
|
|
|
- # Copy-Item -Force -Recurse /tmp/* ./applications/external/ -ErrorAction SilentlyContinue
|
|
|
- # Remove-Item -Force -Recurse ./tmp -ErrorAction SilentlyContinue
|
|
|
-
|
|
|
- - name: Build Firmware
|
|
|
- shell: bash
|
|
|
- if: ${{ success() }}
|
|
|
- env:
|
|
|
- FBT_NO_SYNC: 0
|
|
|
- DIST_SUFFIX: ${{ matrix.version }}
|
|
|
- WORKFLOW_BRANCH_OR_TAG: release-cfw
|
|
|
- run: |
|
|
|
- ./fbt COMPACT=1 DEBUG=0 FBT_NO_SYNC=0
|
|
|
-
|
|
|
- - name: Build FAPs
|
|
|
- shell: bash
|
|
|
- if: ${{ success() }}
|
|
|
- env:
|
|
|
- FBT_NO_SYNC: 0
|
|
|
- DIST_SUFFIX: ${{ matrix.version }}
|
|
|
- WORKFLOW_BRANCH_OR_TAG: release-cfw
|
|
|
- # rm to remove problem FAP which includes non-existent files
|
|
|
- run: |
|
|
|
- ./fbt COMPACT=1 DEBUG=0 FBT_NO_SYNC=0 fap_dist
|
|
|
-
|
|
|
- # - name: Save FBT
|
|
|
- # id: cache-save
|
|
|
- # if: ${{ success() }}
|
|
|
- # uses: actions/cache/save@v3
|
|
|
- # with:
|
|
|
- # path: |
|
|
|
- # build/**
|
|
|
- # debug/**
|
|
|
- # # An explicit key for restoring and saving the cache
|
|
|
- # key: ${{ steps.cache-restore.outputs.cache-primary-key }}
|
|
|
-
|
|
|
- - name: Create assets
|
|
|
- if: ${{ success() }}
|
|
|
- shell: pwsh
|
|
|
- env:
|
|
|
- ZIP_NAME: "subghz_bruteforcer_${{ env.RELEASE_VERSION }}_${{ matrix.firmware }}.zip"
|
|
|
- TGZ_NAME: "subghz_bruteforcer_${{ env.RELEASE_VERSION }}_${{ matrix.firmware }}.tgz"
|
|
|
- run: |
|
|
|
- function Format-Bytes {
|
|
|
- param(
|
|
|
- [int]$number
|
|
|
- )
|
|
|
- $sizes = 'KB', 'MB', 'GB', 'TB', 'PB'
|
|
|
- for ($x = 0; $x -lt $sizes.count; $x++) {
|
|
|
- if ($number -lt [int64]"1$($sizes[$x])") {
|
|
|
- if ($x -eq 0) {
|
|
|
- return "$number B"
|
|
|
- }
|
|
|
- else {
|
|
|
- $num = $number / [int64]"1$($sizes[$x-1])"
|
|
|
- $num = "{0:N2}" -f $num
|
|
|
- return "$num $($sizes[$x-1])"
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- $ZipName = $env:ZIP_NAME
|
|
|
- $TgzName = $env:TGZ_NAME
|
|
|
- $FapNamme = 'subghz_bruteforcer.fap'
|
|
|
- $DstFap = "./$FapNamme"
|
|
|
- $AppDir = "dist/f7-C/apps/Sub-GHz"
|
|
|
-
|
|
|
- if (!(Test-Path -Path "$AppDir/$FapNamme" -PathType Leaf)) {
|
|
|
- Write-Error '::error title=Files not found::Cannot find files in location'
|
|
|
- exit 1
|
|
|
- }
|
|
|
-
|
|
|
- $Size = (Get-Item -Path "$AppDir/$FapNamme" | Get-ItemPropertyValue -Name Length)
|
|
|
- Write-Output ('Filesize: {0}' -f (Format-Bytes $Size))
|
|
|
- Copy-Item -Force -Verbose -Path "$AppDir/$FapNamme" -Destination $DstFap
|
|
|
-
|
|
|
- zip -r -qq $ZipName $DstFap
|
|
|
- tar zcf $TgzName $DstFap
|
|
|
-
|
|
|
- if ( !(Test-Path -Path $ZipName -PathType Leaf) -or !(Test-Path -Path $TgzName -PathType Leaf) ) {
|
|
|
- Write-Error '::error title=Files not found::Cannot find files in location'
|
|
|
- exit 1
|
|
|
- }
|
|
|
-
|
|
|
- $ZipSize = Format-Bytes (Get-Item -Path $ZipName).Length
|
|
|
- $TgzSize = Format-Bytes (Get-Item -Path $TgzName ).Length
|
|
|
-
|
|
|
- Write-Output ('ZIP_NAME={0}' -f $ZipName) >> $env:GITHUB_ENV
|
|
|
- Write-Output ('TGZ_NAME={0}' -f $TgzName ) >> $env:GITHUB_ENV
|
|
|
- Write-Output ('ZIP_TAG={0} ({1})' -f $ZipName, $ZipSize) >> $env:GITHUB_ENV
|
|
|
- Write-Output ('TGZ_TAG={0} ({1})' -f $TgzName , $TgzSize) >> $env:GITHUB_ENV
|
|
|
-
|
|
|
- - name: Upload assets
|
|
|
- if: ${{ success() && env.ZIP_NAME != '' }}
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.FLIPPER_TOKEN }}
|
|
|
- run: |
|
|
|
- gh release create v${{ env.RELEASE_VERSION }} --generate-notes --draft -R ${{ env.REPO_SELF }}
|
|
|
- gh release upload 'v${{ env.RELEASE_VERSION }}' '${{ env.ZIP_NAME }}#${{ env.ZIP_TAG }}' \
|
|
|
- '${{ env.TGZ_NAME }}#${{ env.TGZ_TAG }}' --clobber -R ${{ env.REPO_SELF }}
|
|
|
- gh release edit 'v${{ env.RELEASE_VERSION }}' --draft=false -R ${{ env.REPO_SELF }}
|
|
|
-
|
|
|
-#EOF
|