Niansuh/open-webui
2
1name: Release2 3on:4 push:5 branches:6 - main # or whatever branch you want to use7 8jobs:9 release:10 runs-on: ubuntu-latest11 12 steps:13 - name: Checkout repository14 uses: actions/checkout@v415 16 - name: Check for changes in package.json17 run: |18 git diff --cached --diff-filter=d package.json || {19 echo "No changes to package.json"20 exit 121 }22 23 - name: Get version number from package.json24 id: get_version25 run: |26 VERSION=$(jq -r '.version' package.json)27 echo "::set-output name=version::$VERSION"28 29 - name: Extract latest CHANGELOG entry30 id: changelog31 run: |32 CHANGELOG_CONTENT=$(awk 'BEGIN {print_section=0;} /^## \[/ {if (print_section == 0) {print_section=1;} else {exit;}} print_section {print;}' CHANGELOG.md)33 CHANGELOG_ESCAPED=$(echo "$CHANGELOG_CONTENT" | sed ':a;N;$!ba;s/\n/%0A/g')34 echo "Extracted latest release notes from CHANGELOG.md:" 35 echo -e "$CHANGELOG_CONTENT" 36 echo "::set-output name=content::$CHANGELOG_ESCAPED"37 38 - name: Create GitHub release39 uses: actions/github-script@v740 with:41 github-token: ${{ secrets.GITHUB_TOKEN }}42 script: |43 const changelog = `${{ steps.changelog.outputs.content }}`;44 const release = await github.rest.repos.createRelease({45 owner: context.repo.owner,46 repo: context.repo.repo,47 tag_name: `v${{ steps.get_version.outputs.version }}`,48 name: `v${{ steps.get_version.outputs.version }}`,49 body: changelog,50 })51 console.log(`Created release ${release.data.html_url}`)52 53 - name: Upload package to GitHub release54 uses: actions/upload-artifact@v455 with:56 name: package57 path: .58 env:59 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}60 61 - name: Trigger Docker build workflow62 uses: actions/github-script@v763 with:64 script: |65 github.rest.actions.createWorkflowDispatch({66 owner: context.repo.owner,67 repo: context.repo.repo,68 workflow_id: 'docker-build.yaml',69 ref: 'v${{ steps.get_version.outputs.version }}',70 })71 