์๊ฐ
์ด ๊ฐ์ด๋์์๋ Ant ๋น๋ ์์คํ ์ ์ฌ์ฉํ์ฌ Java ํ๋ก์ ํธ์ ๋ํ CI(์ฐ์ ํตํฉ)๋ฅผ ์ํํ๋ ์ํฌํ๋ก๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ค๋๋ค. ๋ง๋ ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ด์ค๊ธฐ ์์ฒญ์ ์ปค๋ฐํ ๋ ๊ธฐ๋ณธ ๋ถ๊ธฐ์ ๋ํ ๋น๋ ๋๋ ํ ์คํธ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฝ๋๊ฐ ํญ์ ์ ์์ธ์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. CI ์ํฌํ๋ก๋ฅผ ํ์ฅํ์ฌ ์ํฌํ๋ก ์คํ์์ ์ํฐํฉํธ๋ฅผ ์ ๋ก๋ํ ์ ์์ต๋๋ค.
GitHub ํธ์คํธ ์คํ๊ธฐ์๋ JDK(Java Development Kit) ๋ฐ Ant๋ฅผ ํฌํจํ๋ ์ํํธ์จ์ด๊ฐ ์ฌ์ ์ค์น๋ ๋๊ตฌ ์บ์๊ฐ ์์ต๋๋ค. JDK ๋ฐ Ant์ฉ ์ํํธ์จ์ด ๋ฐ ๋ฏธ๋ฆฌ ์ค์น๋ ๋ฒ์ ๋ชฉ๋ก์ GitHub ํธ์คํ ์คํ๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
ํ์ ์กฐ๊ฑด
YAML ๋ฐ GitHub Actions์ ๊ตฌ๋ฌธ์ ๋ํด ์ ์๊ณ ์์ด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.
Java ๋ฐ Ant ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ดํดํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Apache Ant ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Ant ์ํฌํ๋ก ํ ํ๋ฆฟ ์ฌ์ฉ
๋น ๋ฅด๊ฒ ์์ํ๋ ค๋ฉด ์ํฌํ๋ก ํ
ํ๋ฆฟ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ .github/workflows
๋๋ ํฐ๋ฆฌ์ ์ถ๊ฐํฉ๋๋ค.
GitHub์(๋) ๋๋ถ๋ถ์ Ant ํ๋ก์ ํธ์์ ์๋ํ๋ Ant ์ํฌํ๋ก ํ ํ๋ฆฟ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ฐ์ด๋์ ํ์ ์น์ ์์๋ ์ด ์ํฌํ๋ก ํ ํ๋ฆฟ์ ์ฌ์ฉ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์๋ฅผ ์ ๊ณตํฉ๋๋ค.
-
GitHub์์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ธฐ๋ณธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ ์๋์์ ์์ ์ ํด๋ฆญํฉ๋๋ค.
-
๋ฆฌํฌ์งํ ๋ฆฌ์ ์ํฌํ๋ก๊ฐ ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ์ ์ํฌํ๋ก๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
"์ํฌํ๋ก ์ ํ" ํ์ด์ง์๋ ๊ถ์ฅ๋๋ ์ํฌํ๋ก ํ ํ๋ฆฟ์ ์ ํ ํญ๋ชฉ์ด ํ์๋ฉ๋๋ค. "Java with Ant"๋ฅผ ๊ฒ์ํฉ๋๋ค.
-
"Java with Ant" ์ํฌํ๋ก์์ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
-
ํ์์ ๋ฐ๋ผ ์ํฌํ๋ก๋ฅผ ํธ์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด Java ๋ฒ์ ์ ๋ณ๊ฒฝํฉ๋๋ค.
-
๋ณ๊ฒฝ ๋ด์ฉ ์ปค๋ฐ์ ํด๋ฆญํฉ๋๋ค.
ant.yml
์ํฌํ๋ก ํ์ผ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ .github/workflows
๋๋ ํฐ๋ฆฌ์ ์ถ๊ฐ๋ฉ๋๋ค.
Java ๋ฒ์ ๋ฐ ์ํคํ ์ฒ ์ง์
์ํฌํ๋ก ํ
ํ๋ฆฟ์ x64 ํ๋ซํผ์ ๊ฒฝ์ฐ OpenJDK 8์ ํฌํจํ๋๋ก PATH
์(๋ฅผ) ์ค์ ํฉ๋๋ค. ๋ค๋ฅธ ๋ฒ์ ์ Java๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ค๋ฅธ ์ํคํ
์ฒ(x64
๋๋ x86
)๋ฅผ ๋์์ผ๋ก ์ง์ ํ๋ ค๋ ๊ฒฝ์ฐ setup-java
์์
์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ Java ๋ฐํ์ ํ๊ฒฝ์ ์ ํํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด x64 ํ๋ซํผ์ฉ Adoptium์์ ์ ๊ณตํ๋ JDK ๋ฒ์ 11์ ์ฌ์ฉํ๋ ค๋ฉด setup-java
์์
์ ์ฌ์ฉํ๊ณ java-version
, distribution
๋ฐ architecture
๋งค๊ฐ ๋ณ์๋ฅผ ๊ฐ๊ฐ '11'
, 'temurin'
๋ฐ x64
๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
steps: - uses: actions/checkout@v4 - name: Set up JDK 11 for x64 uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' architecture: x64
steps:
- uses: actions/checkout@v4
- name: Set up JDK 11 for x64
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
architecture: x64
์์ธํ ๋ด์ฉ์ setup-java
์์
์ ์ฐธ์กฐํ์ธ์.
์ฝ๋ ๋น๋ ๋ฐ ํ ์คํธ
์ฝ๋๋ฅผ ๋น๋ํ๊ณ ํ ์คํธํ๊ธฐ ์ํด ๋ก์ปฌ์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ํฌํ๋ก ํ
ํ๋ฆฟ์ build.xml
ํ์ผ์ ์ง์ ๋ ๊ธฐ๋ณธ ๋์์ ์คํํฉ๋๋ค. ๊ธฐ๋ณธ ๋์์ ์ผ๋ฐ์ ์ผ๋ก ํด๋์ค๋ฅผ ๋น๋ํ๊ณ ํ
์คํธ๋ฅผ ์คํํ๊ณ ํด๋์ค๋ฅผ ๋ฐฐํฌ ๊ฐ๋ฅํ ํ์(์์: JAR ํ์ผ)์ผ๋ก ํจํค์งํ๋๋ก ์ค์ ๋ฉ๋๋ค.
๋ค๋ฅธ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ฑฐ๋ ๋ค๋ฅธ ๋์์ ์คํํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด build-ci.xml
ํ์ผ์ ๊ตฌ์ฑ๋ jar
๋์์ ์คํํ ์ ์์ต๋๋ค.
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: Run the Ant jar target run: ant -noinput -buildfile build-ci.xml jar
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Run the Ant jar target
run: ant -noinput -buildfile build-ci.xml jar
์ํฌํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ํฐํฉํธ๋ก ํจํค์ง
๋น๋์ ์ฑ๊ณตํ๊ณ ํ ์คํธ๋ฅผ ํต๊ณผํ ํ์๋ ๊ทธ์ ๋ฐ๋ฅธ Java ํจํค์ง๋ฅผ ๋น๋ ์ํฐํฉํธ๋ก ์ ๋ก๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ํฌํ๋ก ์คํ์ ์ผ๋ถ๋ก ๋น๋๋ ํจํค์ง๋ฅผ ์ ์ฅํ๊ณ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ์ํฐํฉํธ๋ ๋ณํฉ๋๊ธฐ ์ ์ ๋ก์ปฌ ํ๊ฒฝ์์ ๋์ด์ค๊ธฐ ์์ฒญ์ ํ ์คํธํ๊ณ ๋๋ฒ๊ทธํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ํฌํ๋ก ์ํฐํฉํธ์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ณต์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
Ant๋ ์ผ๋ฐ์ ์ผ๋ก build/jar
๋๋ ํฐ๋ฆฌ์ JAR, EAR ๋๋ WAR๊ณผ ๊ฐ์ ์ถ๋ ฅ ํ์ผ์ ์์ฑํฉ๋๋ค. upload-artifact
์์
์ ์ฌ์ฉํ์ฌ ํด๋น ๋๋ ํฐ๋ฆฌ์ ์ฝํ
์ธ ๋ฅผ ์
๋ก๋ํ ์ ์์ต๋๋ค.
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - run: ant -noinput -buildfile build.xml - uses: actions/upload-artifact@v4 with: name: Package path: build/jar
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- run: ant -noinput -buildfile build.xml
- uses: actions/upload-artifact@v4
with:
name: Package
path: build/jar