diff --git a/.github/workflows/release-prepare.yml b/.github/workflows/release-prepare.yml new file mode 100644 index 000000000..96004f03d --- /dev/null +++ b/.github/workflows/release-prepare.yml @@ -0,0 +1,41 @@ +name: Prepare Release + +on: + workflow_dispatch: + inputs: + prerelease: + description: 'Version as prerelease' + required: false + default: false + type: boolean + graduate: + description: 'Graduate prereleases to stable' + required: false + default: false + type: boolean + +permissions: + contents: write + pull-requests: write + +jobs: + prepare-release: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + + - name: Setup Melos + uses: bluefireteam/melos-action@v3 + with: + run-versioning: ${{ inputs.prerelease == false }} + run-versioning-prerelease: ${{ inputs.prerelease == true }} + run-versioning-graduate: ${{ inputs.graduate == true }} + publish-dry-run: true + create-pr: true diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml new file mode 100644 index 000000000..15bd46da0 --- /dev/null +++ b/.github/workflows/release-publish.yml @@ -0,0 +1,42 @@ +name: Publish Packages + +on: + workflow_dispatch: + +permissions: + contents: write + id-token: write + +jobs: + publish-packages: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + + - name: Publish to pub.dev + uses: bluefireteam/melos-action@v3 + with: + publish: true + + - name: Create GitHub Release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ github.ref_name }} + name: Release ${{ github.ref_name }} + body: | + ## Package Release + + Released package: ${{ github.ref_name }} + + See the package CHANGELOG for detailed changes. + + --- + *This release was created automatically by the Publish Packages workflow.* + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml new file mode 100644 index 000000000..f1bbd38f7 --- /dev/null +++ b/.github/workflows/release-tag.yml @@ -0,0 +1,34 @@ +name: Create Release Tags + +on: + push: + branches: + - main + +permissions: + contents: write + actions: write + +jobs: + create-tags: + if: ${{ contains(github.event.head_commit.message, 'chore(release):') }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + + - name: Setup Melos + uses: bluefireteam/melos-action@v3 + with: + tag: true + - run: | + melos exec -c 1 --no-published --no-private --order-dependents -- \ + gh workflow run release-publish.yml \ + --ref \$MELOS_PACKAGE_NAME-v\$MELOS_PACKAGE_VERSION + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file