Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

👷 create Github release when publishing package #510

Merged
merged 2 commits into from
Oct 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 26 additions & 8 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,10 @@ jobs:
- run: git checkout HEAD^
- name: Load base version
id: load_base_version
working-directory: ${{ matrix.package }}
run: |
set -e
echo "BASE_VERSION_${{ matrix.package }}=$(awk '/^version: / {print $2}' ${{ matrix.package }}/pubspec.yaml)" >> $GITHUB_OUTPUT
echo "BASE_VERSION_${{ matrix.package }}=$(yq -r '.version' pubspec.yaml)" >> $GITHUB_OUTPUT
publish:
name: "Publish"
needs: get_base_version
Expand All @@ -53,34 +54,43 @@ jobs:
uses: actions/checkout@v3
- name: Load this version
id: load_this_version
working-directory: ${{ matrix.package }}
run: |
set -e
echo "THIS_VERSION=$(awk '/^version: / {print $2}' ${{ matrix.package }}/pubspec.yaml)" >> $GITHUB_ENV
echo "THIS_VERSION=$(yq -r '.version' pubspec.yaml)" >> $GITHUB_ENV
- name: Compare versions
id: compare_versions
env:
BASE_VERSION_chopper: ${{ needs.get_base_version.outputs.BASE_VERSION_chopper }}
BASE_VERSION_chopper_generator: ${{ needs.get_base_version.outputs.BASE_VERSION_chopper_generator }}
BASE_VERSION_chopper_built_value: ${{ needs.get_base_version.outputs.BASE_VERSION_chopper_built_value }}
working-directory: tool
run: |
set -e
pushd tool || exit
dart pub get
echo "IS_VERSION_GREATER=$(dart run compare_versions.dart $THIS_VERSION $BASE_VERSION_${{ matrix.package }})" >> $GITHUB_ENV
popd || exit
- name: Validate pub.dev topics
id: validate_pub_dev_topics
working-directory: ${{ matrix.package }}
run: |
set -e
pushd ${{ matrix.package }} || exit
pattern="^[a-z][a-z0-9-]*[a-z0-9]$"
for topic in $(yq -r '.topics[]' pubspec.yaml); do
if [[ ! $topic =~ $pattern ]]; then
echo "Invalid topic: $topic"
exit 1
fi
done
popd || exit
- name: Create release-specific CHANGELOG
id: create_changelog
if: ${{ env.IS_VERSION_GREATER == 1 }}
working-directory: ${{ matrix.package }}
run: |
set -e
CHANGELOG_PATH=$RUNNER_TEMP/CHANGELOG.md
awk '/^##[[:space:]].*/ { if (count == 1) exit; count++; print } count == 1 && !/^##[[:space:]].*/ { print }' CHANGELOG.md | sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' > $CHANGELOG_PATH
echo -en "\n[https://pub.dev/packages/${{ matrix.package }}/versions/$THIS_VERSION](https://pub.dev/packages/${{ matrix.package }}/versions/$THIS_VERSION)" >> $CHANGELOG_PATH
echo "CHANGELOG_PATH=$CHANGELOG_PATH" >> $GITHUB_ENV
- name: Set up pub credentials
id: credentials
if: ${{ env.IS_VERSION_GREATER == 1 }}
Expand All @@ -91,12 +101,19 @@ jobs:
- name: Publish
id: publish
if: ${{ env.IS_VERSION_GREATER == 1 }}
working-directory: ${{ matrix.package }}
run: |
set -e
pushd ${{ matrix.package }} || exit
yq -i 'del(.dependency_overrides)' pubspec.yaml
dart pub publish --force
popd || exit
- name: Github release
id: github_release
if: ${{ env.IS_VERSION_GREATER == 1 }}
uses: softprops/action-gh-release@v1
with:
name: ${{ format('{0}-v{1}', matrix.package, env.THIS_VERSION) }}
tag_name: ${{ format('{0}-v{1}', matrix.package, env.THIS_VERSION) }}
body_path: ${{ env.CHANGELOG_PATH }}
- name: Skip publish
id: skip_publish
if: ${{ env.IS_VERSION_GREATER == 0 }}
Expand All @@ -106,3 +123,4 @@ jobs:
if: ${{ always() }}
run: |
rm -rf $XDG_CONFIG_HOME/dart/pub-credentials.json
rm -rf $CHANGELOG_PATH
30 changes: 22 additions & 8 deletions .github/workflows/publish_dry_run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@ jobs:
ref: ${{ github.event.pull_request.base.ref }}
- name: Load base version
id: load_base_version
working-directory: ${{ matrix.package }}
run: |
set -e
echo "BASE_VERSION_${{ matrix.package }}=$(awk '/^version: / {print $2}' ${{ matrix.package }}/pubspec.yaml)" >> $GITHUB_OUTPUT
echo "BASE_VERSION_${{ matrix.package }}=$(yq -r '.version' pubspec.yaml)" >> $GITHUB_OUTPUT
publish_dry_run:
name: "Publish DRY RUN"
needs: get_base_version
Expand All @@ -52,44 +53,57 @@ jobs:
uses: actions/checkout@v3
- name: Load this version
id: load_this_version
working-directory: ${{ matrix.package }}
run: |
set -e
echo "THIS_VERSION=$(awk '/^version: / {print $2}' ${{ matrix.package }}/pubspec.yaml)" >> $GITHUB_ENV
echo "THIS_VERSION=$(yq -r '.version' pubspec.yaml)" >> $GITHUB_ENV
- name: Compare versions
id: compare_versions
env:
BASE_VERSION_chopper: ${{ needs.get_base_version.outputs.BASE_VERSION_chopper }}
BASE_VERSION_chopper_generator: ${{ needs.get_base_version.outputs.BASE_VERSION_chopper_generator }}
BASE_VERSION_chopper_built_value: ${{ needs.get_base_version.outputs.BASE_VERSION_chopper_built_value }}
working-directory: tool
run: |
set -e
pushd tool || exit
dart pub get
echo "IS_VERSION_GREATER=$(dart run compare_versions.dart $THIS_VERSION $BASE_VERSION_${{ matrix.package }})" >> $GITHUB_ENV
popd || exit
- name: Validate pub.dev topics
id: validate_pub_dev_topics
working-directory: ${{ matrix.package }}
run: |
set -e
pushd ${{ matrix.package }} || exit
pattern="^[a-z][a-z0-9-]*[a-z0-9]$"
for topic in $(yq -r '.topics[]' pubspec.yaml); do
if [[ ! $topic =~ $pattern ]]; then
echo "Invalid topic: $topic"
exit 1
fi
done
popd || exit
- name: Create release-specific CHANGELOG
id: create_changelog
if: ${{ env.IS_VERSION_GREATER == 1 }}
working-directory: ${{ matrix.package }}
run: |
set -e
CHANGELOG_PATH=$RUNNER_TEMP/CHANGELOG.md
awk '/^##[[:space:]].*/ { if (count == 1) exit; count++; print } count == 1 && !/^##[[:space:]].*/ { print }' CHANGELOG.md | sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' > $CHANGELOG_PATH
echo -en "\n[https://pub.dev/packages/${{ matrix.package }}/versions/$THIS_VERSION](https://pub.dev/packages/${{ matrix.package }}/versions/$THIS_VERSION)" >> $CHANGELOG_PATH
echo "CHANGELOG_PATH=$CHANGELOG_PATH" >> $GITHUB_ENV
- name: Publish (dry run)
id: publish_dry_run
if: ${{ env.IS_VERSION_GREATER == 1 }}
working-directory: ${{ matrix.package }}
run: |
set -e
pushd ${{ matrix.package }} || exit
yq -i 'del(.dependency_overrides)' pubspec.yaml
dart pub publish --dry-run
popd || exit
- name: Skip publish (dry run)
id: skip_publish_dry_run
if: ${{ env.IS_VERSION_GREATER == 0 }}
run: echo "Skipping publish (dry run) for ${{ matrix.package }} because the version is not greater than the one on pub.dev"
- name: Cleanup
id: cleanup
if: ${{ always() }}
run: |
rm -rf $CHANGELOG_PATH