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
κ°λ₯νλ©΄ λ§μ λΆλΆμ μλνν΄μ κΌ νμν μΌμ μ§μ€ν μ μλ νκ²½μ μ€λΉνλ κ²μ λ§€μ° μ€μν μΌμ΄λΌκ³ μκ°λ©λλ€.
μ΄λ κ² κ²μ μν¬νλ‘μ°λ₯Ό μλνν΄λλ©΄ μ΄λ² κ²μμ λκ° λ³κ²½λμλμ§λ₯Ό μμ±νλ μκ°μ μ€μΌ μ μκ³ , κ²μμ λ€μ΄λ‘κ·Έ κ°λ₯ν νμΌμ λλ½νλ μ€μλ μμ΅λλ€.
μ§μμ μΌλ‘ λ μ’μ μν¬νλ‘μ°λ₯Ό μκ°νκ³ , ꡬμ±νκ³ νκ³ νλλ‘ νκ² μ΅λλ€.
μ μ μ μ¬ν μν¬νλ‘μ°λ₯Ό μλννλ €κ³ μ§ννμλ λΆμκ² λμμ΄ λλ©΄ μ’κ² μ΅λλ€.