|
|
@@ -1,169 +1,174 @@
|
|
|
-name: "Version check for NEW release"
|
|
|
-run-name: " Version check for NEW release ${{ inputs.DEPLOY_TARGET }} by @${{ github.ACTOR }}"
|
|
|
-
|
|
|
-on:
|
|
|
- workflow_dispatch:
|
|
|
- push:
|
|
|
- branches:
|
|
|
- - master
|
|
|
- schedule:
|
|
|
- - cron: "*/30 * * * *"
|
|
|
-
|
|
|
-permissions:
|
|
|
- contents: write
|
|
|
-
|
|
|
-jobs:
|
|
|
- pull-request:
|
|
|
- concurrency:
|
|
|
- group: check-for-new-versions
|
|
|
- cancel-in-progress: false
|
|
|
- runs-on: ubuntu-latest
|
|
|
- env:
|
|
|
- REPO_UNLEASHED: ${{ vars.REPO_UNLEASHED }}
|
|
|
- RELEASE_VERSION: ${{ vars.RELEASE_VERSION }}
|
|
|
- FIRMWARE_VERSION: ${{ vars.FIRMWARE_VERSION }}
|
|
|
- REPO_SELF: ${{ vars.REPO_SELF }}
|
|
|
- CHECKOUT_DIR: "firmware"
|
|
|
- steps:
|
|
|
- - name: Copy Repo Files
|
|
|
- uses: actions/checkout@v3
|
|
|
- with:
|
|
|
- repository: "${{ env.REPO_SELF }}"
|
|
|
- path: "${{ env.CHECKOUT_DIR }}"
|
|
|
- clean: "true"
|
|
|
- submodules: "true"
|
|
|
- token: ${{ secrets.FLIPPER_TOKEN }}
|
|
|
- - name: Check firmware release
|
|
|
- shell: pwsh
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
- run: |
|
|
|
- function CleanInput
|
|
|
- {
|
|
|
- param(
|
|
|
- [string]
|
|
|
- $DurtyString
|
|
|
- )
|
|
|
- return $DurtyString -replace ('[^a-zA-Z\d_\-\,\.\t\n\r\:\;]', '')
|
|
|
- }
|
|
|
-
|
|
|
- $Release = @(`
|
|
|
- (CleanInput `
|
|
|
- (gh release list -L 1 --repo '${{ env.REPO_UNLEASHED }}')`
|
|
|
- ) -split "`t")
|
|
|
-
|
|
|
- $FirmwareVersionNumber = 0
|
|
|
- $StoredFirmwareVersionNumber = 0
|
|
|
- if ($Release[2] -match '\-(\d+)$')
|
|
|
- {
|
|
|
- $FirmwareVersionNumber = [int]($Matches[1])
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- Write-Error ('::error title=Invalid firmware number::Error during execution this tags {0}' -f $FirmwareVersionNumber)
|
|
|
- exit 1
|
|
|
- }
|
|
|
- if ('${{ env.FIRMWARE_VERSION }}' -match '\-(\d+)$')
|
|
|
- {
|
|
|
- $StoredFirmwareVersionNumber = [int]($Matches[1])
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- Write-Error ('::error title=Invalid STORED firmware number::Error during execution this version {0}' -f '${{ env.FIRMWARE_VERSION }}')
|
|
|
- exit 1
|
|
|
- }
|
|
|
-
|
|
|
- $LatestFirmware = CleanInput ((CleanInput (gh release list -L 1 --repo '${{ env.REPO_SELF }}') -replace '\t', ';') | `
|
|
|
- ConvertFrom-Csv -Delimiter ';' -Header name, flag, tag).tag
|
|
|
-
|
|
|
- $Delta = ( [DateTime]::Now - [DateTime]::Parse($Release[3]) )
|
|
|
- $NewVersionFw = $false
|
|
|
- Write-Host ('Latest firmware {0}' -f $LatestFirmware) -ForegroundColor Gray -BackgroundColor Magenta
|
|
|
- Write-Debug ('::debug LatestFirmware {0}' -f $LatestFirmware)
|
|
|
-
|
|
|
- Write-Output ('REMOTE_TAG_INFO=[{0}]({1}/releases/tag/{2})' -f $LatestFirmware, '${{ env.REPO_UNLEASHED }}', $LatestFirmware) >> $env:GITHUB_ENV
|
|
|
- if (($FirmwareVersionNumber -gt $StoredFirmwareVersionNumber) -and ( $Delta -gt [TimeSpan]::FromMinutes(10)))
|
|
|
- {
|
|
|
- Write-Debug ('::debug LatestFirmware {0}' -f $LatestFirmware)
|
|
|
- Write-Output ('FIRMWARE_VERSION={0}' -f $LatestFirmware) >> $env:GITHUB_ENV
|
|
|
- $NewVersionFw = $true
|
|
|
- }
|
|
|
- elseif ($FirmwareVersionNumber -lt $StoredFirmwareVersionNumber)
|
|
|
- {
|
|
|
- Write-Error ('::error title=Invalid check of stored::Version in repo: {0}, but we think it is {1}' -f $FirmwareVersionNumber, $StoredFirmwareVersionNumber)
|
|
|
- exit 1
|
|
|
- }
|
|
|
-
|
|
|
- $LastPublished = (gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" '/repos/${{ vars.REPO_SELF }}/releases?per_page=1' | ConvertFrom-Json).published_at
|
|
|
- $Delta = ([DateTime]::Now - $LastPublished)
|
|
|
-
|
|
|
- $Release = (gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" '/repos/${{ vars.REPO_SELF }}/tags?per_page=1' | ConvertFrom-Json).name
|
|
|
- Write-Host ('Release {0}' -f $Release) -ForegroundColor Gray -BackgroundColor Magenta
|
|
|
- $LatestTag = $Release.Substring(1)
|
|
|
-
|
|
|
- $CurrentVersion = [version]::Parse('${{ env.RELEASE_VERSION }}')
|
|
|
- $ParsedRepoVersion = [version]::Parse($LatestTag)
|
|
|
- Write-Host ('Current tag:Repos tag {0}, {1}' -f $CurrentVersion, $ParsedRepoVersion) -ForegroundColor Gray -BackgroundColor Magenta
|
|
|
- Write-Debug ('::debug Current tag:Repos tag {0}, {1}' -f $CurrentVersion, $ParsedRepoVersion)
|
|
|
- if (($CurrentVersion -lt $ParsedRepoVersion) -and ( $Delta -gt [TimeSpan]::FromMinutes(10)))
|
|
|
- {
|
|
|
- $Tag = ('{0}.{1}.{2}' -f $ParsedRepoVersion.Major, $ParsedRepoVersion.Minor, $ParsedRepoVersion.Build)
|
|
|
-
|
|
|
- Write-Output ('RELEASE_VERSION={0}' -f $Tag) >> $env:GITHUB_ENV
|
|
|
- Write-Output ('RELEASE_TYPE=2' -f $Tag) >> $env:GITHUB_ENV
|
|
|
-
|
|
|
- Write-Output ('::warning title=New release!::Release {0}' -f $Tag)
|
|
|
- }
|
|
|
- elseif ( $NewVersionFw )
|
|
|
- {
|
|
|
- $Tag = ('{0}.{1}.{2}' -f $CurrentVersion.Major, $CurrentVersion.Minor, ($CurrentVersion.Build + 1))
|
|
|
-
|
|
|
- Write-Output ('RELEASE_VERSION={0}' -f $Tag) >> $env:GITHUB_ENV
|
|
|
- Write-Output ('RELEASE_TYPE=1' -f $Tag) >> $env:GITHUB_ENV
|
|
|
-
|
|
|
- Write-Output ('::warning title=Firmware was changed!::New version is {0}, creating release {1}' -f $LatestFirmware, $Tag)
|
|
|
- }
|
|
|
- elseif ( ($Delta -gt [TimeSpan]::FromMinutes(10)) -and ($CurrentVersion -gt $ParsedRepoVersion))
|
|
|
- {
|
|
|
- Write-Output ('::warning title=Invalid version!::Version in settings: {0}, but repo version is {1}. Going to change variable' -f $CurrentVersion, $ParsedRepoVersion)
|
|
|
- Write-Output ('RELEASE_VERSION={0}' -f $ParsedRepoVersion) >> $env:GITHUB_ENV
|
|
|
- Write-Output ('RELEASE_TYPE=3' -f $Tag) >> $env:GITHUB_ENV
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- # none to release
|
|
|
- Write-Host 'No new versions, sorry'
|
|
|
- }
|
|
|
- Write-Output ('CURRENT_TAG={0}' -f $LatestTag) >> $env:GITHUB_ENV
|
|
|
-
|
|
|
- - name: Update Firmware variable and create UPDATE release if necessary
|
|
|
- if: ${{ success() && env.RELEASE_TYPE == 1 }}
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.FLIPPER_TOKEN }}
|
|
|
- OWNER: ${{ github.repository_owner }}
|
|
|
- run: |
|
|
|
- gh release create 'v${{ env.RELEASE_VERSION }}' --latest --draft \
|
|
|
- --notes 'Rebuild with new version of firmware.\n\nSee: [CHANGELOG](${{ env.FIRMWARE_VERSION }}/blob/dev/CHANGELOG.md)\n${{ env.REMOTE_TAG_INFO}}' \
|
|
|
- --title 'Minor update v${{ env.RELEASE_VERSION }}' --verify-tag -R '${{ env.REPO_SELF }}'
|
|
|
- gh variable set FIRMWARE_VERSION -b '${{ env.FIRMWARE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
- gh variable set RELEASE_VERSION -b '${{ env.RELEASE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
- - name: Update release variable and create NEW release if necessary
|
|
|
- if: ${{ success() && env.RELEASE_TYPE == 2 }}
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.FLIPPER_TOKEN }}
|
|
|
- OWNER: ${{ github.repository_owner }}
|
|
|
- run: |
|
|
|
- gh release create 'v${{ env.RELEASE_VERSION }}' --notes-start-tag 'v${{ env.CURRENT_TAG }}' --generate-notes --draft --latest \
|
|
|
- --notes 'New version is rolling out!' --verify-tag --title 'Release v${{ env.RELEASE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
-
|
|
|
- gh variable set FIRMWARE_VERSION -b '${{ env.FIRMWARE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
- gh variable set RELEASE_VERSION -b '${{ env.RELEASE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
- - name: Current settings in repo invalid. Changing
|
|
|
- if: ${{ success() && env.RELEASE_TYPE > 2 }}
|
|
|
- env:
|
|
|
- GITHUB_TOKEN: ${{ secrets.FLIPPER_TOKEN }}
|
|
|
- OWNER: ${{ github.repository_owner }}
|
|
|
- run: |
|
|
|
- gh variable set RELEASE_VERSION -b ${{ env.RELEASE_VERSION }} -R ${{ env.REPO_SELF }}
|
|
|
-
|
|
|
-# EOF
|
|
|
+name: "Version check for NEW release"
|
|
|
+run-name: " Version check for NEW release ${{ inputs.DEPLOY_TARGET }} by @${{ github.ACTOR }}"
|
|
|
+
|
|
|
+on:
|
|
|
+ workflow_dispatch:
|
|
|
+ push:
|
|
|
+ branches:
|
|
|
+ - master
|
|
|
+ schedule:
|
|
|
+ - cron: "*/30 * * * *"
|
|
|
+
|
|
|
+permissions:
|
|
|
+ contents: write
|
|
|
+
|
|
|
+jobs:
|
|
|
+ pull-request:
|
|
|
+ concurrency:
|
|
|
+ group: check-for-new-versions
|
|
|
+ cancel-in-progress: false
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ env:
|
|
|
+ REPO_UNLEASHED: ${{ vars.REPO_UNLEASHED }}
|
|
|
+ RELEASE_VERSION: ${{ vars.RELEASE_VERSION }}
|
|
|
+ FIRMWARE_VERSION: ${{ vars.FIRMWARE_VERSION }}
|
|
|
+ REPO_SELF: ${{ vars.REPO_SELF }}
|
|
|
+ CHECKOUT_DIR: "firmware"
|
|
|
+ steps:
|
|
|
+ - name: Copy Repo Files
|
|
|
+ uses: actions/checkout@v3
|
|
|
+ with:
|
|
|
+ repository: "${{ env.REPO_SELF }}"
|
|
|
+ path: "${{ env.CHECKOUT_DIR }}"
|
|
|
+ clean: "true"
|
|
|
+ submodules: "true"
|
|
|
+ token: ${{ secrets.FLIPPER_TOKEN }}
|
|
|
+ - name: Check firmware release
|
|
|
+ shell: pwsh
|
|
|
+ env:
|
|
|
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
+ run: |
|
|
|
+ $Output = (./github/check-version.ps1)
|
|
|
+ Write-Output("RELEASE_VERSION=$Output.ReleaseVersion) >> $env:GITHUB_ENV
|
|
|
+ Write-Output("CURRENT_TAG=$Output.CurrentTag) >> $env:GITHUB_ENV
|
|
|
+ Write-Output("REMOTE_TAG_INFO=$Output.RemoteTagInfo) >> $env:GITHUB_ENV
|
|
|
+ Write-Output("RELEASE_TYPE=$Output.ReleaseType) >> $env:GITHUB_ENV
|
|
|
+ # function CleanInput
|
|
|
+ # {
|
|
|
+ # param(
|
|
|
+ # [string]
|
|
|
+ # $DurtyString
|
|
|
+ # )
|
|
|
+ # return $DurtyString -replace ('[^a-zA-Z\d_\-\,\.\t\n\r\:\;]', '')
|
|
|
+ # }
|
|
|
+
|
|
|
+ # $Release = @(`
|
|
|
+ # (CleanInput `
|
|
|
+ # (gh release list -L 1 --repo '${{ env.REPO_UNLEASHED }}')`
|
|
|
+ # ) -split "`t")
|
|
|
+
|
|
|
+ # $FirmwareVersionNumber = 0
|
|
|
+ # $StoredFirmwareVersionNumber = 0
|
|
|
+ # if ($Release[2] -match '\-(\d+)$')
|
|
|
+ # {
|
|
|
+ # $FirmwareVersionNumber = [int]($Matches[1])
|
|
|
+ # }
|
|
|
+ # else
|
|
|
+ # {
|
|
|
+ # Write-Error ('::error title=Invalid firmware number::Error during execution this tags {0}' -f $FirmwareVersionNumber)
|
|
|
+ # exit 1
|
|
|
+ # }
|
|
|
+ # if ('${{ env.FIRMWARE_VERSION }}' -match '\-(\d+)$')
|
|
|
+ # {
|
|
|
+ # $StoredFirmwareVersionNumber = [int]($Matches[1])
|
|
|
+ # }
|
|
|
+ # else
|
|
|
+ # {
|
|
|
+ # Write-Error ('::error title=Invalid STORED firmware number::Error during execution this version {0}' -f '${{ env.FIRMWARE_VERSION }}')
|
|
|
+ # exit 1
|
|
|
+ # }
|
|
|
+
|
|
|
+ # $LatestFirmware = CleanInput ((CleanInput (gh release list -L 1 --repo '${{ env.REPO_SELF }}') -replace '\t', ';') | `
|
|
|
+ # ConvertFrom-Csv -Delimiter ';' -Header name, flag, tag).tag
|
|
|
+
|
|
|
+ # $Delta = ( [DateTime]::Now - [DateTime]::Parse($Release[3]) )
|
|
|
+ # $NewVersionFw = $false
|
|
|
+ # Write-Host ('Latest firmware {0}' -f $LatestFirmware) -ForegroundColor Gray -BackgroundColor Magenta
|
|
|
+ # Write-Debug ('::debug LatestFirmware {0}' -f $LatestFirmware)
|
|
|
+
|
|
|
+ # Write-Output ('REMOTE_TAG_INFO=[{0}]({1}/releases/tag/{2})' -f $LatestFirmware, '${{ env.REPO_UNLEASHED }}', $LatestFirmware) >> $env:GITHUB_ENV
|
|
|
+ # if (($FirmwareVersionNumber -gt $StoredFirmwareVersionNumber) -and ( $Delta -gt [TimeSpan]::FromMinutes(10)))
|
|
|
+ # {
|
|
|
+ # Write-Debug ('::debug LatestFirmware {0}' -f $LatestFirmware)
|
|
|
+ # Write-Output ('FIRMWARE_VERSION={0}' -f $LatestFirmware) >> $env:GITHUB_ENV
|
|
|
+ # $NewVersionFw = $true
|
|
|
+ # }
|
|
|
+ # elseif ($FirmwareVersionNumber -lt $StoredFirmwareVersionNumber)
|
|
|
+ # {
|
|
|
+ # Write-Error ('::error title=Invalid check of stored::Version in repo: {0}, but we think it is {1}' -f $FirmwareVersionNumber, $StoredFirmwareVersionNumber)
|
|
|
+ # exit 1
|
|
|
+ # }
|
|
|
+
|
|
|
+ # $LastPublished = (gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" '/repos/${{ vars.REPO_SELF }}/releases?per_page=1' | ConvertFrom-Json).published_at
|
|
|
+ # $Delta = ([DateTime]::Now - $LastPublished)
|
|
|
+
|
|
|
+ # $Release = (gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" '/repos/${{ vars.REPO_SELF }}/tags?per_page=1' | ConvertFrom-Json).name
|
|
|
+ # Write-Host ('Release {0}' -f $Release) -ForegroundColor Gray -BackgroundColor Magenta
|
|
|
+ # $LatestTag = $Release.Substring(1)
|
|
|
+
|
|
|
+ # $CurrentVersion = [version]::Parse('${{ env.RELEASE_VERSION }}')
|
|
|
+ # $ParsedRepoVersion = [version]::Parse($LatestTag)
|
|
|
+ # Write-Host ('Current tag:Repos tag {0}, {1}' -f $CurrentVersion, $ParsedRepoVersion) -ForegroundColor Gray -BackgroundColor Magenta
|
|
|
+ # Write-Debug ('::debug Current tag:Repos tag {0}, {1}' -f $CurrentVersion, $ParsedRepoVersion)
|
|
|
+ # if (($CurrentVersion -lt $ParsedRepoVersion) -and ( $Delta -gt [TimeSpan]::FromMinutes(10)))
|
|
|
+ # {
|
|
|
+ # $Tag = ('{0}.{1}.{2}' -f $ParsedRepoVersion.Major, $ParsedRepoVersion.Minor, $ParsedRepoVersion.Build)
|
|
|
+
|
|
|
+ # Write-Output ('RELEASE_VERSION={0}' -f $Tag) >> $env:GITHUB_ENV
|
|
|
+ # Write-Output ('RELEASE_TYPE=2' -f $Tag) >> $env:GITHUB_ENV
|
|
|
+
|
|
|
+ # Write-Output ('::warning title=New release!::Release {0}' -f $Tag)
|
|
|
+ # }
|
|
|
+ # elseif ( $NewVersionFw )
|
|
|
+ # {
|
|
|
+ # $Tag = ('{0}.{1}.{2}' -f $CurrentVersion.Major, $CurrentVersion.Minor, ($CurrentVersion.Build + 1))
|
|
|
+
|
|
|
+ # Write-Output ('RELEASE_VERSION={0}' -f $Tag) >> $env:GITHUB_ENV
|
|
|
+ # Write-Output ('RELEASE_TYPE=1' -f $Tag) >> $env:GITHUB_ENV
|
|
|
+
|
|
|
+ # Write-Output ('::warning title=Firmware was changed!::New version is {0}, creating release {1}' -f $LatestFirmware, $Tag)
|
|
|
+ # }
|
|
|
+ # elseif ( ($Delta -gt [TimeSpan]::FromMinutes(10)) -and ($CurrentVersion -gt $ParsedRepoVersion))
|
|
|
+ # {
|
|
|
+ # Write-Output ('::warning title=Invalid version!::Version in settings: {0}, but repo version is {1}. Going to change variable' -f $CurrentVersion, $ParsedRepoVersion)
|
|
|
+ # Write-Output ('RELEASE_VERSION={0}' -f $ParsedRepoVersion) >> $env:GITHUB_ENV
|
|
|
+ # Write-Output ('RELEASE_TYPE=3' -f $Tag) >> $env:GITHUB_ENV
|
|
|
+ # }
|
|
|
+ # else
|
|
|
+ # {
|
|
|
+ # # none to release
|
|
|
+ # Write-Host 'No new versions, sorry'
|
|
|
+ # }
|
|
|
+ # Write-Output ('CURRENT_TAG={0}' -f $LatestTag) >> $env:GITHUB_ENV
|
|
|
+
|
|
|
+ - name: Update Firmware variable and create UPDATE release if necessary
|
|
|
+ if: ${{ success() && env.RELEASE_TYPE == 1 }}
|
|
|
+ env:
|
|
|
+ GITHUB_TOKEN: ${{ secrets.FLIPPER_TOKEN }}
|
|
|
+ OWNER: ${{ github.repository_owner }}
|
|
|
+ run: |
|
|
|
+ gh release create 'v${{ env.RELEASE_VERSION }}' --latest --draft \
|
|
|
+ --notes 'Rebuild with new version of firmware.\n\nSee: [CHANGELOG](${{ env.FIRMWARE_VERSION }}/blob/dev/CHANGELOG.md)\n${{ env.REMOTE_TAG_INFO}}' \
|
|
|
+ --title 'Minor update v${{ env.RELEASE_VERSION }}' --verify-tag -R '${{ env.REPO_SELF }}'
|
|
|
+ gh variable set FIRMWARE_VERSION -b '${{ env.FIRMWARE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
+ gh variable set RELEASE_VERSION -b '${{ env.RELEASE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
+ - name: Update release variable and create NEW release if necessary
|
|
|
+ if: ${{ success() && env.RELEASE_TYPE == 2 }}
|
|
|
+ env:
|
|
|
+ GITHUB_TOKEN: ${{ secrets.FLIPPER_TOKEN }}
|
|
|
+ OWNER: ${{ github.repository_owner }}
|
|
|
+ run: |
|
|
|
+ gh release create 'v${{ env.RELEASE_VERSION }}' --notes-start-tag 'v${{ env.CURRENT_TAG }}' --generate-notes --draft --latest \
|
|
|
+ --notes 'New version is rolling out!' --verify-tag --title 'Release v${{ env.RELEASE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
+
|
|
|
+ gh variable set FIRMWARE_VERSION -b '${{ env.FIRMWARE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
+ gh variable set RELEASE_VERSION -b '${{ env.RELEASE_VERSION }}' -R '${{ env.REPO_SELF }}'
|
|
|
+ - name: Current settings in repo invalid. Changing
|
|
|
+ if: ${{ success() && env.RELEASE_TYPE > 2 }}
|
|
|
+ env:
|
|
|
+ GITHUB_TOKEN: ${{ secrets.FLIPPER_TOKEN }}
|
|
|
+ OWNER: ${{ github.repository_owner }}
|
|
|
+ run: |
|
|
|
+ gh variable set RELEASE_VERSION -b ${{ env.RELEASE_VERSION }} -R ${{ env.REPO_SELF }}
|
|
|
+
|
|
|
+# EOF
|