name: Push Pipeline on: push: branches: - "development" - "main" jobs: test: runs-on: ubuntu-latest container: image: ghcr.io/cirruslabs/flutter:stable steps: - name: Install Node run: | apt-get update apt-get install -y nodejs npm - name: Checkout code uses: actions/checkout@v4 - name: Get dependencies run: | git config --global --add safe.directory '*' flutter pub get - name: Run tests run: flutter test update_version: runs-on: ubuntu-latest if: gitea.ref == 'refs/heads/development' env: GITEA_TOKEN: ${{ secrets.BOT_TOKEN }} BRANCH_NAME: ${{ gitea.ref_name }} steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.BOT_TOKEN }} ref: ${{ gitea.ref_name }} - name: Increment version number uses: stikkyapp/update-pubspec-version@v2 with: strategy: 'patch' path: './pubspec.yaml' - name: Commit version update env: GITEA_TOKEN: ${{ secrets.BOT_TOKEN }} run: | git config --global user.name "Gitea Actions [bot]" git config --global user.email "actions@yannick-weigert.de" git config pull.rebase false git pull origin "$BRANCH_NAME" git add pubspec.yaml git commit -m "Updated version number [skip ci]" git push origin HEAD:$BRANCH_NAME generate_licenses: runs-on: ubuntu-latest env: GITEA_TOKEN: ${{ secrets.BOT_TOKEN }} BRANCH_NAME: ${{ gitea.ref_name }} steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.BOT_TOKEN }} ref: ${{ gitea.ref_name }} # Required for Flutter action - name: Install jq run: | apt-get update apt-get install -y jq - name: Set up Flutter uses: subosito/flutter-action@v2 with: channel: stable - name: Get dependencies run: | git config --global --add safe.directory '*' flutter pub get - name: Generate oss_licenses.dart run: flutter pub run dart_pubspec_licenses:generate -o lib/presentation/views/main_menu/settings_view/licenses/oss_licenses.dart - name: Commit license update run: | if [ -n "$(git status --porcelain lib test)" ]; then git config --global user.name "Gitea Actions [bot]" git config --global user.email "actions@yannick-weigert.de" git config pull.rebase false git pull origin "$BRANCH_NAME" git add lib test git commit -m "Updated licenses [skip ci]" git push origin HEAD:$BRANCH_NAME else echo "No changes to commit" fi generate_localizations: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 # Required for Flutter action - name: Install jq run: | apt-get update apt-get install -y jq - name: Set up Flutter uses: subosito/flutter-action@v2 with: channel: stable - name: Get dependencies run: | git config --global --add safe.directory '*' flutter pub get - name: Generate localizations run: flutter gen-l10n --no-use-deferred-loading - name: Check for changes id: check_changes run: | if [ -n "$(git status --porcelain lib/l10n)" ]; then echo "has_changes=true" >> "$GITHUB_OUTPUT" else echo "has_changes=false" >> "$GITHUB_OUTPUT" fi - name: Commit generated localizations if: steps.check_changes.outputs.has_changes == 'true' env: GITEA_TOKEN: ${{ secrets.BOT_TOKEN }} BRANCH_NAME: ${{ gitea.ref_name }} run: | git fetch origin "$BRANCH_NAME" git checkout "$BRANCH_NAME" if [ -n "$(git status --porcelain lib test)" ]; then git config --global user.name "Gitea Actions [bot]" git config --global user.email "actions@yannick-weigert.de" git config pull.rebase false git pull origin "$BRANCH_NAME" git add lib/l10n git commit -m "Generated localizations [skip ci]" git push origin "HEAD:$BRANCH_NAME" else echo "No changes to commit" fi sort_arb_files: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 # Required for Flutter action - name: Install jq run: | apt-get update apt-get install -y jq - name: Set up Flutter uses: subosito/flutter-action@v2 with: channel: stable - name: Get dependencies run: | git config --global --add safe.directory '*' flutter pub get - name: Sort .arb-Files run: | shopt -s nullglob for file in lib/l10n/arb/app_*.arb; do echo "Sorting $file" dart run arb_utils sort "$file" done - name: Check for changes id: check_changes run: | if [ -n "$(git status --porcelain lib/l10n/arb)" ]; then echo "has_changes=true" >> "$GITHUB_OUTPUT" else echo "has_changes=false" >> "$GITHUB_OUTPUT" fi - name: Commit sorted .arb-Files if: steps.check_changes.outputs.has_changes == 'true' env: GITEA_TOKEN: ${{ secrets.BOT_TOKEN }} BRANCH_NAME: ${{ gitea.ref_name }} run: | git fetch origin "$BRANCH_NAME" git checkout "$BRANCH_NAME" if [ -n "$(git status --porcelain lib/l10n/arb)" ]; then git config --global user.name "Gitea Actions [bot]" git config --global user.email "actions@yannick-weigert.de" git config pull.rebase false git pull origin "$BRANCH_NAME" git add lib/l10n/arb git commit -m "Sort .arb files [skip ci]" git push origin "HEAD:$BRANCH_NAME" else echo "No changes to commit" fi format: runs-on: ubuntu-latest needs: [update_version, generate_licenses, generate_localizations, sort_arb_files] steps: - name: Checkout code uses: actions/checkout@v4 # Required for Flutter action - name: Install jq run: | apt-get update apt-get install -y jq - name: Set up Flutter uses: subosito/flutter-action@v2 with: channel: stable - name: Get dependencies run: | git config --global --add safe.directory '*' flutter pub get - name: Check code format id: check_format continue-on-error: true run: flutter analyze lib test - name: Format code if: steps.check_format.outcome == 'failure' env: GITEA_TOKEN: ${{ secrets.BOT_TOKEN }} BRANCH_NAME: ${{ gitea.ref_name }} run: | git fetch origin "$BRANCH_NAME" git checkout "$BRANCH_NAME" dart fix --apply lib dart fix --apply test if [ -n "$(git status --porcelain lib test)" ]; then git config --global user.name "Gitea Actions [bot]" git config --global user.email "actions@yannick-weigert.de" git config pull.rebase false git pull origin "$BRANCH_NAME" git add lib test git commit -m "Auto-format code [skip ci]" git push origin HEAD:$BRANCH_NAME else echo "No changes to commit" fi - name: Verify format run: flutter analyze lib test build: needs: format runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Java (Temurin 17) uses: actions/setup-java@v3 with: distribution: temurin java-version: '17' - name: Setup Android SDK uses: android-actions/setup-android@v3 # Required for Flutter action - name: Install jq run: | apt-get update apt-get install -y jq - name: Set up Flutter uses: subosito/flutter-action@v2 with: channel: stable - name: Get dependencies run: | git config --global --add safe.directory '*' flutter pub get - name: Build APK run: flutter build apk --release