dartlangeditorflutterflutter-appsflutter-examplesflutter-packageflutter-widgetquillquill-deltaquilljsreactquillrich-textrich-text-editorwysiwygwysiwyg-editor
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
4.7 KiB
126 lines
4.7 KiB
name: Publish to pub.dev |
|
|
|
on: |
|
push: |
|
tags: |
|
- 'v[0-9]+.[0-9]+.[0-9]+*' |
|
|
|
jobs: |
|
publish: |
|
permissions: |
|
id-token: write |
|
# Give the default GITHUB_TOKEN write permission to commit and push the changed files to the repository. |
|
# Also required for uploading files to the Release assets |
|
contents: write |
|
runs-on: ubuntu-latest |
|
steps: |
|
- 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 |
|
uses: softprops/action-gh-release@v2 |
|
if: startsWith(github.ref, 'refs/tags/') |
|
with: |
|
files: LICENSE |
|
|
|
- uses: subosito/flutter-action@v2 |
|
with: |
|
channel: 'stable' |
|
cache: true |
|
|
|
- name: Check flutter version |
|
run: flutter --version |
|
|
|
- name: Enable Local Development Environment (use the local packages) |
|
run: ./scripts/enable_local_dev.sh |
|
|
|
- name: Install 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 |
|
## 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 |
|
|
|
# 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 |
|
id: extract_version |
|
run: | |
|
version=$(echo ${GITHUB_REF} | sed 's/^refs\/tags\/v\(.*\)$/\1/') |
|
echo "VERSION=${version}" >> $GITHUB_OUTPUT |
|
|
|
- name: Validate extracted 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" |
|
exit 1 |
|
fi |
|
|
|
- name: Extract release tag |
|
id: release_tag |
|
run: echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT |
|
|
|
- name: Fetch release notes |
|
id: fetch-release-notes-request |
|
uses: fjogeleit/http-request-action@v1 |
|
with: |
|
url: https://api.github.com/repos/${{ github.repository }}/releases/tags/${{ steps.release_tag.outputs.tag }} |
|
method: 'GET' |
|
customHeaders: '{"Authorization": "${{ secrets.GITHUB_TOKEN }}"}' |
|
preventFailureOnNoResponse: 'false' |
|
|
|
- name: Validate release notes response |
|
run: | |
|
if [[ -z "$(fromJson ${{ steps.fetch-release-notes-request.outputs }}).body" ]]; then |
|
echo "Error: Release notes response is empty." |
|
exit 1 |
|
fi |
|
|
|
- name: Update the version & 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 |
|
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 |
|
if: steps.auto-commit-action.outputs.changes_detected == 'true' |
|
run: echo "The changes of the previous step have been done" |
|
|
|
- name: Check if package is ready for publishing |
|
run: flutter pub publish --dry-run |
|
|
|
- name: Publish flutter_quill |
|
run: flutter pub publish --force |
|
|
|
- name: Publish dart_quill_delta |
|
run: flutter pub publish --force |
|
working-directory: ./dart_quill_delta/ |
|
|
|
- name: Publish flutter_quill_extensions |
|
run: flutter pub publish --force |
|
working-directory: ./flutter_quill_extensions/ |
|
|
|
- name: Publish flutter_quill_test |
|
run: flutter pub publish --force |
|
working-directory: ./flutter_quill_test/ |
|
|
|
- name: Publish quill_html_converter |
|
run: flutter pub publish --force |
|
working-directory: ./quill_html_converter/ |
|
|
|
- name: Publish quill_pdf_converter |
|
run: flutter pub publish --force |
|
working-directory: ./quill_pdf_converter/
|
|
|