ci: set tag and release on main
branch PRs
#96
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linting & Tests Validation | |
permissions: | |
contents: write | |
pull-requests: read | |
on: | |
pull_request: | |
branches: | |
- develop | |
jobs: | |
lint_and_test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: '3.24.5' | |
- name: Install dependencies | |
run: flutter pub get | |
- name: Run Dart Format Check (Efficient) | |
run: | | |
dart format . --set-exit-if-changed --output none || ( | |
echo "Code formatting issues detected. Run 'dart format .' and commit the changes."; | |
exit 1; | |
) | |
- name: Run Flutter Analyze | |
run: flutter analyze | |
- name: Generate Localization Files (Easy Localization) | |
run: | | |
# Generate locale keys | |
dart run easy_localization:generate -f keys -o locale_keys.g.dart --source-dir=assets/translations --output-dir=lib/src/core/utils/gen/localization || ( | |
echo "Error: Failed to generate locale keys."; | |
exit 1; | |
) | |
- name: Run Dart Format and Check Localization Files Changes | |
run: | | |
# Run dart format without failing the step | |
dart format . || echo "dart format completed with warnings, but continuing pipeline." | |
# Check if there are changes in the localization files after generation | |
git diff --exit-code lib/src/core/utils/gen/localization || ( | |
echo "Error: Localization files are outdated. Run the generation command and commit the changes."; | |
exit 1; | |
) | |
- name: Generate Assets Files | |
run: | | |
# Command to rebuild asset files | |
dart run build_runner build --delete-conflicting-outputs --build-filter="lib/src/core/utils/gen/assets/*.dart" || ( | |
echo "Error: Failed to generate asset files."; | |
exit 1; | |
) | |
- name: Check Asset Files Changes | |
run: | | |
# Check if there are changes after generating asset files | |
git diff --exit-code lib/src/core/utils/gen/assets || ( | |
echo "Error: Asset files are outdated. Run the generation command and commit the changes."; | |
exit 1; | |
) | |
- name: Run tests | |
run: flutter test | |
merge_check: | |
runs-on: ubuntu-latest | |
needs: lint_and_test | |
if: ${{ success() }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Merge Pull Request | |
run: echo "Linting and tests passed successfully.Merge request is ready for merge" | |
build-and-release-linux: | |
# if: github.event.pull_request.merged == false | |
runs-on: ubuntu-latest | |
outputs: | |
release_tag: linux-release-${{ github.run_number }} | |
platform: Linux | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
flutter-version: '3.24.5' | |
channel: 'stable' | |
cache: true | |
- name: Install Linux dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y ninja-build libgtk-3-dev | |
sudo apt-get install -y cmake pkg-config | |
sudo apt-get install -y libblkid-dev | |
sudo apt-get install -y liblzma-dev | |
- name: Enable Linux desktop | |
run: flutter config --enable-linux-desktop | |
- name: Get dependencies | |
run: flutter pub get | |
- name: Build application | |
run: flutter build linux --release | |
- name: Archive Release | |
uses: thedoctor0/zip-release@master | |
with: | |
type: 'zip' | |
filename: 'linux-build.zip' | |
directory: build/linux/x64/release/bundle | |
- name: Create Linux Release | |
id: create_linux_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: linux-release-${{ github.run_number }} | |
release_name: Linux Release ${{ github.run_number }} | |
body: | | |
Linux release from merged PR #${{ github.event.pull_request.number }} | |
${{ github.event.pull_request.title }} | |
draft: false | |
prerelease: false | |
- name: Upload Linux Release Asset | |
uses: softprops/action-gh-release@v1 | |
with: | |
tag_name: linux-release-${{ github.run_number }} | |
files: build/linux/x64/release/bundle/linux-build.zip | |
notify-linux: | |
needs: build-and-release-linux | |
runs-on: ubuntu-latest | |
steps: | |
- name: Send Telegram Notification | |
uses: appleboy/telegram-action@master | |
with: | |
to: ${{ secrets.TELEGRAM_CHAT_ID }} | |
token: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
format: markdown | |
message: | | |
π *Linux Release Published!* | |
π¦ Version: Linux Release ${{ github.run_number }} | |
π PR: #${{ github.event.pull_request.number }} - ${{ github.event.pull_request.title }} | |
π€ Requested by: ${{ github.event.pull_request.user.login }} | |
β Merged by: ${{ github.event.pull_request.merged_by.login }} | |
π₯ *Download Link:* | |
[Linux Build](https://github.com/${{ github.repository }}/releases/download/linux-release-${{ github.run_number }}/linux-build.zip) | |
π [View Release](https://github.com/${{ github.repository }}/releases/tag/linux-release-${{ github.run_number }}) | |
- name: Send Discord Notification | |
uses: Ilshidur/action-discord@master | |
env: | |
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} | |
with: | |
args: | | |
π **Linux Release Published!** | |
π¦ Version: Linux Release ${{ github.run_number }} | |
π PR: #${{ github.event.pull_request.number }} - ${{ github.event.pull_request.title }} | |
π€ Requested by: ${{ github.event.pull_request.user.login }} | |
β Merged by: ${{ github.event.pull_request.merged_by.login }} | |
π₯ *Download Link:* | |
[Linux Build](https://github.com/${{ github.repository }}/releases/download/linux-release-${{ github.run_number }}/linux-build.zip) | |
π [View Release](https://github.com/${{ github.repository }}/releases/tag/linux-release-${{ github.run_number }}) | |