Co-Authored-By: elad_pt <124190990+elad-pticha@users.noreply.github.com>
This commit is contained in:
Timothy J. Baek 2024-08-19 14:01:21 +02:00
parent 13b0e7d64a
commit b4de0a52f8

View File

@ -10,61 +10,63 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Check for changes in package.json - name: Check for changes in package.json
run: | run: |
git diff --cached --diff-filter=d package.json || { git diff --cached --diff-filter=d package.json || {
echo "No changes to package.json" echo "No changes to package.json"
exit 1 exit 1
} }
- name: Get version number from package.json - name: Get version number from package.json
id: get_version id: get_version
run: | run: |
VERSION=$(jq -r '.version' package.json) VERSION=$(jq -r '.version' package.json)
echo "::set-output name=version::$VERSION" echo "::set-output name=version::$VERSION"
- name: Extract latest CHANGELOG entry - name: Extract latest CHANGELOG entry
id: changelog id: changelog
run: | run: |
CHANGELOG_CONTENT=$(awk 'BEGIN {print_section=0;} /^## \[/ {if (print_section == 0) {print_section=1;} else {exit;}} print_section {print;}' CHANGELOG.md) CHANGELOG_CONTENT=$(awk 'BEGIN {print_section=0;} /^## \[/ {if (print_section == 0) {print_section=1;} else {exit;}} print_section {print;}' CHANGELOG.md)
CHANGELOG_ESCAPED=$(echo "$CHANGELOG_CONTENT" | sed ':a;N;$!ba;s/\n/%0A/g') CHANGELOG_ESCAPED=$(echo "$CHANGELOG_CONTENT" | sed ':a;N;$!ba;s/\n/%0A/g')
echo "Extracted latest release notes from CHANGELOG.md:" echo "Extracted latest release notes from CHANGELOG.md:"
echo -e "$CHANGELOG_CONTENT" echo -e "$CHANGELOG_CONTENT"
echo "::set-output name=content::$CHANGELOG_ESCAPED" echo "::set-output name=content::$CHANGELOG_ESCAPED"
- name: Create GitHub release - name: Create GitHub release
uses: actions/github-script@v7 uses: actions/github-script@v7
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
script: | script: |
const changelog = `${{ steps.changelog.outputs.content }}`; const changelog = `${{ steps.changelog.outputs.content }}`;
const release = await github.rest.repos.createRelease({ const release = await github.rest.repos.createRelease({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
tag_name: `v${{ steps.get_version.outputs.version }}`, tag_name: `v${{ steps.get_version.outputs.version }}`,
name: `v${{ steps.get_version.outputs.version }}`, name: `v${{ steps.get_version.outputs.version }}`,
body: changelog, body: changelog,
}) })
console.log(`Created release ${release.data.html_url}`) console.log(`Created release ${release.data.html_url}`)
- name: Upload package to GitHub release - name: Upload package to GitHub release
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: package name: package
path: . path: |
env: .
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} !.git
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Trigger Docker build workflow - name: Trigger Docker build workflow
uses: actions/github-script@v7 uses: actions/github-script@v7
with: with:
script: | script: |
github.rest.actions.createWorkflowDispatch({ github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
workflow_id: 'docker-build.yaml', workflow_id: 'docker-build.yaml',
ref: 'v${{ steps.get_version.outputs.version }}', ref: 'v${{ steps.get_version.outputs.version }}',
}) })