Electron μΌλ‘ μμ±λ μμ© νλ‘κ·Έλ¨μ Windows, Macos μ€ννμΌλ‘ λΉλνκ³ , GitHub Release μμ λ€μ΄λ‘λ κ°λ₯ν μνλ‘ μ€λΉνλ κ³Όμ μ μλνν μν¬νλ‘μ°λ₯Ό νκ³ ν©λλ€.
GitHub Actions
GitHub μμ μ 곡νλ μν¬ νλ‘μ° μλν λꡬμ λλ€.
νμ©ν΄μ μ¬λ¬κ°μ§ μλνλ₯Ό μλν μ μμ΅λλ€.
Build
, Release
λ κ°μ μ‘μ
μΌλ‘ ꡬμ±νμ΅λλ€.
Release
μ‘μ
μ Build
μ‘μ
μ μμ‘΄νκ³ μμ΅λλ€.
λͺ¨λ λ¨κ³κ° λ¬Έμ μμ΄ μ€νλλ©΄, main λΈλμΉμ μλ‘μ΄ νκ·Έκ° μμ±λκ³ , GitHub Release μ μλ‘ μμ±λ νκ·Έμ ν΄λΉνλ Electron μμ© νλ‘κ·Έλ¨μ΄ λ€μ΄λ‘λκ° μ€λΉλ μνλ‘ λΉκ³΅κ°λ‘ μμ±λ©λλ€.
κ°λ΅ν νλ¦μ μλμ κ°μ΅λλ€.
- main λΈλμΉμ 컀λ°μ΄ μ μ‘λ©λλ€.
- Build μ‘μ
μ΄ μ€νλ©λλ€.
- Ubuntu μ Node.js νκ²½μ μ€λΉν©λλ€.
- npm build μ€ν¬λ¦½νΈλ₯Ό μ€νν©λλ€.
- git tagλ₯Ό μμ±ν©λλ€.
- GitHub Release λ₯Ό μμ±ν©λλ€.
upload-assets
μ΄λ²€νΈλ₯Ό μ€νν©λλ€.
- Release μ‘μ μ΄ μ€νλ©λλ€. Macos μ Windows μμ μλ λ¨κ³κ° κ°κ° μ€νλ©λλ€.
- Node.js νκ²½μ μ€λΉν©λλ€.
- npm pack μ€ν¬λ¦½νΈλ₯Ό μ€νν©λλ€.
- GitHub Release μ μμ©νλ‘κ·Έλ¨μ μ λ‘λν©λλ€.
β Job: Build
main λΈλμΉμ 컀λ°μ΄ νΈμ¬λλ©΄ μ€νλλ GitHub Action μ λλ€. .github/workflows/build.yml 보기
build Job μ Checkout
, Install Node.js, Npm
, Install Dependencies
, Build
, package-version
, package-version-to-git-tag
, Release Drafter
, Check Upload Url
, Repository Dispatch
λ¨κ³λ‘ ꡬμ±λμ΄ μμ΅λλ€.
Ubuntu μμ μ€νν©λλ€.
π step: Checkout
μ격 μ μ₯μμμ μ½λλ₯Ό λ΄λ €λ°μ΅λλ€.
π step: Install Node.js, Npm
Node.js νκ²½μ ꡬμ±ν©λλ€.
v12 Node.js λ₯Ό μ¬μ©ν©λλ€.
π step: Install Dependencies
package.json μ μμ±λ ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.
π step: Build
npm build μ€ν¬λ¦½νΈλ₯Ό μ€νν©λλ€.
π step: package-version
package.json νμΌμ μμ±λ λ²μ κ°μ PACKAGE_VERION νκ²½λ³μλ‘ μ€μ ν©λλ€.
π step: package-version-to-git-tag
pkgdeps/git-tag-action
μ‘μ
μΌλ‘ git tag λ₯Ό μμ±ν©λλ€.
package.json νμΌμ λ²μ κ³Ό git tag λ₯Ό λκΈ°ννκΈ° μν΄ μ¬μ©ν©λλ€.
package-version
λ¨κ³μμ μ»μ λ²μ μ μ¬μ©ν©λλ€.
π step: Release Drafter
release-drafter/release-drafter
μ‘μ
μΌλ‘ μμ±λ git tag μ λν GitHub Release λ₯Ό μμ±ν©λλ€.
GitHub Releaseμ λ³Έλ¬Έμ λ³κ²½μ¬ν μ μλ ν νλ¦Ώ κΈ°λ°μ λ΄μ©μΌλ‘ μμ±λ©λλ€.
package-version
λ¨κ³μμ μ»μ λ²μ μ μ¬μ©ν©λλ€.
μμ±λ GitHub Relase λ Draft μνμ λλ€.
μ€ν νμΌμ΄ μ λ‘λλ ν μ§μ μνλ₯Ό λ³κ²½ν΄μ 곡κ°νλλ‘ νκ³ μΆμ΅λλ€.
π step: Check Upload Url
Release Drafter
λ¨κ³μ μΆλ ₯κ°μ νμΈν©λλ€.
Release Drafter
λ¨κ³μμ μμ±λ GitHub Release μ 첨λΆνμΌ Assets μ
λ‘λ κ²½λ‘λ₯Ό νμΈνκΈ° μν΄ μΆκ°λ λ¨κ³μ
λλ€.
π step: Repository Dispatch
peter-evans/repository-dispatch
μ‘μ
μΌλ‘ μ§μ λ GitHub μ μ₯μλ₯Ό λμμΌλ‘ μ¬μ©μ μ μ μ΄λ²€νΈλ₯Ό μ€νν©λλ€.
peter-evans/repository-dispatch
μ‘μ μ GitHub api μ€ web hook μ μ¬μ©ν©λλ€.
μ΄λ²€νΈ νμμ upload-assets
μΌλ‘ μ§μ ν©λλ€.
μΉ ν
μ μμ²ν λ, μμ² λ³Έλ¬ΈμΌλ‘ Release Drafter
λ¨κ³μ μΆλ ₯κ°μ€ upload_url
μ μ μ‘ν©λλ€.
β Job: Release
μ μ₯μμ μΉ ν μ΄λ²€νΈκ° μμ²λλ©΄ μ€νλλ GitHub Action μ λλ€. .github/workflows/release.yml 보기
ꡬλ
νλ μ΄λ²€νΈ νμμ upload-assets
μ
λλ€.
Release Job μ Context
, Verify Upload Url
, Checkout
, Install Node.js, Npm
, Install dependencies
, Pack
, Upload Assets to Release with a wildcard
λ¨κ³λ‘ ꡬμ±λμ΄ μμ΅λλ€.
Macos, Windows μμ μ€νλ©λλ€. κ° λ¨κ³λ μ§μ λ OS λ³λ‘ νλ²μ© λλ² μ€νλ©λλ€.
π step: Context
GitHub Action μΌλ‘ μ 곡λλ κΈ°λ³Έ λ°μ΄ν°λ₯Ό νμΈν΄λ³΄κ³ μΆμ΄μ μΆκ°ν λ¨κ³μ λλ€.
π step: Verify Upload Url
μΉ ν
μΌλ‘ μ
λ ₯λ μμ² λ³Έλ¬Έμ΄ μ μμ μΌλ‘ μ λ¬λλμ§ νμΈν΄λ³΄κ³ μΆμ΄μ μΆκ°ν λ¨κ³μ
λλ€. Conext
λ¨κ³μμ λμΌν κ°μ νμΈν μ μμ΅λλ€.
π step: Checkout
μ격 μ μ₯μμμ μ½λλ₯Ό λ΄λ €λ°μ΅λλ€.
π step: Install Node.js, Npm
Node.js νκ²½μ ꡬμ±ν©λλ€.
v12 Node.js λ₯Ό μ¬μ©ν©λλ€.
π step: Install dependencies
package.json μ μμ±λ ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.
π step: Pack
npm pack μ€ν¬λ¦½νΈλ₯Ό μ€νν©λλ€.
electron μΌλ‘ μμ±λ μ€ννμΌμ΄ packages λλ ν°λ¦¬μ μμ±λ©λλ€.
π step: Upload Assets to Release with a wildcard
packages λλ ν°λ¦¬μ μμ±λ μ€ννμΌμ μ΄μ Build μ‘μ μμ μ λ¬ν μ λ‘λ κ²½λ‘λ₯Ό μ¬μ©ν΄μ Release Assets λ‘ μ λ‘λν©λλ€.
π Workflows
Actions: bbonkr/renameapp νμ΄μ§μμ μ€νλ μν¬νλ‘μ°λ₯Ό νμΈν μ μμ΅λλ€.
π§° Releases
Releases: bbonkr/renameapp νμ΄μ§μμ μμ±λ GItHub Release λ₯Ό νμΈν μ μμ΅λλ€.
π’ Conclusion
κ°λ₯νλ©΄ λ§μ λΆλΆμ μλνν΄μ κΌ νμν μΌμ μ§μ€ν μ μλ νκ²½μ μ€λΉνλ κ²μ λ§€μ° μ€μν μΌμ΄λΌκ³ μκ°λ©λλ€.
μ΄λ κ² κ²μ μν¬νλ‘μ°λ₯Ό μλνν΄λλ©΄ μ΄λ² κ²μμ λκ° λ³κ²½λμλμ§λ₯Ό μμ±νλ μκ°μ μ€μΌ μ μκ³ , κ²μμ λ€μ΄λ‘κ·Έ κ°λ₯ν νμΌμ λλ½νλ μ€μλ μμ΅λλ€.
μ§μμ μΌλ‘ λ μ’μ μν¬νλ‘μ°λ₯Ό μκ°νκ³ , ꡬμ±νκ³ νκ³ νλλ‘ νκ² μ΅λλ€.
μ μ μ μ¬ν μν¬νλ‘μ°λ₯Ό μλννλ €κ³ μ§ννμλ λΆμκ² λμμ΄ λλ©΄ μ’κ² μ΅λλ€.