Files
game-tracker/.gitea/workflows/push.yaml

321 lines
9.1 KiB
YAML

name: Push Pipeline
on:
push:
branches:
- "development"
- "main"
jobs:
test:
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
flutter-version: 3.41.0
- name: Get dependencies
run: |
git config --global --add safe.directory /opt/hostedtoolcache/flutter/stable-3.41.0-x64
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
flutter-version: 3.41.0
- name: Get dependencies
run: |
git config --global --add safe.directory /opt/hostedtoolcache/flutter/stable-3.41.0-x64
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
flutter-version: 3.41.0
- name: Get dependencies
run: |
git config --global --add safe.directory /opt/hostedtoolcache/flutter/stable-3.41.0-x64
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
flutter-version: 3.41.0
- name: Get dependencies
run: |
git config --global --add safe.directory /opt/hostedtoolcache/flutter/stable-3.41.0-x64
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
flutter-version: 3.41.0
- name: Get dependencies
run: |
git config --global --add safe.directory /opt/hostedtoolcache/flutter/stable-3.41.0-x64
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:
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
flutter-version: 3.41.0
- name: Get dependencies
run: |
git config --global --add safe.directory /opt/hostedtoolcache/flutter/stable-3.41.0-x64
flutter pub get
- name: Build APK
run: flutter build apk --release