modified: .github/workflows/main.yml

This commit is contained in:
elseif
2026-09-03 18:54:55 +08:00
parent 452cf3133f
commit b606604720

View File

@@ -14,53 +14,104 @@ on:
- all
- v6
- v7
release:
description: 'Release'
required: false
default: true
type: boolean
jobs:
Patch_Stable_V7:
if: |
(github.event_name == 'schedule') ||
(github.event_name == 'workflow_dispatch' && (github.event.inputs.version == 'all' || github.event.inputs.version == 'v7'))
uses: ./.github/workflows/patch_v7.yml
with:
channel: stable
release: true
secrets: inherit
Patch_LongTerm_V7:
if: |
(github.event_name == 'schedule') ||
(github.event_name == 'workflow_dispatch' && (github.event.inputs.version == 'all' || github.event.inputs.version == 'v7'))
uses: ./.github/workflows/patch_v7.yml
with:
channel: long-term
release: true
secrets: inherit
Check_Versions:
runs-on: ubuntu-latest
outputs:
upgrades_v6: ${{ steps.set-matrix.outputs.upgrades_v6 }}
upgrades_v7: ${{ steps.set-matrix.outputs.upgrades_v7 }}
steps:
- name: Fetch and compare versions
id: set-matrix
run: |
OFFICIAL_UPGRADE=$(curl -s https://upgrade.mikrotik.com/routeros/upgrade.json || echo '{}')
if ! echo "$OFFICIAL_UPGRADE" | jq -e . >/dev/null 2>&1; then
OFFICIAL_UPGRADE='{}'
fi
Patch_Development_V7:
if: |
(github.event_name == 'schedule') ||
(github.event_name == 'workflow_dispatch' && (github.event.inputs.version == 'all' || github.event.inputs.version == 'v7'))
uses: ./.github/workflows/patch_v7.yml
with:
channel: development
release: true
secrets: inherit
if [[ "${{ github.event_name }}" != "workflow_dispatch" ]]; then
PATCH_UPGRADE=$(curl -s https://upgrade.mikrotik.ltd/routeros/upgrade.json || echo '{}')
if ! echo "$PATCH_UPGRADE" | jq -e . >/dev/null 2>&1; then
PATCH_UPGRADE='{}'
fi
Patch_Stable_V6:
if: |
(github.event_name == 'schedule') ||
(github.event_name == 'workflow_dispatch' && (github.event.inputs.version == 'all' || github.event.inputs.version == 'v6'))
CANDIDATES=$(echo "$OFFICIAL_UPGRADE" | jq -c --argjson patch "$PATCH_UPGRADE" '
($patch.upgradePaths // {}) as $paths |
.upgradePaths // {} | to_entries | map(
.value.version as $official_version |
$paths[.key] as $patch_value |
select(
$patch_value != null and
$official_version != $patch_value.version and
( any( $paths[] | .version; . == $official_version ) | not ) and
( .key | test("^NEWEST6") or .key | test("^NEWESTa7") )
) | {
majorVersion: (if .key | test("^NEWESTa7") then "7" else "6" end),
channel: (.key | split(".")[1]),
version: .value.version
}
)
' || echo '[]')
else
CANDIDATES=$(echo "$OFFICIAL_UPGRADE" | jq -c '
.upgradePaths // {} | to_entries | map(
select( .key | test("^NEWEST6") or .key | test("^NEWESTa7") )
| {
majorVersion: (if .key | test("^NEWESTa7") then "7" else "6" end),
channel: (.key | split(".")[1]),
version: .value.version
}
)
' || echo '[]')
fi
VERSION_FILTER="${{ inputs.version || 'all' }}"
if [[ "$VERSION_FILTER" == "v6" ]]; then
V6_MATRIX=$(echo "$CANDIDATES" | jq -c 'map(select(.majorVersion == "6"))')
V7_MATRIX='[]'
elif [[ "$VERSION_FILTER" == "v7" ]]; then
V6_MATRIX='[]'
V7_MATRIX=$(echo "$CANDIDATES" | jq -c 'map(select(.majorVersion == "7"))')
else
V6_MATRIX=$(echo "$CANDIDATES" | jq -c 'map(select(.majorVersion == "6"))')
V7_MATRIX=$(echo "$CANDIDATES" | jq -c 'map(select(.majorVersion == "7"))')
fi
echo "upgrades_v6=$V6_MATRIX" >> $GITHUB_OUTPUT
echo "upgrades_v7=$V7_MATRIX" >> $GITHUB_OUTPUT
echo "Upgrades V6: $V6_MATRIX"
echo "Upgrades V7: $V7_MATRIX"
Patch_V6:
needs: Check_Versions
if: ${{ needs.Check_Versions.outputs.upgrades_v6 != '[]' }}
uses: ./.github/workflows/patch_v6.yml
strategy:
matrix:
target: ${{ fromJson(needs.Check_Versions.outputs.upgrades_v6) }}
fail-fast: false
with:
channel: stable
release: true
channel: ${{ matrix.target.channel }}
version: ${{ matrix.target.version }}
release: ${{ github.event_name == 'workflow_dispatch' && inputs.release || github.event_name != 'workflow_dispatch' && true }}
secrets: inherit
Patch_LongTerm_V6:
if: |
(github.event_name == 'schedule') ||
(github.event_name == 'workflow_dispatch' && (github.event.inputs.version == 'all' || github.event.inputs.version == 'v6'))
uses: ./.github/workflows/patch_v6.yml
Patch_V7:
needs: Check_Versions
if: ${{ needs.Check_Versions.outputs.upgrades_v7 != '[]' }}
uses: ./.github/workflows/patch_v7.yml
strategy:
matrix:
target: ${{ fromJson(needs.Check_Versions.outputs.upgrades_v7) }}
fail-fast: false
with:
channel: long-term
release: true
secrets: inherit
channel: ${{ matrix.target.channel }}
version: ${{ matrix.target.version }}
release: ${{ github.event_name == 'workflow_dispatch' && inputs.release || github.event_name != 'workflow_dispatch' && true }}
secrets: inherit