Skip to content

Commit 7c5b0c4

Browse files
[release] split Main workflow to CI and Release (#64)
1 parent c403224 commit 7c5b0c4

4 files changed

Lines changed: 152 additions & 107 deletions

File tree

Lines changed: 1 addition & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
name: Main
1+
name: CI
22
defaults:
33
run:
44
shell: bash
55

6-
permissions:
7-
contents: write
8-
pull-requests: write
9-
106
on:
117
push:
128
branches: [ "main" ]
@@ -167,104 +163,3 @@ jobs:
167163
168164
- name: End-to-End Tests
169165
run: ./scripts/tests/run_end2end.sh
170-
171-
release:
172-
name: Release
173-
runs-on: ubuntu-latest
174-
if: github.ref == 'refs/heads/main' && contains(github.event.head_commit.message, '[release]')
175-
needs: [build, end2end-tests]
176-
steps:
177-
- name: Check out Git repository
178-
uses: actions/checkout@v4
179-
with:
180-
fetch-depth: 0
181-
182-
- uses: actions/download-artifact@v2
183-
with:
184-
name: wasm-file
185-
186-
- name: Bump version and create new tag
187-
id: bump_version
188-
run: |
189-
set -e
190-
echo "Extract the latest tag version"
191-
LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
192-
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
193-
194-
echo "latest tag version: $LATEST_TAG"
195-
LATEST_COMMIT_MSG=$(git log -1 --pretty=%B)
196-
197-
BUMP_TYPE="patch" # Initialize the default version bump type to patch
198-
if [[ $LATEST_COMMIT_MSG == *"[major]"* ]]; then
199-
BUMP_TYPE="major"
200-
elif [[ $LATEST_COMMIT_MSG == *"[minor]"* ]]; then
201-
BUMP_TYPE="minor"
202-
fi
203-
204-
# Bump the version based on the type
205-
case $BUMP_TYPE in
206-
"major")
207-
NEW_TAG=$(echo $LATEST_TAG | awk -F. '{OFS="."; $1="v" substr($1,2)+1; $2="0"; $3="0"; print}')
208-
;;
209-
"minor")
210-
NEW_TAG=$(echo $LATEST_TAG | awk -F. '{OFS="."; $2=$2+1; $3="0"; print}')
211-
;;
212-
"patch")
213-
NEW_TAG=$(echo $LATEST_TAG | awk -F. '{OFS="."; $3=$3+1; print}')
214-
;;
215-
esac
216-
217-
echo "New tag version: $NEW_TAG"
218-
echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV
219-
220-
# Create a new tag
221-
git tag $NEW_TAG
222-
git push origin $NEW_TAG
223-
224-
- name: Calculate sha256
225-
run: |
226-
SHA256_HASH=$(sha256sum plugin.wasm | awk '{ print $1 }')
227-
echo "SHA256_HASH=$SHA256_HASH" >> $GITHUB_ENV
228-
echo "The calculated sha256 is $SHA256_HASH"
229-
230-
- name: Create release draft
231-
env:
232-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
233-
run: |
234-
LATEST_TAG=${{ env.LATEST_TAG }}
235-
NEW_TAG=${{ env.NEW_TAG }}
236-
SHA256_HASH=${{ env.SHA256_HASH }}
237-
238-
PREVIOUS_TAG=$(git rev-list -n 1 $LATEST_TAG)
239-
CHANGE_LOG=$(git --no-pager log $PREVIOUS_TAG..HEAD --pretty=format:'%h - %an, %ar : %s')
240-
241-
# Define the release notes template
242-
RELEASE_NOTES=$(cat <<EOF
243-
## Release version $NEW_TAG
244-
Release sha256 is \`$SHA256_HASH\`
245-
246-
## Configuration example
247-
\`\`\`yaml
248-
version: '2'
249-
plugins:
250-
- name: csharp
251-
wasm:
252-
url: https://github.com/DaredevilOSS/sqlc-gen-csharp/releases/download/$NEW_TAG/sqlc-gen-csharp.wasm
253-
sha256: $SHA256_HASH
254-
\`\`\`
255-
## Changelog
256-
$CHANGE_LOG
257-
258-
## Contributors
259-
* @doron050 @SockworkOrange
260-
EOF
261-
)
262-
263-
# change file name to convention
264-
mv plugin.wasm sqlc-gen-csharp.wasm
265-
266-
# Create a draft release
267-
gh release create $NEW_TAG sqlc-gen-csharp.wasm \
268-
--draft \
269-
--title "$NEW_TAG" \
270-
--notes "$RELEASE_NOTES"

.github/workflows/release.yml

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
name: Release
2+
defaults:
3+
run:
4+
shell: bash
5+
6+
permissions:
7+
contents: write
8+
pull-requests: write
9+
10+
on:
11+
workflow_run:
12+
workflows: [CI]
13+
types: [completed]
14+
branches: [main]
15+
16+
jobs:
17+
check_commit:
18+
name: Check Commit
19+
runs-on: ubuntu-latest
20+
outputs:
21+
IS_RELEASE: ${{ steps.check_msg.outputs.IS_RELEASE }}
22+
LATEST_COMMIT_MSG: ${{ steps.check_msg.outputs.LATEST_COMMIT_MSG }}
23+
steps:
24+
- name: Check out Git repository
25+
uses: actions/checkout@v4
26+
27+
- name: Check latest commit message
28+
id: check_msg
29+
run: |
30+
LATEST_COMMIT_MSG=$(git log -1 --pretty=%B | cat)
31+
32+
if [[ ${LATEST_COMMIT_MSG} == *"[release]"* ]]; then
33+
echo "release message found - continuing with the release"
34+
IS_RELEASE="true"
35+
else
36+
echo "release message found - skipping..."
37+
IS_RELEASE="false"
38+
fi
39+
40+
echo "IS_RELEASE=${IS_RELEASE}" >> $GITHUB_OUTPUT
41+
echo "LATEST_COMMIT_MSG=\"${LATEST_COMMIT_MSG}\"" >> $GITHUB_OUTPUT
42+
43+
release:
44+
name: Release
45+
needs: [check_commit]
46+
runs-on: ubuntu-latest
47+
if: ${{ needs.check_commit.outputs.IS_RELEASE == 'true' }}
48+
env:
49+
IS_RELEASE: ${{ needs.check_commit.outputs.IS_RELEASE }}
50+
LATEST_COMMIT_MSG: ${{ needs.check_commit.outputs.LATEST_COMMIT_MSG }}
51+
steps:
52+
- name: Check out Git repository
53+
uses: actions/checkout@v4
54+
with:
55+
fetch-depth: 0
56+
57+
- name: Download artifact
58+
id: download-artifact
59+
uses: dawidd6/action-download-artifact@v6
60+
with:
61+
github_token: ${{secrets.GITHUB_TOKEN}}
62+
workflow: ci.yml
63+
workflow_conclusion: success
64+
name: wasm-file
65+
66+
- name: Bump version
67+
run: |
68+
set -e
69+
70+
echo "Extract the latest tag version"
71+
LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
72+
73+
BUMP_TYPE="patch" # Initialize the default version bump type to patch
74+
if [[ "${LATEST_COMMIT_MSG}" == *"[major]"* ]]; then
75+
BUMP_TYPE="major"
76+
elif [[ "${LATEST_COMMIT_MSG}" == *"[minor]"* ]]; then
77+
BUMP_TYPE="minor"
78+
fi
79+
80+
case ${BUMP_TYPE} in
81+
"major")
82+
NEW_TAG=$(echo "${LATEST_TAG}" | awk -F. '{OFS="."; $1="v" substr($1,2)+1; $2="0"; $3="0"; print}')
83+
;;
84+
"minor")
85+
NEW_TAG=$(echo "${LATEST_TAG}" | awk -F. '{OFS="."; $2=$2+1; $3="0"; print}')
86+
;;
87+
"patch")
88+
NEW_TAG=$(echo "${LATEST_TAG}" | awk -F. '{OFS="."; $3=$3+1; print}')
89+
;;
90+
esac
91+
92+
echo "LATEST_TAG=${LATEST_TAG}" >> $GITHUB_ENV
93+
echo "NEW_TAG=${NEW_TAG}" >> $GITHUB_ENV
94+
95+
- name: Push tag
96+
run: |
97+
NEW_TAG=${{ env.NEW_TAG }}
98+
99+
git tag ${NEW_TAG}
100+
git push origin ${NEW_TAG}
101+
102+
- name: Calculate sha256
103+
run: |
104+
SHA256_HASH=$(sha256sum plugin.wasm | awk '{ print $1 }')
105+
echo "SHA256_HASH=${SHA256_HASH}" >> $GITHUB_ENV
106+
echo "The calculated sha256 is $SHA256_HASH"
107+
108+
- name: Create release draft
109+
env:
110+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
111+
run: |
112+
set -e
113+
114+
LATEST_TAG=${{ env.LATEST_TAG }}
115+
NEW_TAG=${{ env.NEW_TAG }}
116+
SHA256_HASH=${{ env.SHA256_HASH }}
117+
118+
CHANGE_LOG=$(git --no-pager log ${LATEST_TAG}..HEAD --pretty=format:'%h - %an, %ar : %s')
119+
120+
# Define the release notes template
121+
RELEASE_NOTES=$(cat <<EOF
122+
## Release version ${NEW_TAG}
123+
Release sha256 is \`${SHA256_HASH}\`
124+
125+
## Configuration example
126+
\`\`\`yaml
127+
version: '2'
128+
plugins:
129+
- name: csharp
130+
wasm:
131+
url: https://github.com/DaredevilOSS/sqlc-gen-csharp/releases/download/${NEW_TAG}/sqlc-gen-csharp.wasm
132+
sha256: ${SHA256_HASH}
133+
\`\`\`
134+
## Changelog
135+
${CHANGE_LOG}
136+
137+
## Contributors
138+
* @SockworkOrange
139+
EOF
140+
)
141+
142+
# change file name to convention
143+
mv plugin.wasm sqlc-gen-csharp.wasm
144+
145+
# Create a draft release
146+
gh release create ${NEW_TAG} sqlc-gen-csharp.wasm \
147+
--draft \
148+
--title "${NEW_TAG}" \
149+
--notes "${RELEASE_NOTES}"

Drivers/DbDriver.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public string GetColumnReader(Column column, int ordinal)
5656
}
5757
throw new NotSupportedException($"Unsupported column type: {column.Type.Name}");
5858
}
59+
5960
public abstract string TransformQueryText(Query query);
6061

6162
public abstract (string, string) EstablishConnection();

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ sql:
4747
driver: MySqlConnector
4848
```
4949
50-
## [Generated Code Examples](docs/Examples.md)
50+
### [Generated Code Examples](docs/Examples.md)
5151
5252
# Contributing
5353
## Local plugin development

0 commit comments

Comments
 (0)