Skip to content

Commit 0a0ee57

Browse files
authored
Create publish.yml
1 parent 59e5ec9 commit 0a0ee57

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

.github/workflows/publish.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: publish
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
version-change:
6+
description: Version part
7+
required: true
8+
type: choice
9+
options:
10+
- PATCH
11+
- MINOR
12+
- MAJOR
13+
14+
permissions:
15+
contents: write
16+
17+
jobs:
18+
publish:
19+
runs-on: ubuntu-latest
20+
env:
21+
GH_TOKEN: ${{ github.token }}
22+
VERSION_CHANGE: ${{ github.event.inputs.version-change }}
23+
RELEASE_CANDIDATE: ${{ github.event.inputs.release-candidate }}
24+
VERSION_FILE: src/Version.php
25+
CHANGELOG_FILE: CHANGELOG.md
26+
steps:
27+
- uses: actions/checkout@v3
28+
- run: |
29+
CHANGELOG=$(cat $CHANGELOG_FILE | sed -e '/^## */,$d');
30+
MAJOR=$(cat $VERSION_FILE | grep "const MAJOR" | sed -e 's/^.*\ \(=\ \)*\(\"\)*\([0-9]*\)\(\"\)*.*/\3/g');
31+
MINOR=$(cat $VERSION_FILE | grep "const MINOR" | sed -e 's/^.*\ \(=\ \)*\(\"\)*\([0-9]*\)\(\"\)*.*/\3/g');
32+
PATCH=$(cat $VERSION_FILE | grep "const PATCH" | sed -e 's/^.*\ \(=\ \)*\(\"\)*\([0-9]*\)\(\"\)*.*/\3/g');
33+
LAST_TAG="v$MAJOR.$MINOR.$PATCH";
34+
if [ "$VERSION_CHANGE" = "MAJOR" ]
35+
then
36+
MAJOR=$((MAJOR+1));
37+
MINOR=0;
38+
PATCH=0;
39+
fi;
40+
if [ "$VERSION_CHANGE" = "MINOR" ]
41+
then
42+
MINOR=$((MINOR+1));
43+
PATCH=0;
44+
fi;
45+
if [ "$VERSION_CHANGE" = "PATCH" ]
46+
then
47+
PATCH=$((PATCH+1));
48+
fi;
49+
sed -e 's/const MAJOR = "\([0-9]*\)"/const MAJOR = "'$MAJOR'"/g' -i $VERSION_FILE;
50+
sed -e 's/const MINOR = "\([0-9]*\)"/const MINOR = "'$MINOR'"/g' -i $VERSION_FILE;
51+
sed -e 's/const PATCH = "\([0-9]*\)"/const PATCH = "'$PATCH'"/g' -i $VERSION_FILE;
52+
git add $VERSION_FILE;
53+
echo "## $MAJOR.$MINOR.$PATCH" >> $CHANGELOG_FILE.tmp
54+
cat $CHANGELOG_FILE >> $CHANGELOG_FILE.tmp
55+
mv $CHANGELOG_FILE.tmp $CHANGELOG_FILE;
56+
git add $CHANGELOG_FILE;
57+
git config --global user.email "robot@umbrella";
58+
git config --global user.name "robot";
59+
git commit -m "Release v$MAJOR.$MINOR.$PATCH";
60+
TAG="v$MAJOR.$MINOR.$PATCH";
61+
git tag $TAG
62+
git push --tags && git push
63+
CHANGELOG="$CHANGELOG
64+
65+
Full Changelog: [$LAST_TAG...$TAG](https://github.com/${{ github.repository }}/compare/$LAST_TAG...$TAG)"
66+
67+
gh release create $TAG -t "$TAG" --notes "$CHANGELOG"

0 commit comments

Comments
 (0)