Skip to content

Commit eac8530

Browse files
committed
Github action for schecdule job
to upgrade flutter and auto fix dart and flutter issue
1 parent b9267a9 commit eac8530

File tree

1 file changed

+86
-12
lines changed

1 file changed

+86
-12
lines changed

.github/workflows/flutter-upgrade.yml

Lines changed: 86 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,60 @@ jobs:
4848
echo "Flutter is already up to date"
4949
fi
5050
51+
- name: Check for dependency updates
52+
id: check-deps
53+
run: |
54+
echo "Checking for dependency updates..."
55+
56+
# Check dio version
57+
DIO_CURRENT=$(grep "dio:" pubspec.yaml | sed 's/.*: \^//')
58+
echo "Current dio version: $DIO_CURRENT"
59+
DIO_LATEST=$(curl -s https://pub.dev/api/packages/dio | jq -r '.latest.version')
60+
echo "Latest dio version: $DIO_LATEST"
61+
62+
# Check http version
63+
HTTP_CURRENT=$(grep "http:" pubspec.yaml | sed 's/.*: \^//')
64+
echo "Current http version: $HTTP_CURRENT"
65+
HTTP_LATEST=$(curl -s https://pub.dev/api/packages/http | jq -r '.latest.version')
66+
echo "Latest http version: $HTTP_LATEST"
67+
68+
# Set outputs
69+
echo "dio_current=$DIO_CURRENT" >> $GITHUB_OUTPUT
70+
echo "dio_latest=$DIO_LATEST" >> $GITHUB_OUTPUT
71+
echo "http_current=$HTTP_CURRENT" >> $GITHUB_OUTPUT
72+
echo "http_latest=$HTTP_LATEST" >> $GITHUB_OUTPUT
73+
74+
# Check if dependency updates are available
75+
DEPS_AVAILABLE=false
76+
if [ "$DIO_CURRENT" != "$DIO_LATEST" ]; then
77+
echo "Dio update available: $DIO_CURRENT -> $DIO_LATEST"
78+
DEPS_AVAILABLE=true
79+
fi
80+
if [ "$HTTP_CURRENT" != "$HTTP_LATEST" ]; then
81+
echo "HTTP update available: $HTTP_CURRENT -> $HTTP_LATEST"
82+
DEPS_AVAILABLE=true
83+
fi
84+
85+
echo "deps_available=$DEPS_AVAILABLE" >> $GITHUB_OUTPUT
86+
87+
if [ "$DEPS_AVAILABLE" = "true" ]; then
88+
echo "Dependency updates are available"
89+
else
90+
echo "All dependencies are up to date"
91+
fi
92+
5193
- name: Create upgrade branch
52-
if: steps.check-upgrade.outputs.upgrade_available == 'true'
94+
if: steps.check-upgrade.outputs.upgrade_available == 'true' || steps.check-deps.outputs.deps_available == 'true'
5395
run: |
5496
git config --local user.email "action@github.com"
5597
git config --local user.name "GitHub Action"
56-
BRANCH_NAME="flutter/auto-upgrade-${{ steps.check-upgrade.outputs.latest }}"
98+
99+
if [ "${{ steps.check-upgrade.outputs.upgrade_available }}" == "true" ]; then
100+
BRANCH_NAME="flutter/auto-upgrade-${{ steps.check-upgrade.outputs.latest }}"
101+
else
102+
BRANCH_NAME="deps/auto-update-$(date +%Y%m%d)"
103+
fi
104+
57105
git checkout -b "$BRANCH_NAME"
58106
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
59107
@@ -74,8 +122,28 @@ jobs:
74122
# Note: This is a basic approach - you might need more sophisticated version handling
75123
fi
76124
125+
- name: Update dependencies
126+
if: steps.check-deps.outputs.deps_available == 'true'
127+
run: |
128+
echo "Updating dependencies..."
129+
130+
# Update dio if newer version available
131+
if [ "${{ steps.check-deps.outputs.dio_current }}" != "${{ steps.check-deps.outputs.dio_latest }}" ]; then
132+
echo "Updating dio from ${{ steps.check-deps.outputs.dio_current }} to ${{ steps.check-deps.outputs.dio_latest }}"
133+
sed -i.bak "s/dio: \^${{ steps.check-deps.outputs.dio_current }}/dio: ^${{ steps.check-deps.outputs.dio_latest }}/" pubspec.yaml
134+
fi
135+
136+
# Update http if newer version available
137+
if [ "${{ steps.check-deps.outputs.http_current }}" != "${{ steps.check-deps.outputs.http_latest }}" ]; then
138+
echo "Updating http from ${{ steps.check-deps.outputs.http_current }} to ${{ steps.check-deps.outputs.http_latest }}"
139+
sed -i.bak "s/http: \^${{ steps.check-deps.outputs.http_current }}/http: ^${{ steps.check-deps.outputs.http_latest }}/" pubspec.yaml
140+
fi
141+
142+
# Clean up backup files
143+
rm -f pubspec.yaml.bak
144+
77145
- name: Apply automatic fixes
78-
if: steps.check-upgrade.outputs.upgrade_available == 'true'
146+
if: steps.check-upgrade.outputs.upgrade_available == 'true' || steps.check-deps.outputs.deps_available == 'true'
79147
run: |
80148
echo "Applying automatic Dart fixes for deprecations and lint issues..."
81149
@@ -88,7 +156,7 @@ jobs:
88156
dart fix --apply || echo "No fixes applied or apply failed"
89157
90158
- name: Install dependencies and test
91-
if: steps.check-upgrade.outputs.upgrade_available == 'true'
159+
if: steps.check-upgrade.outputs.upgrade_available == 'true' || steps.check-deps.outputs.deps_available == 'true'
92160
run: |
93161
flutter pub get
94162
@@ -103,7 +171,7 @@ jobs:
103171
flutter test || echo "Tests failed - upgrade may need manual review"
104172
105173
- name: Check for changes
106-
if: steps.check-upgrade.outputs.upgrade_available == 'true'
174+
if: steps.check-upgrade.outputs.upgrade_available == 'true' || steps.check-deps.outputs.deps_available == 'true'
107175
id: check-changes
108176
run: |
109177
git add .
@@ -116,33 +184,33 @@ jobs:
116184
fi
117185
118186
- name: Commit changes
119-
if: steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
187+
if: steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true' || steps.check-deps.outputs.deps_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
120188
run: |
121-
git commit -m "chore: upgrade Flutter to ${{ steps.check-upgrade.outputs.latest }}
189+
git commit -m "chore: upgrade Flutter to ${{ steps.check-upgrade.outputs.latest }} and dependencies"
122190
123191
- Automated Flutter upgrade from ${{ steps.current-version.outputs.current }} to ${{ steps.check-upgrade.outputs.latest }}
124192
- Updated dependencies with flutter pub get
125193
- Verified with flutter analyze and flutter test"
126194
127195
- name: Push changes
128-
if: steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
196+
if: steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true' || steps.check-deps.outputs.deps_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
129197
run: |
130198
git push origin "$BRANCH_NAME"
131199
132200
- name: Create Pull Request
133-
if: steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
201+
if: steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true' || steps.check-deps.outputs.deps_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
134202
uses: actions/github-script@v7
135203
with:
136204
script: |
137205
const { data: pullRequest } = await github.rest.pulls.create({
138206
owner: context.repo.owner,
139207
repo: context.repo.repo,
140-
title: 'chore: upgrade Flutter to ' + ${{ steps.check-upgrade.outputs.latest }},
208+
title: 'chore: upgrade Flutter to ' + ${{ steps.check-upgrade.outputs.latest }} + ' and dependencies',
141209
head: process.env.BRANCH_NAME,
142210
base: 'master', // Change to 'main' if that's your default branch
143211
body: '## Flutter Auto Upgrade
144212
145-
This PR was automatically created to upgrade Flutter from **' + ${{ steps.current-version.outputs.current }} + '** to **' + ${{ steps.check-upgrade.outputs.latest }} + '**.
213+
This PR was automatically created to upgrade Flutter from **' + ${{ steps.current-version.outputs.current }} + '** to **' + ${{ steps.check-upgrade.outputs.latest }} + '** and update dependencies.
146214
147215
### Changes Made:
148216
- Upgraded Flutter to the latest stable version
@@ -168,7 +236,7 @@ jobs:
168236
console.log('Created PR #' + pullRequest.number);
169237
170238
- name: Add labels to PR
171-
if: steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
239+
if: steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true' || steps.check-deps.outputs.deps_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
172240
uses: actions/github-script@v7
173241
with:
174242
script: |
@@ -199,6 +267,12 @@ jobs:
199267
else
200268
echo "Flutter upgrade available, but no changes detected"
201269
fi
270+
elif [ "${{ steps.check-deps.outputs.deps_available }}" == "true" ]; then
271+
if [ "${{ steps.check-changes.outputs.has_changes }}" == "true" ]; then
272+
echo "Dependency updates available, changes detected, and PR created!"
273+
else
274+
echo "Dependency updates available, but no changes detected"
275+
fi
202276
else
203277
echo "Flutter is already up to date (${{ steps.current-version.outputs.current }})"
204278
fi

0 commit comments

Comments
 (0)