ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ˆ˜๋™์œผ๋กœ ๋ฆด๋ฆฌ์Šคํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” GitHub Actions๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ .github/workflows ์•„๋ž˜์— release.yml์ด๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋‹ค์Œ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

    name: Release Obsidian plugin
     
    on:
      push:
        tags:
          - "*"
     
    jobs:
      build:
        runs-on: ubuntu-latest
        permissions:
          contents: write
        steps:
          - uses: actions/checkout@v3
     
          - name: Use Node.js
            uses: actions/setup-node@v3
            with:
              node-version: "18.x"
     
          - name: Build plugin
            run: |
              npm install
              npm run build
     
          - name: Create release
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            run: |
              tag="${GITHUB_REF#refs/tags/}"
     
              gh release create "$tag" \
                --title="$tag" \
                --draft \
                main.js manifest.json styles.css
  2. ํ„ฐ๋ฏธ๋„์—์„œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.

    git add .github/workflows/release.yml
    git commit -m "Add release workflow"
    git push origin main
  3. GitHub์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ Settings ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์™ผ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”์—์„œ Actions ๋ฉ”๋‰ด๋ฅผ ํ™•์žฅํ•˜๊ณ  General ๋ฉ”๋‰ด๋กœ ์ด๋™ํ•œ ๋‹ค์Œ Workflow permissions ์„น์…˜์œผ๋กœ ์Šคํฌ๋กคํ•˜์—ฌ Read and write permissions ์˜ต์…˜์„ ์„ ํƒํ•˜๊ณ  ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  4. manifest.json ํŒŒ์ผ์˜ ๋ฒ„์ „๊ณผ ์ผ์น˜ํ•˜๋Š” ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    git tag -a 1.0.1 -m "1.0.1"
    git push origin 1.0.1
    • -a๋Š” ์ฃผ์„ ํƒœ๊ทธ(annotated tag)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • -m์€ ๋ฆด๋ฆฌ์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. Obsidian ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฒฝ์šฐ ๋ฒ„์ „๊ณผ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  5. GitHub์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ Actions ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์•„์ง ์‹คํ–‰ ์ค‘์ด๊ฑฐ๋‚˜ ์ด๋ฏธ ์™„๋ฃŒ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  6. ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ธฐ๋ณธ ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ€ ์˜ค๋ฅธ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”์—์„œ Releases๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ์šฐ๋Š” ์ดˆ์•ˆ GitHub ๋ฆด๋ฆฌ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•„์š”ํ•œ ์ž์‚ฐ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฒจ๋ถ€ ํŒŒ์ผ๋กœ ์—…๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.

  7. ๋ฆด๋ฆฌ์Šค ์ด๋ฆ„ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” Edit(์—ฐํ•„ ์•„์ด์ฝ˜)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  8. ์ด ๋ฆด๋ฆฌ์Šค์—์„œ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ Publish release๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ƒˆ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ GitHub ๋ฆด๋ฆฌ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค์ธ ๊ฒฝ์šฐ, ์ด์ œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ์ถœํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฏธ ๊ฒŒ์‹œ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์—…๋ฐ์ดํŠธ์ธ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž๋Š” ์ด์ œ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.