瀏覽代碼

Merge pull request #15 from derskythe/feat/ci

Feat/ci
Der Skythe 2 年之前
父節點
當前提交
869eb2807f
共有 4 個文件被更改,包括 120 次插入44 次删除
  1. 81 0
      .github/actions/make-release/action.yml
  2. 13 13
      .github/check-version.ps1
  3. 18 29
      .github/workflows/version-check.yml
  4. 8 2
      .vscode/settings.json

+ 81 - 0
.github/actions/make-release/action.yml

@@ -0,0 +1,81 @@
+---
+name: "Action release"
+description: "Steps to build release"
+author: "DerSkythe"
+
+inputs:
+  release_type:
+    description: 'release_type'
+    required: true
+  release_version:
+    description: 'release_version'
+    required: true
+  firmware_version:
+    description: 'firmware_version'
+    required: true
+  repo_self:
+    description: 'REPO_SELF'
+    required: true
+  gh_token:
+    description: 'github_gh_token'
+    required: true
+  owner:
+    description: 'owner'
+    required: true
+  current_tag:
+    description: 'current_tag'
+    required: true
+  remote_tag_info:
+    description: 'remote_tag_info'
+    required: true
+
+outputs:
+  make-minor-release:
+    description: "make-minor-release"
+    value: ${{ steps.make-minor-release.outputs }}
+  make-major-release:
+    description: "make-minor-release"
+    value: ${{ steps.make-major-release.outputs }}
+
+runs:
+  using: "composite"
+  steps:
+    - name: Minor release
+      if: ${{ inputs.release_type == 2 }}
+      id: make-minor-release
+      uses: softprops/action-gh-release@v1
+      with:
+        tag_name: 'v${{ inputs.release_version }}'
+        name: 'Minor update v${{ inputs.release_version }}'
+        token: ${{ inputs.gh_token }}
+        draft: true
+        generate_release_notes: true
+        #target_commitish: ${{ github.SHA }}
+        append_body: true
+        body: 'Rebuild with new version of firmware.\n\nSee: [CHANGELOG](${{ inputs.firmware_version }}/blob/dev/CHANGELOG.md)\n${{ inputs.remote_tag_info }}'
+        repository: '${{ inputs.repo_self }}'
+
+    - name: Major release
+      if: ${{ inputs.release_type == 1 }}
+      id: make-major-release
+      uses: softprops/action-gh-release@v1
+      with:
+        tag_name: 'v${{ inputs.release_version }}'
+        name: Release v${{ inputs.release_version }}
+        token: ${{ inputs.gh_token }}
+        draft: true
+        generate_release_notes: true
+        #target_commitish: ${{ github.SHA }}
+        append_body: true
+        body: 'New version is rolling out!'
+        repository: '${{ inputs.repo_self }}'
+
+    - name: Update Firmware variable and create UPDATE release if necessary
+      if: ${{ success() }}
+      env:
+        GITHUB_TOKEN: ${{ inputs.gh_token }}
+        OWNER: ${{ inputs.owner }}
+      shell: bash
+      run: |
+          gh variable set FIRMWARE_VERSION -b '${{ inputs.firmware_version }}' -R '${{ inputs.repo_self }}'
+          gh variable set RELEASE_VERSION -b '${{ inputs.release_version }}' -R '${{ inputs.repo_self }}'

+ 13 - 13
.github/check-version.ps1

@@ -22,10 +22,10 @@ function CleanInput
 ################################################################################################################################
 
 $Output = @{
-    ReleaseVersion = ''
-    CurrentTag = ''
-    RemoteTagInfo = ''
-    ReleaseType = ''
+    RELEASE_VERSION = ''
+    CURRENT_TAG = ''
+    REMOTE_TAG_INFO = ''
+    RELEASE_TYPE = ''
 }
 
 $Release = @(`
@@ -61,11 +61,11 @@ Write-Host "FirmwareVersionNumber: $FirmwareVersionNumber, Delta: $Delta"
 $NewVersionFw = $false
 Write-Host ('Latest firmware {0}' -f $FirmwareVersionNumber)
 
-$Output.RemoteTagInfo = Write-Host ('[{0}]({1}/releases/tag/{2})' `
+$Output.REMOTE_TAG_INFO = Write-Host ('[{0}]({1}/releases/tag/{2})' `
         -f $LatestFirmware, $RepoUnleashed, $LatestFirmware)
 if (($FirmwareVersionNumber -gt $StoredFirmwareVersionNumber) -and ( $Delta -gt [TimeSpan]::FromMinutes(10)))
 {
-    $Output.RemoteTagInfo = $LatestFirmware
+    $Output.REMOTE_TAG_INFO = $LatestFirmware
     $NewVersionFw = $true
 }
 elseif ($FirmwareVersionNumber -lt $StoredFirmwareVersionNumber)
@@ -97,8 +97,8 @@ if (($CurrentVersion -lt $ParsedRepoVersion) -and ( $Delta -gt [TimeSpan]::FromM
 {
     $Tag = ('{0}.{1}.{2}' -f $ParsedRepoVersion.Major, $ParsedRepoVersion.Minor, $ParsedRepoVersion.Build)
 
-    $Output.ReleaseVersion = $Tag
-    $Output.ReleaseType = 2
+    $Output.RELEASE_VERSION = $Tag
+    $Output.RELEASE_TYPE = 2
 
     Write-Host ('::warning title=New release!::Release {0}' -f $Tag)
 }
@@ -106,8 +106,8 @@ elseif ( $NewVersionFw )
 {
     $Tag = ('{0}.{1}.{2}' -f $CurrentVersion.Major, $CurrentVersion.Minor, ($CurrentVersion.Build + 1))
 
-    $Output.ReleaseVersion = $Tag
-    $Output.ReleaseType = 1
+    $Output.RELEASE_VERSION = $Tag
+    $Output.RELEASE_TYPE = 1
 
     Write-Host ('::warning title=Firmware was changed!::New version is {0}, need to create release {1}' -f $LatestFirmware, $Tag)
 }
@@ -116,8 +116,8 @@ elseif ( ($Delta -gt [TimeSpan]::FromMinutes(10)) -and ($CurrentVersion -gt $Par
     Write-Host ('::warning title=Invalid version!::Version in settings: {0}, but repo version is {1}. Going to change variable' `
         -f $CurrentVersion, $ParsedRepoVersion)
 
-    $Output.ReleaseVersion = $ParsedRepoVersion
-    $Output.ReleaseType = 3
+    $Output.RELEASE_VERSION = $ParsedRepoVersion
+    $Output.RELEASE_TYPE = 3
 }
 else
 {
@@ -125,7 +125,7 @@ else
     Write-Host 'No new versions, sorry'
 }
 
-$Output.CurrentTag = $LatestTag
+$Output.CURRENT_TAG = $LatestTag
 
 if($ForGithubActions) {
     $Plain = New-Object -TypeName "System.Text.StringBuilder";

+ 18 - 29
.github/workflows/version-check.yml

@@ -20,16 +20,18 @@ jobs:
     runs-on: ubuntu-latest
     env:
       REPO_UNLEASHED: ${{ vars.REPO_UNLEASHED }}
+      CURRENT_TAG: ${{ vars.FIRMWARE_VERSION }}
+      REMOTE_TAG_INFO: ''
       RELEASE_VERSION: ${{ vars.RELEASE_VERSION }}
       FIRMWARE_VERSION: ${{ vars.FIRMWARE_VERSION }}
       REPO_SELF: ${{ vars.REPO_SELF }}
       CHECKOUT_DIR: "firmware"
+      RELEASE_TYPE: 0
     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 }}
@@ -38,35 +40,22 @@ jobs:
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: |
-          '& $env:GITHUB_ACTION_PATH/.github/check-version.ps1 "${{ env.FIRMWARE_VERSION }}" "${{ env.RELEASE_VERSION }}" "${{ env.REPO_SELF }}" "${{ env.REPO_UNLEASHED }}"' `
-            | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
-#          $Output = ('& $env:GITHUB_ACTION_PATH/.github/check-version.ps1 "${{ env.FIRMWARE_VERSION }}" "${{ env.RELEASE_VERSION }}" "${{ env.REPO_SELF }}" "${{ env.REPO_UNLEASHED }}"')
-#          Write-Output("RELEASE_VERSION=$($Output.ReleaseVersion)") | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
-#          Write-Output("CURRENT_TAG=$($Output.CurrentTag)") | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
-#          Write-Output("REMOTE_TAG_INFO=$($Output.RemoteTagInfo)") | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
-#          Write-Output("RELEASE_TYPE=$($Output.ReleaseType)") | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
-      - 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 }}'
+          ./.github/check-version.ps1 '${{ env.FIRMWARE_VERSION }}' '${{ env.RELEASE_VERSION }}' '${{ env.REPO_SELF }}' '${{ env.REPO_UNLEASHED }}' | %{ Write-Output($_) >> $Env:GITHUB_ENV }
+      - name: Print env values
+        run: env
+      - name: Create release if necessary
+        if: ${{ success() && (env.RELEASE_TYPE == 2  || env.RELEASE_TYPE == 1 )}}
+        uses: ./.github/actions/make-release
+        with:
+          gh_token: ${{ secrets.FLIPPER_TOKEN }}
+          release_type: ${{ env.RELEASE_TYPE }}
+          release_version: ${{ env.RELEASE_VERSION }}
+          firmware_version: ${{ env.FIRMWARE_VERSION }}
+          repo_self: ${{ env.REPO_SELF }}
+          owner: ${{ github.repository_owner }}
+          current_tag: ${{ env.CURRENT_TAG }}
+          remote_tag_info: ${{ env.REMOTE_TAG_INFO }}
 
-          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:

+ 8 - 2
.vscode/settings.json

@@ -1,5 +1,11 @@
 {
     "githubPullRequests.ignoredPullRequestBranches": [
         "master"
-    ]
-}
+    ],
+    "workbench.colorCustomizations": {
+        "list.errorForeground": "#00AA00",
+        "list.warningForeground": "#00d9ff",
+        "gitDecoration.modifiedResourceForeground": "#00ffb3",
+        "gitDecoration.untrackedResourceForeground": "#f7aeae"
+    }
+}