์๊ฐ
์ด ๊ฐ์ด๋์์๋ Swift ํจํค์ง๋ฅผ ๋น๋ํ๊ณ ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ค๋๋ค.
GitHub ํธ์คํธ ์คํ๊ธฐ์๋ ์ํํธ์จ์ด๊ฐ ์ฌ์ ์ค์น๋ ๋๊ตฌ ์บ์๊ฐ ์์ผ๋ฉฐ, Ubuntu ๋ฐ macOS ์คํ๊ธฐ์๋ Swift ํจํค์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ข ์์ฑ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ต์ ์ํํธ์จ์ด ๋ฐ ์ฌ์ ์ค์น๋ ๋ฒ์ ์ Swift์ Xcode์ ๋ํ ์ ์ฒด ๋ชฉ๋ก์ GitHub ํธ์คํ ์คํ๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
ํ์ ์กฐ๊ฑด
YAML ๊ตฌ๋ฌธ๊ณผ ์ด๋ฅผ GitHub Actions์ ํจ๊ป ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ์๊ณ ์์ด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub Actions์ ๋ํ ์ํฌํ๋ก ๊ตฌ๋ฌธ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
Swift ํจํค์ง๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ดํดํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Apple ๊ฐ๋ฐ์ ์ค๋ช ์์ Swift ํจํค์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
Swift ์ํฌํ๋ก ํ ํ๋ฆฟ ์ฌ์ฉ
๋น ๋ฅด๊ฒ ์์ํ๋ ค๋ฉด ์ํฌํ๋ก ํ
ํ๋ฆฟ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ .github/workflows
๋๋ ํฐ๋ฆฌ์ ์ถ๊ฐํฉ๋๋ค.
GitHub์(๋) ๋๋ถ๋ถ์ Swift ํ๋ก์ ํธ์์ ์๋ํ๋ Swift ์ํฌํ๋ก ํ ํ๋ฆฟ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ฐ์ด๋์ ํ์ ์น์ ์์๋ ์ด ์ํฌํ๋ก ํ ํ๋ฆฟ์ ์ฌ์ฉ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์๋ฅผ ์ ๊ณตํฉ๋๋ค.
-
GitHub์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ๋ณธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ ์๋์์ ์์ ์ ํด๋ฆญํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ์ ์ํฌํ๋ก๊ฐ ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ์ ์ํฌํ๋ก๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
"์ํฌํ๋ก ์ ํ" ํ์ด์ง์๋ ๊ถ์ฅ๋๋ ์ํฌํ๋ก ํ ํ๋ฆฟ์ ์ ํ ํญ๋ชฉ์ด ํ์๋ฉ๋๋ค. "swift"๋ฅผ ๊ฒ์ํฉ๋๋ค.
-
์ง์์ ํตํฉ์ ํด๋ฆญํ์ฌ ์ํฌํ๋ก ์ ํ์ ํํฐ๋งํฉ๋๋ค.
-
"Swift" ์ํฌํ๋ก์์ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
-
ํ์์ ๋ฐ๋ผ ์ํฌํ๋ก๋ฅผ ํธ์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ํฌํ๋ก๊ฐ ์คํ๋ ๋ถ๊ธฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
-
๋ณ๊ฒฝ ๋ด์ฉ ์ปค๋ฐ์ ํด๋ฆญํฉ๋๋ค.
swift.yml
์ํฌํ๋ก ํ์ผ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ .github/workflows
๋๋ ํฐ๋ฆฌ์ ์ถ๊ฐ๋ฉ๋๋ค.
Swift ๋ฒ์ ์ง์
GitHub ํธ์คํธ ์คํ๊ธฐ์์ ์ฌ์ ์ค์น๋ ํน์ ๋ฒ์ ์ Swift๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด swift-actions/setup-swift
์์
์ ์ฌ์ฉํ์ธ์. ์ด ์์
์ ์คํ๊ธฐ์ ๋๊ตฌ ์บ์์์ ํน์ ๋ฒ์ ์ Swift๋ฅผ ์ฐพ๊ณ ํ์ ์ด์ง ํ์ผ์ PATH
์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ ๋ด์ฉ์ ์์
์ ๋๋จธ์ง ๋ถ๋ถ์ ๋ํด ์ ์ง๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ swift-actions/setup-swift
์์
์ ์ฐธ์กฐํ์ธ์.
์์ฒด ํธ์คํธ ์คํ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ํ๋ Swift ๋ฒ์ ์ ์ค์นํ๊ณ PATH
์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์๋ ์์์์๋ swift-actions/setup-swift
์์
์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ค๋๋ค.
์ฌ๋ฌ Swift ๋ฒ์ ์ฌ์ฉ
ํ๋ ฌ์์ ์ฌ๋ฌ ๋ฒ์ ์ Swift๋ฅผ ์ฌ์ฉํ๋๋ก ์์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
# ์ด ์ํฌํ๋ก๋ GitHub์์ ์ธ์ฆ๋์ง ์์ ์์ ์ ์ฌ์ฉํฉ๋๋ค. # ์์ ์ ํ์ฌ์์ ์ ๊ณตํ๋ฉฐ # ๋ณ๋์ ์๋น์ค ์ฝ๊ด, ๊ฐ์ธ์ ๋ณด์ฒ๋ฆฌ๋ฐฉ์นจ, ์ง์ ์ค๋ช ์์์ ๊ท์ ๋ฉ๋๋ค. # ์ฐธ์กฐํ์ธ์. # ์ปค๋ฐ SHA์ ์์ ์ ๊ณ ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. # ์ต์ ๋ฒ์ ์ ์ป์ผ๋ ค๋ฉด SHA๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. # ํ๊ทธ ๋๋ ๋ถ๊ธฐ๋ฅผ ์ฐธ์กฐํ ์๋ ์์ง๋ง ๊ฒฝ๊ณ ์์ด ์์ ์ด ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. name: Swift on: [push] jobs: build: name: Swift ${{ matrix.swift }} on ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest] swift: ["5.2", "5.3"] runs-on: ${{ matrix.os }} steps: - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf with: swift-version: ${{ matrix.swift }} - uses: actions/checkout@v4 - name: Build run: swift build - name: Run tests run: swift test
# ์ด ์ํฌํ๋ก๋ GitHub์์ ์ธ์ฆ๋์ง ์์ ์์
์ ์ฌ์ฉํฉ๋๋ค.
# ์์
์ ํ์ฌ์์ ์ ๊ณตํ๋ฉฐ
# ๋ณ๋์ ์๋น์ค ์ฝ๊ด, ๊ฐ์ธ์ ๋ณด์ฒ๋ฆฌ๋ฐฉ์นจ, ์ง์ ์ค๋ช
์์์ ๊ท์ ๋ฉ๋๋ค.
# ์ฐธ์กฐํ์ธ์.
# ์ปค๋ฐ SHA์ ์์
์ ๊ณ ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
# ์ต์ ๋ฒ์ ์ ์ป์ผ๋ ค๋ฉด SHA๋ฅผ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
# ํ๊ทธ ๋๋ ๋ถ๊ธฐ๋ฅผ ์ฐธ์กฐํ ์๋ ์์ง๋ง ๊ฒฝ๊ณ ์์ด ์์
์ด ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
name: Swift
on: [push]
jobs:
build:
name: Swift ${{ matrix.swift }} on ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
swift: ["5.2", "5.3"]
runs-on: ${{ matrix.os }}
steps:
- uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
with:
swift-version: ${{ matrix.swift }}
- uses: actions/checkout@v4
- name: Build
run: swift build
- name: Run tests
run: swift test
๋จ์ผ ํน์ Swift ๋ฒ์ ์ฌ์ฉ
5.3.3
๊ณผ ๊ฐ์ ํน์ ๋ฒ์ ์ Swift๋ฅผ ์ฌ์ฉํ๋๋ก ์์
์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
steps: - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf with: swift-version: "5.3.3" - name: Get swift version run: swift --version # Swift 5.3.3
steps:
- uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
with:
swift-version: "5.3.3"
- name: Get swift version
run: swift --version # Swift 5.3.3
์ฝ๋ ๋น๋ ๋ฐ ํ ์คํธ
๋ก์ปฌ์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ช
๋ น์ผ๋ก Swift๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋น๋ํ๊ณ ํ
์คํธํ ์ ์์ต๋๋ค. ์ด ์์์์๋ ์์
์์ swift build
๋ฐ swift test
๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ค๋๋ค.
steps: - uses: actions/checkout@v4 - uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf with: swift-version: "5.3.3" - name: Build run: swift build - name: Run tests run: swift test
steps:
- uses: actions/checkout@v4
- uses: swift-actions/setup-swift@65540b95f51493d65f5e59e97dcef9629ddf11bf
with:
swift-version: "5.3.3"
- name: Build
run: swift build
- name: Run tests
run: swift test