Skip to content

🔖 release v7.4.0 (#595) #57

🔖 release v7.4.0 (#595)

🔖 release v7.4.0 (#595) #57

Workflow file for this run

name: Publish packages
on:
push:
branches:
- master
defaults:
run:
shell: bash
env:
PUB_ENVIRONMENT: bot.github
permissions: read-all
jobs:
get_base_version:
name: "Get base version"
runs-on: ubuntu-latest
strategy:
matrix:
package: [ chopper, chopper_generator, chopper_built_value ]
outputs:
BASE_VERSION_chopper: ${{ steps.load_base_version.outputs.BASE_VERSION_chopper }}
BASE_VERSION_chopper_generator: ${{ steps.load_base_version.outputs.BASE_VERSION_chopper_generator }}
BASE_VERSION_chopper_built_value: ${{ steps.load_base_version.outputs.BASE_VERSION_chopper_built_value }}
steps:
- uses: dart-lang/setup-dart@v1
with:
sdk: stable
- id: checkout
uses: actions/checkout@v4
with:
fetch-depth: 2
- run: git checkout HEAD^
- name: Load base version
id: load_base_version
working-directory: ${{ matrix.package }}
run: |
set -e
echo "BASE_VERSION_${{ matrix.package }}=$(yq -r '.version' pubspec.yaml)" >> $GITHUB_OUTPUT
publish:
name: "Publish"
needs: get_base_version
runs-on: ubuntu-latest
permissions:
contents: write
strategy:
matrix:
package: [ chopper, chopper_generator, chopper_built_value ]
fail-fast: true
max-parallel: 1
steps:
- uses: dart-lang/setup-dart@v1
with:
sdk: stable
- id: checkout
uses: actions/checkout@v4
- name: Load this version
id: load_this_version
working-directory: ${{ matrix.package }}
run: |
set -e
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
dart pub get
echo "IS_VERSION_GREATER=$(dart run compare_versions.dart $THIS_VERSION $BASE_VERSION_${{ matrix.package }})" >> $GITHUB_ENV
- name: Validate pub.dev topics
id: validate_pub_dev_topics
working-directory: ${{ matrix.package }}
run: |
set -e
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
- 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 }}
run: |
set -e
mkdir -p $XDG_CONFIG_HOME/dart
echo -n '${{ secrets.CREDENTIAL_JSON }}' > $XDG_CONFIG_HOME/dart/pub-credentials.json
- name: Publish
id: publish
if: ${{ env.IS_VERSION_GREATER == 1 }}
working-directory: ${{ matrix.package }}
run: |
set -e
yq -i 'del(.dependency_overrides)' pubspec.yaml
dart pub publish --force
- name: Github release
id: github_release
if: ${{ env.IS_VERSION_GREATER == 1 }}
uses: softprops/action-gh-release@v2
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 }}
run: echo "Skipping publish for ${{ matrix.package }} because the version is not greater than the one on pub.dev"
- name: Cleanup
id: cleanup
if: ${{ always() }}
run: |
rm -rf $XDG_CONFIG_HOME/dart/pub-credentials.json
rm -rf $CHANGELOG_PATH