๋ฒ์ ๋์ ์งํํ๋ค๋ฉด , ๋ฒ์ ๋ง ์ฐ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ ๋ฒ์ ์ ์ด๋ค ์์
์ด ์งํ๋์๋์ง ํจ์น๋
ธํธ๋ฅผ ์์ฑํด์ ๋จ๊ฒจ๋์ด์ผ ํ๋ค. ๋จ์ํ ๋ฒ์ ๋ง ์ฐ์ผ๋ฉด ์ด๋ค ์์
์ ์งํํ๋์ง , ์ด๋ค ๋ณ๊ฒฝ์ ์ด ์๋์ง ์ ์ ์์ผ๋ฏ๋ก ๋ฒ์ ์ ์ฐ์ ํ , ์ด๋ค ๋ณ๊ฒฝ์ฌํญ์ด ์๋์ง๋ฅผ ๋จ๊ฒจ๋์ด์ผ ๋ค์์ ๊ทธ ๋ฒ์ ์ ๋ํ ๊ฒ์ ํ์ธํ ๋ ์ ๋๋ก ํ์ธํ ์ ์๋ค. ํจ์น๋
ธํธ๋ฅผ ๋จ๊ธฐ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์์ง๋ง , ์์ฆ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ Notion ์ ์ด์ฉํ๋ ค๊ณ ํ๋ค. Notion ์ Notion API ์ ๊ณตํ๊ณ ์๊ณ , ์ด๋ฅผ ์ด์ฉํด์ PR์ด merge ๋์์ ๋ ๋ฒ์ ์ ๋ฑ๋กํ๊ณ ํจ์น๋
ธํธ๋ ์๋ํํ๋ ค๊ณ ํ๋ค.
Notion API๋ notion์ด ์ ๊ณตํด์ฃผ๋ api๋ก , ๊ณต์ ์ฌ์ดํธ ์์ ํ์ธํ ์ ์๋ค. notion์ด ์ ๊ณตํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ , ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๋ค. ์ฌ๊ธฐ์๋ github์ ์ฐ๊ฒฐํด์ workflow ์๋ํ๋ฅผ ์ด์ฉํ๋ ค๊ณ ์ฌ์ฉํ๋ค. ( ์ถํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฅ๋ ์ฌ์ฉํด๋ณด๊ณ ์ถ๋ค )
์ด์ ํ์ฌ์์ ํตํฉ์ ์ผ๋ก ๊ฐ์ ๋ฒ์ ๋์ ์ฌ์ฉํ๋๋ฐ , ๋ ธ์ ์ ์๋ํ๋ก ๋ชจ๋ ์ฐ๊ฒฐ๋์ด ์์ด์ ํน์ ์๋น์ค๊ฐ ๋ฐฐํฌ๋ ๋ ์ฝ๊ฒ ํ์ธํ ์ ์๋ค๋ ์ฅ์ ์ด ์์๋ค. ์ด๋ฒ ๋ฐฐํฌ์ ์ด๋ค ์์ ์ด ์งํ๋์๋์ง , ์ด๋ค ๋ฒ๊ทธํฝ์ค๊ฐ ์๋์ง ๋ฑ๋ฑ์ ํ๋ฒ์ ํ์ธํ ์ ์๊ณ ์ด์ ๋ฒ์ ์ ๋ํ ๊ด๋ฆฌ ๋ํ ์ ์งํ๋์ด์ ์ข์ ๊ฒฝํ์ด์๋ค. ๊ทธ ๊ฒฝํ์ ๋ ์ฌ๋ฆฌ๋ฉด์ ์ด๋ฒ์ ๊ฐ์ธ ๋ ธ์ ์ ์๋ํ๋ฅผ ์งํํ๋ค.
๊ฐ์ฅ ๋จผ์ notion api key๋ฅผ ๋ฐ๊ธํด์ผ ํ๋ค. key๋ ์ฌ์ดํธ ์์ ๋ฐ๊ธํ ์ ์๋ค. ๊ฐ์ฅ ๋จผ์ ํ์ด์ง์ ๋ก๊ทธ์ธ ํ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋ํ๋๋ค.

์ฌ๊ธฐ์ ์ API ํตํฉ ๋ง๋ค๊ธฐ ๋ฅผ ๋๋ฅด๊ฒ ๋๋ฉด ์ํฌ์คํ์ด์ค ์ ํ ํ ์ด๋ฆ ์ค์ ํ๊ณ ๋ฐ๊ธ ๊ฐ๋ฅํ๋ค.

ํจ์น๋
ธํธ๋ก ์ฌ์ฉํ ํ์ด์ง๋ฅผ ์์ฑํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ผ์ธ์ ํตํด ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋ค.

๊ทธ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ด์ง๋ก ์ด๋ํ๋ฉด ์ฃผ์๊ฐ https://www.notion.so/username/name1?v=name2 ์ ํ์์ผ๋ก ์์ฑ๋๊ฒ ๋๋๋ฐ, ์ฌ๊ธฐ์ name1 ์ด database id , name2 ๊ฐ view id ๋ก ์ ํด์ง๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ database id ์ธname1 ์ ์ฌ์ฉํ ์์ ์ด๋ค ( ์ค์ )
๋ํ ๋ฐ์ดํฐ์ ํ์
๋ ์ ์ธํด์ฃผ์ด์ผ ํ๋๋ฐ , ๊ธฐ๋ณธ์ ์ธ ์ ๋ณด๋ก ๋ฐฐํฌ ์ํ , ๋ฐฐํฌ ์ผ์ , ๊ฐ์ ๋ฒ์ ์ 3๊ฐ์ง ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋ค. ๋ง์ฝ ์ด ํ์
์ด ์ผ์นํ์ง ์์ผ๋ฉด ์ ๋๋ก ์ถ๊ฐ๋์ง ์์ ์ ์๋ค. ๊ฐ๊ฐ ์์ฑ ์ถ๊ฐ์์ ์ถ๊ฐํ ์ ์๋ค.
๋ฐฐํฌ ์ํ : ์์ฑ ์ถ๊ฐ์์ ์ํ ํด๋ฆญ ํ , ์์ฑ์ ์ด๋ฆ์ ๋ณ๊ฒฝํด์ค๋ค.
๋ฐฐํฌ ์ผ์ : ์์ฑ ์ถ๊ฐ์์ ๋ ์ง ํด๋ฆญ ํ , ์์ฑ์ ์ด๋ฆ์ ๋ณ๊ฒฝํด์ค๋ค.
๊ฐ์ ๋ฒ์ : ๊ธฐ๋ณธ ์์ฑ ์ค ์ ๋ชฉ์ ์ด๋ฆ์ ๋ณ๊ฒฝํด์ค๋ค.
์ด์ github์ notion์ ์ฐ๋ํ ์ฐจ๋ก๋ค. ์ข์ธก ์๋จ์ ์ค์ ๊ณผ ๋ฉค๋ฒ ๋ด๋ถ์ ๋ด ์ฐ๊ฒฐ ์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด

์ ํ์์ผ๋ก ๋์ด์๋๋ฐ , ์ฌ๊ธฐ์ ์ ์ฌ์ง์ฒ๋ผ github ๋ฅผ ์ฐพ์์ ์ฐ๋ํด์ฃผ๋ฉด ๋๋ค.
์ฐ๋ ํ์ Make sure the relevant pages and databases are shared with your integration ์๋ฌ๊ฐ ๋ฑ์ฅํ๋ค. ์ฐพ์๋ณด๋ ๋ณธ์ธ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ๋์ด ์์ง ์์์ ๋ฐ์ํ๋ ํ์์ด๋ผ๊ณ ํ๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ํ์ด์ง์์ ๋ณธ์ธ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค. ์ฐ์ธก ์ต์๋จ ยทยทยท ๋ฒํผ์ ํด๋ฆญ ํ , ์ฐ๊ฒฐ ํญ๋ชฉ ์์ ๋ณธ์ธ์ ์ฐพ์์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
์๊น ๋ฐ๊ธ๋ฐ์ notion api key ๋ฅผ github secrets์ ์ถ๊ฐํด์ผ ํ๋ค. api key ๊ฐ์ด ์ค์ํ๊ณ , ํ์ทจ๋์์ ๋ ์ํ์ด ์๋ ๋ณ์๋ค์ secrets๋ก ๋ฑ๋กํด์ ์จ๊ฒจ์ผ ํ๋ค. github๋ workflow์์ ์ฌ์ฉ๋๋ key ๋ค์ environment variables ( ํ๊ฒฝ๋ณ์ ) ๋๋ secrets ๋ก ์ ์ฅํ ์ ์๋๋ก ์ง์ํ๊ณ ์๋ค.
github repo ๋ก ๋ค์ด๊ฐ์ settings > ์ข์ธก Secrets and variables > actions ์ ๋ค์ด๊ฐ์ new repository secrets ๋ฅผ ํด๋ฆญํ๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋ฑ์ฅํ๋ค.


์ดํ ์ฌ์ฉํ ๋ณ์๋ช
์ Name ์ , ๋ฐ๊ธ๋ฐ์ api key ๋ฅผ Secret ์ ์
๋ ฅ ํ ์ ์ฅํ๋ฉด

์์ฒ๋ผ Secrets๊ฐ ์ถ๊ฐ๋์๋ค !
์ด์ ๊ธ์ฒ๋ผ actions ํด๋ ์์ notion_versioning ํด๋๋ฅผ ์ถ๊ฐํ๊ณ action.yml ํ์ผ์ ์๋์ฒ๋ผ ์ถ๊ฐํ๋ค.
yaml
name: notion_versioning
inputs:
version:
required: true
api_key:
required: true
runs:
using: composite
steps:
- id: get-current-date
shell: bash
run: |
sudo timedatectl set-timezone Asia/Seoul
echo "date=$(date +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_OUTPUT
- name: Use Notion API
shell: bash
run: |
curl -X POST 'https://api.notion.com/v1/pages' \
-H 'Authorization: Bearer ${{ inputs.api_key }}' \
-H "Content-Type: application/json" \
-H "Notion-Version: 2022-06-28" \
--data '{
"parent": {
"database_id": "{databaseId}"
},
"properties": {
"๋ฐฐํฌ ์ํ": {
"status": {
"name": "์๋ฃ"
}
},
"๋ฐฐํฌ ์ผ์": {
"date": {
"start": "${{ steps.get-current-date.outputs.date }}",
"time_zone": "Asia/Seoul"
}
},
"๊ฐ์ ๋ฒ์ ": {
"title": [
{
"type": "text",
"text": {
"content": "${{ inputs.version }}"
}
}
]
}
}
}'
inputs : version ์ ํจ์น๋
ธํธ์ ์์ฑ๋ ์๋ก์ด ๋ฒ์ ์ , api_keys ๋ ์ ์ฅํ api key ๋ค.get-current-date : ํจ์น๋
ธํธ์ ์๊ฐ ์ ์ฅ์ ์ํด์ ํ์ฌ ์๊ฐ์ ๊ณ์ฐํด์ฃผ๋ ๋จ๊ณ์ด๋ค. ์ถํ์ ํจ์น๋
ธํธ์ ์์ฑ๋ ๋ ์๊ฐ์ ํจ๊ป ์
๋ ฅํด์ฃผ๊ธฐ ์ํด์ ์ถ๊ฐํ๋ค.Use Notion API : notion api ๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ๊ฐํ๋ ๋จ๊ณ์ด๋ค. {databaseId} ์ ๊ฐ์ธ database id ๋ฅผ ์
๋ ฅํด์ฃผ๋ฉด ๋๋ค. ์ฝ๊ฒ ์๊ฐํ๋ฉด ํด๋น url๋ก postํ๋ ๊ณผ์ ์ธ๋ฐ , ํ ํฐ๊ณผ ํ์
์
๋ ฅ ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ฃผ๋ ๊ณผ์ ์ด๋ค. ๊ณต์ ๋ช
์ธ์ ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ฌ๋ฌ rest api ํ์์ผ๋ก crud ์คํ์ด ๊ฐ๋ฅํ๋ค.๊ทธ ํ , ์ด์ auto_versioning.yml ํ์ผ ์๋์ ๋ค์์ ์ถ๊ฐํด์ค๋ค.
yaml
- id: notion-versioning
uses: ./.github/actions/notion_versioning
with:
version: ${{ steps.versioning.outputs.new_version }}
api_key: ${{ secrets.NOTIONAPIKEY }}
notion-versioning : ์๋ก์ด ๋ฒ์ ๊ณผ api key ๋ฅผ ๋ณ์๋ก ์ ๋ฌํด์ notion versioning์ ์งํํฉ๋๋ค.์ดํ pr์ ์์ฑ ํ , merge ํ๊ฒ ๋๋ฉด

์์ ๊ฐ์ด ์ฑ๊ณตํ๊ฒ ๋๊ณ , ๋
ธ์
ํจ์น๋
ธํธ๋ฅผ ํ์ธํ๋ฉด

์๋ก์ด ๋ฒ์ ์ด ์๋์ผ๋ก ์ฐํ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ฌ์ค merge ํ ๋๋ง๋ค ๊ผญ ํ๋์ฉ ์ด์๊ฐ ์๊ฒจ์ ... ์๊ฐ๋ณด๋ค ํ๋์ฉ ํ๋ค๋ณด๋ git flow๊ฐ ๊ผฌ์ด๊ธด ํ์ต๋๋ค. notion database ์์๋ ์ฝ๊ฐ์ฉ ๋ค๋ฅธ ๋ถ๋ถ์ด ์์ด์ ์๊ฐ๋ณด๋ค ์ด๋ ค์ด ์์
์ด์์ง๋ง , ํ๋ฒ ์๋ํ๋ฅผ ์งํํ๋ฉด ๋ค์๋ถํฐ๋ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋์ด์ ํธ๋ฆฌํ๋ค๋ ์๊ฐ์
๋๋ค. ์ถ๊ฐ๋ก ํจ์น๋
ธํธ์ ํ์คํฌ๋ ์ฐ๊ฒฐํ๊ฒ ๋๋ค๋ฉด ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋ง github actions๋ ์ด๋ฒ์ด ๋ง์ง๋ง์ผ ๊ฒ ๊ฐ๊ณ , ๋ค์์๋ notion database๊ฐ ์ฌ๋ฏธ์์ด ๋ณด์ฌ์ ๊ทธ์ชฝ๋ ๊ณต๋ถํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
์ github actions๊ฐ ์๋ repo๋ ์ฌ๊ธฐ ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.