diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a0344f60..8996423b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,6 @@ # TODO: Update the workflow to build on Android, iOS, desktop (macOS and Windows) instead of just Linux and Web -name: Build the example +name: ๐Ÿ—๏ธ Build the example on: pull_request: @@ -8,39 +8,43 @@ on: jobs: build_linux: - name: Build Linux and Web Apps + name: ๐Ÿง Build Linux and Web Apps runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: subosito/flutter-action@v2 + - name: ๐Ÿ“ฆ Checkout repository + uses: actions/checkout@v4 + + - name: ๐Ÿ› ๏ธ Set up Flutter + uses: subosito/flutter-action@v2 with: channel: 'stable' cache: true - - name: Check Flutter Version + - name: ๐Ÿ” Verify Flutter installation run: flutter --version - - name: Enable Local Development Environment (use the local packages) + - name: ๐Ÿšง Enable local development environment (use the local packages) run: ./scripts/enable_local_dev.sh - - name: Install Flutter Dependencies + - name: ๐Ÿ“ฅ Install Flutter dependencies run: flutter pub get - - name: Build Flutter Web Application + - name: ๐ŸŒ Build Flutter Web Application run: flutter build web --release --verbose --dart-define=CI=true working-directory: ./example - - name: Update and Upgrade APT Packages + # TODO: Update the CI to not upgrade all the packages to save some time + - name: ๐Ÿ”„ Update and Upgrade APT Packages run: sudo apt update -y && sudo apt upgrade -y - - name: Install Flutter Linux Prerequisites + - name: ๐Ÿ› ๏ธ Install Flutter Linux Prerequisites run: sudo apt install -y curl git unzip xz-utils zip libglu1-mesa - - name: Install Flutter Linux Desktop Dependencies + - name: ๐Ÿงฉ Install Flutter Linux Desktop Dependencies run: sudo apt install -y clang cmake git ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev - - name: Build Flutter Linux Desktop Application + - name: ๐Ÿง Build Flutter Linux Desktop Application run: flutter build linux --release --verbose --dart-define=CI=true working-directory: ./example diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fc58fb46..5b0c27e6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,4 @@ -name: CI Tests +name: ๐Ÿงช Run Tests on: push: @@ -8,50 +8,54 @@ on: jobs: tests: + name: Check lints and tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: subosito/flutter-action@v2 + - name: ๐Ÿ“ฆ Checkout repository + uses: actions/checkout@v4 + + - name: ๐Ÿ› ๏ธ Set up Flutter + uses: subosito/flutter-action@v2 with: channel: 'stable' cache: true - - name: Check flutter version + - name: ๐Ÿ” Verify Flutter installation run: flutter --version - - name: Enable Local Dev + - name: ๐Ÿšง Enable local development environment (use the local packages) run: ./scripts/enable_local_dev.sh - - name: Install dependencies + - name: ๐Ÿ“ฅ Install Flutter dependencies run: flutter pub get - - name: Install dart_quill_delta dependencies + - name: ๐Ÿ“ฆ Install dart_quill_delta dependencies run: flutter pub get -C dart_quill_delta - - name: Install flutter_quill_extensions dependencies + - name: ๐Ÿ“ฆ Install flutter_quill_extensions dependencies run: flutter pub get -C flutter_quill_extensions - - name: Install flutter_quill_test dependencies + - name: ๐Ÿ“ฆ Install flutter_quill_test dependencies run: flutter pub get -C flutter_quill_test - - name: Install quill_html_converter dependencies + - name: ๐Ÿ“ฆ Install quill_html_converter dependencies run: flutter pub get -C quill_html_converter - - name: Install quill_pdf_converter dependencies + - name: ๐Ÿ“ฆ Install quill_pdf_converter dependencies run: flutter pub get -C quill_pdf_converter - - name: Run flutter analysis + - name: ๐Ÿ” Run Flutter analysis run: flutter analyze - - name: Check dart code formatting + - name: ๐Ÿงน Check Dart code formatting run: dart format --set-exit-if-changed . - - name: Preview dart proposed changes + - name: ๐Ÿ” Preview Dart proposed changes run: dart fix --dry-run - - name: Check if package is ready for publishing + - name: ๐Ÿ“ฆ Check if package is ready for publishing run: flutter pub publish --dry-run - - name: Run flutter tests + - name: ๐Ÿงช Run Flutter tests run: flutter test diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d2594dd4..0eff89cf 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,4 +1,4 @@ -name: Publish to pub.dev +name: ๐Ÿš€ Publish to pub.dev on: push: @@ -7,6 +7,7 @@ on: jobs: publish: + name: Publish the packages permissions: id-token: write # Give the default GITHUB_TOKEN write permission to commit and push the changed files to the repository. @@ -14,37 +15,40 @@ jobs: contents: write runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - # Needed for commit and push changes + - name: ๐Ÿ“ฆ Checkout repository + uses: actions/checkout@v4 + # Needed for commit and push changes with: # TODO: Try to not hardcode the branch name ref: master fetch-depth: 0 # To get all tags - - name: Upload LICENSE to the release assets + - name: ๐Ÿ“„ Upload LICENSE file to release assets uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: files: LICENSE - - uses: subosito/flutter-action@v2 + - name: ๐Ÿ› ๏ธ Set up Flutter + uses: subosito/flutter-action@v2 with: channel: 'stable' cache: true - - name: Check flutter version + - name: ๐Ÿ” Verify Flutter installation run: flutter --version - - name: Enable Local Development Environment (use the local packages) + - name: ๐Ÿšง Enable local development environment (use the local packages) run: ./scripts/enable_local_dev.sh - - name: Install dependencies + - name: ๐Ÿ“ฅ Install Flutter dependencies run: flutter pub get # This is needed in order for the authentication to success # dart pub token add https://pub.dev --env-var PUB_TOKEN # Requests to "https://pub.dev" will now be authenticated using the secret token stored in the environment variable "PUB_TOKEN". - - uses: dart-lang/setup-dart@v1 + - name: ๐Ÿ—๏ธ Set up Dart environment + uses: dart-lang/setup-dart@v1 ## dart-lang/setup-dart/.github/workflows/publish.yml@v1 # - name: Update the authorization requests to "https://pub.dev" to use the environment variable "PUB_TOKEN". # run: dart pub token add https://pub.dev --env-var PUB_TOKEN @@ -52,25 +56,25 @@ jobs: # Before publishing the new packages, update the version for all the packages first # Extract version from the tag (handles the 'v' prefix) - - name: Extract version from the release tag + - name: ๐Ÿท๏ธ Extract version from tag as pubspec.yaml version id: extract_version run: | version=$(echo ${GITHUB_REF} | sed 's/^refs\/tags\/v\(.*\)$/\1/') echo "VERSION=${version}" >> $GITHUB_OUTPUT - - name: Validate extracted version format + - name: โœ… Validate version format run: | version=${{ steps.extract_version.outputs.VERSION }} if [[ ! $version =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then - echo "Invalid version format: $version. The version must be a valid pubspec.yaml version" + echo "โŒ Invalid version format: $version. The version must be a valid pubspec.yaml version" exit 1 fi - - name: Extract release tag + - name: ๐Ÿท๏ธ Extract release tag id: release_tag run: echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT - - name: Fetch release notes + - name: ๐Ÿ“‘ Fetch release notes from Github API id: fetch-release-notes-request uses: fjogeleit/http-request-action@v1 with: @@ -79,48 +83,49 @@ jobs: customHeaders: '{"Authorization": "${{ secrets.GITHUB_TOKEN }}"}' preventFailureOnNoResponse: 'false' - - name: Validate release notes response + - name: โš ๏ธ Validate release notes response run: | - if [[ -z "$(fromJson ${{ steps.fetch-release-notes-request.outputs }}).body" ]]; then + if [[ -z "$(echo '${{ steps.fetch-release-notes-request.outputs }}' | jq -r '.body')" ]]; then echo "Error: Release notes response is empty." exit 1 fi - - name: Update the version & CHANGELOG for all the packages + # TODO: There is a bug that cause styling loss: https://github.com/singerdmx/flutter-quill/issues/1880 + - name: ๐Ÿ“ Update version and CHANGELOG for all the packages run: dart ./scripts/update_package_version.dart ${{ steps.extract_version.outputs.VERSION }} "${{ fromJson(steps.fetch-release-notes-request.outputs.response).body }}" - - name: Commit the changes of the updated version & CHANGELOG for all the packages + - name: ๐Ÿ’พ Commit updated version and CHANGELOG id: auto-commit-action uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "chore(version): update to version ${{ steps.extract_version.outputs.VERSION }}" - - name: Check if any changes made by the script + - name: ๐Ÿ” Verify changes made by the script if: steps.auto-commit-action.outputs.changes_detected == 'true' - run: echo "The changes of the previous step have been done" + run: echo "โœ… Changes have been committed." - - name: Check if package is ready for publishing + - name: ๐Ÿ”„ Check if package is ready for publishing run: flutter pub publish --dry-run - - name: Publish flutter_quill + - name: ๐Ÿ“ค Publish flutter_quill run: flutter pub publish --force - - name: Publish dart_quill_delta + - name: ๐Ÿ“ค Publish dart_quill_delta run: flutter pub publish --force working-directory: ./dart_quill_delta/ - - name: Publish flutter_quill_extensions + - name: ๐Ÿ“ค Publish flutter_quill_extensions run: flutter pub publish --force working-directory: ./flutter_quill_extensions/ - - name: Publish flutter_quill_test + - name: ๐Ÿ“ค Publish flutter_quill_test run: flutter pub publish --force working-directory: ./flutter_quill_test/ - - name: Publish quill_html_converter + - name: ๐Ÿ“ค Publish quill_html_converter run: flutter pub publish --force working-directory: ./quill_html_converter/ - - name: Publish quill_pdf_converter + - name: ๐Ÿ“ค Publish quill_pdf_converter run: flutter pub publish --force working-directory: ./quill_pdf_converter/