Skip to content

ci(release): update workflow (#50) #60

ci(release): update workflow (#50)

ci(release): update workflow (#50) #60

Workflow file for this run

name: release
on:
push:
tags: ["v[0-9].[0-9]+.[0-9]+"]
permissions:
contents: write
pull-requests: write
jobs:
build_foxe:
name: build_foxe
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "18"
- name: Install dependencies
run: npm install
- name: Package
run: npm run package
- name: Extract version
id: extract_version
run: |
version=$(node -p "require('./package.json').version")
echo "version=$version" >> $GITHUB_ENV
- name: Update changelog file
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git fetch origin main
git checkout -b update-changelog origin/main
yarn commitizen init cz-conventional-changelog --save-dev --force --save-exact
HEADER=$(awk '/^---/{exit} {print}' CHANGELOG.md)
yarn conventional-changelog -p angular -o TEMP.md -r 0
echo "$HEADER" > CHANGELOG.md
echo "" >> CHANGELOG.md
cat TEMP.md >> CHANGELOG.md
rm TEMP.md
echo "Updated CHANGELOG.md:"
cat CHANGELOG.md
git diff || echo "No changes detected"
- name: Fetch initial commit history
id: fetch_initial_commit_history
run: |
INITIAL_COMMIT_HISTORY=$(cat initial_commit_history.md)
echo "INITIAL_COMMIT_HISTORY<<EOF" >> $GITHUB_ENV
echo "$INITIAL_COMMIT_HISTORY" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Insert initial commit history
run: |
TARGET_TAG="0.0.1"
FILE="CHANGELOG.md"
INITIAL_COMMIT_HISTORY="${{ env.INITIAL_COMMIT_HISTORY }}"
if grep -q "^## $TARGET_TAG " "$FILE"; then
sed -i "/^## $TARGET_TAG /,/^## /{//!d}" "$FILE"
awk -v content="$INITIAL_COMMIT_HISTORY" -v tag="## $TARGET_TAG " '
BEGIN { found=0 }
$0 ~ tag { print; print content; found=1; next }
{ print }
END { if (!found) print "Tag header not found!" }
' "$FILE" > TEMP.md && mv TEMP.md "$FILE"
echo "Initial commit history inserted under the ## $TARGET_TAG header in $FILE."
else
echo "Tag ## $TARGET_TAG not found in $FILE."
fi
- name: Commit changelog changes
run: |
git add CHANGELOG.md
git commit -m "chore: update changelog for ${{ github.ref }}"
git push -u origin update-changelog --force
- name: Create a Pull Request to update the changelog file
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.PAT_TOKEN }}
commit-message: "docs: update CHANGELOG for release"
branch: "update-changelog"
title: "Update CHANGELOG for new release"
body: "This pull request updates the CHANGELOG file with details of the new release."
base: "main"
delete-branch: true
- name: Create GitHub Release
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ASAM OSI Converter ${{ env.version }}
draft: false
prerelease: false
- name: Upload Release Asset
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: lichtblick.asam-osi-converter-${{ env.version }}.foxe
asset_name: lichtblick.asam-osi-converter-${{ env.version }}.foxe
asset_content_type: application/octet-stream
- name: Upload Changelog
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./CHANGELOG.md
asset_name: CHANGELOG.md
asset_content_type: text/markdown