ci(release): update workflow (#50) #60
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |