Skip to content

Elastic-FTC

Elastic-FTC #1

Workflow file for this run

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Elastic-FTC
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
workflow_dispatch:
env:
FLUTTER_VERSION: 3.22.0
jobs:
formatting-analysis:
name: "Check Formatting & Analyze"
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
cache-path: ${{ runner.tool_cache }}/flutter/linux
- name: Install dependencies
run: flutter pub get
- name: Generate mocks
run: dart run build_runner build
- name: Verify formatting
run: dart format --output=none --set-exit-if-changed lib/* test/*
- name: Verify import sorting
run: dart run import_sorter:main --exit-if-changed
- name: Analyze project source
run: flutter analyze --no-fatal-infos --no-fatal-warnings
test:
name: "Run Tests"
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
cache-path: ${{ runner.tool_cache }}/flutter/linux
- name: Install dependencies
run: flutter pub get
- name: Generate mocks
run: dart run build_runner build
- name: Run tests
run: flutter test --coverage
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
build:
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
build-option: "windows"
artifact-path: "build/windows/x64/runner/Release"
artifact-name: Elastic-Windows
- os: macos-latest
build-option: "macos"
artifact-path: "build/macos/Build/Products/Release/Elastic-macOS.zip"
artifact-name: Elastic-macOS
executable-type: portable
- os: ubuntu-latest
build-option: "linux"
artifact-path: "build/linux/x64/release/bundle"
artifact-name: Elastic-Linux
executable-type: portable
name: "Build - ${{ matrix.artifact-name }}"
needs: [formatting-analysis, test]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Install flutter dependencies
if: ${{ matrix.build-option == 'linux' }}
run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build libgtk-3-dev
- name: Setup flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
cache-path: ${{ runner.tool_cache }}/flutter/${{ matrix.build-option }}
- name: Install dependencies
run: flutter pub get
- name: Generate icons
run: dart run flutter_launcher_icons
- name: Build app
run: flutter build ${{ matrix.build-option }}
- name: Create installer
if: ${{ matrix.build-option == 'windows' }}
uses: Minionguyjpro/[email protected]
with:
path: installer_setup_script.iss
options: /O+
- name: Zip release
if: ${{ matrix.build-option == 'macos' }}
run: |
cd build/macos/Build/Products/Release
zip -r Elastic-macOS.zip elastic_dashboard.app --symlinks
- name: Upload artifact
if: ${{ matrix.build-option != 'windows' }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact-name }}
path: ${{ matrix.artifact-path }}
if-no-files-found: error
- name: Upload artifact (Windows portable)
if: ${{ matrix.build-option == 'windows' }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact-name }}_portable
path: ${{ matrix.artifact-path }}
if-no-files-found: error
- name: Upload artifact (Windows installer)
if: ${{ matrix.build-option == 'windows' }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact-name }}_installer
path: "build/windows/x64/installer"
if-no-files-found: error