Jenkins์ GitHub Actions์ ์ฐจ์ด์ ์ ์์๋ณด๊ธฐ ์ํด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ ์๋ํ๋ฅผ ์งํํ๋ค.
(Jenkins์ ๊ด๋ จ๋ ๊ธ๋ ์์ฑํ๊ณ ์์ผ๋ ์๋ ์ถ๊ฐํ ๋ด์ฉ์ด ๋ง๋ค๋ณด๋ ์์์ ์ฅ์์ ๋ฌปํ์ง ์ค๋๋ค.. )
GitHub Actions์ Jenkins ๋ณด๋ค ๊ฐ๋จํ๋ค.
์ฌ์ฉ๋ฒ์ ๊ธฐ๋กํ๊ณ ๋์ ์ฐจ์ด์ ์ ๊ฐ๋จํ๊ฒ ๊ธฐ๋กํ๊ณ ์ ํ๋ค.
โ๏ธ CI/CD์ GitHub Actions
CI/CD ๊ฐ๋ ์ Jenkins์ ๊ด๋ จ๋ ๊ธ์ ์์ฑํ๋ฉด์ ์ธ๊ธํ๊ธด ํ์๋ค.
CI/CD(์ง์์ ํตํฉ / ์ง์์ ๋ฐฐํฌ)๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์๋ํํ๊ธฐ ์ํด์์ด๋ค.
๊ถ๊ทน์ ์ผ๋ก๋ ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ฒ ์ต์ ํ๋ก์ ํธ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์์ด๊ธฐ๋ ํ๋ค.
- ์ง์์ ํตํฉ - CI (Continuous Integration) : ๊ฐ๋ฐ์๋ค์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์ ์ ์ฅ์(GitHub Repository)์ ์์ฃผ merge ํ๋ ๊ฒ์ผ๋ก, ์ฝ๋๋ฅผ ์๋์ผ๋ก ๋น๋, ํ ์คํธํ์ฌ ๋ฉ์ธ ๋ธ๋์น์ ํตํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ์์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์์ ํ ์ ์๊ฒ ํ๋ค. ํตํฉ ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ต์ํํ์ฌ ์ํํธ์จ์ด์ ํ์ง์ ํฅ์์ํด์ผ๋ก์จ ์ฌ์ฉ์์ ๊ฒฝํ์ ๋์ธ๋ค. (๊ถ๊ทน์ ๋ชฉํ)
- ์ง์์ ๋ฐฐํฌ - CD (Continuous Deployment) : ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ํ
์คํธ๋ฅผ ํต๊ณผํ ํ ์๋์ผ๋ก ์ด์ ํ๊ฒฝ์ ๋ฐฐํฌ๋๋ ๊ฒ
์ฝ๋๋ฅผ commitํ๊ฑฐ๋ pr ์์ฑ ํ merge๋๋ฉด docker image build ๐ Docker Hub์ ์ฌ๋ผ๊ฐ ๐ image pull
GitHub Actions์ ์ฅ์ ์ค ํ๋๋ ์ค์ ์ด ๊ฐ๋จํ๋ค๋ ๊ฒ์ด๋ค.
GitHub Repository์ ๋ฐ์ ํ๊ฒ ํตํฉ๋์ด ๊ฐ๋ฐ์๋ค์ด ๋ณ๋์ CI/CD ํด์ ์ค์ ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฒ๊ฑฐ๋ก์์ ์ค์ฌ์ค๋ค.
(Jenkins์ ์ฌ์ฉํ์ ๋ ์ค์ , ๊ด๋ฆฌํ๋ ์์ ์์ ๊ฝค ์ค๋ ์๊ฐ์ด ๊ฑธ๋ ธ๋ ๊ฒ์ ์๊ฐํด๋ณด๋ฉด ํจ์ฌ ๋ ํจ์จ์ ์ธ ๊ฒ ๊ฐ๋ค!)
GitHub Actions ๋์ ์๋ฆฌ
- GitHub Actions๋ GitHub Repository์ ์ด๋ฒคํธ(push, pull, pr)์ ๋ฐ์ํ์ฌ ์๋ํ๋ ์ํฌํ๋ก์ฐ๋ฅผ ์คํํ๋ค.
- ์ํฌํ๋ก์ฐ๋ .github/workflows ๋๋ ํ ๋ฆฌ ๋ด YAML ํ์ผ๋ก ์ ์๋๋ฉฐ ์ด ํ์ผ ๋ด์์ ์์ (jobs), ๋จ๊ณ(steps), ์ก์ (actions) ๋ฑ์ ์ค์ ํ ์ ์๋ค.

- Workflow๋ GitHub Actions์์ ์คํ๋๋ ์๋ํ ํ๋ก์ธ์ค๋ฅผ ์ ์ํ๋ ๋จ์๋ก ๊ฐ ์์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ฉฐ ์ฌ๋ฌ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ ์ ์๋ค.
- Step์ ๊ฐ ์์ ๋ด์์ ์ํ๋๋ ๋จ์ผ ๋ช ๋ น์ด ๋๋ ์ก์ ์ ์ฐ์์ผ๋ก, ์์ ๋ด์์ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค.
- Action์ marketplace์์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ง์ ์์ฑํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ด๋ค.
- Secrets์ repository์ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ๐ API ํ ํฐ ์ํธ, SSH ํค ๋ฑ
GitHub Actions ์์ฑ - CI

- respository โ Actions์์ simple workflow๋ก ๋ค์ด๊ฐ๋ค.

- .github/workflows/test-github-actions.yml ์ ์์ฑํ๋ค.

- commit changes์ ๋๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๋ค.

- workflow ๋์์ ํ์ธํ ์ ์์ผ๋ฉฐ ๋ก๊ทธ๋ค์ ํตํด ๊ฐ step๋ค์ด ์ด๋ป๊ฒ ์คํ๋๋์ง ๋ณผ ์ ์๋ค.

์ด๊ณณ์ ๋ณด๋ฉด test ์ค๋ฅ ์ฌ๋ถ๋ ํ์ธํ ์ ์๋ค.
Test code๋ฅผ ์์ฑํ์ง ์์ ๋ณ๋ค๋ฅธ ๋ก๊ทธ๊ฐ ์ฐํ์ง๋ ์์๋ค.
๐น workflow yml file
name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions ๐
on: [push]
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest # ํด๋นjob์ ์ด๋ค OS์์ ์คํํ ๊ฒ์ธ์ง
steps:
- run: echo "๐ The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "๐ง This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "๐ The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v4
- run: echo "๐ก The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "๐ฅ๏ธ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ github.workspace }}
- run: echo "๐ This job's status is ${{ job.status }}."
- on : workflow๊ฐ ์ธ์ ์คํ๋ ์ง์ ๋ํ ํธ๋ฆฌ๊ฑฐ ์ง์ ๐ git push ์ด๋ฒคํธ ๋ฐ์ ์ ํธ๋ฆฌ๊ฑฐ
- runs-on : ํด๋น job์ ์ด๋ค OS์์ ์คํํ ๊ฒ์ธ๊ฐ ๋ช ์
- steps : ํ๋์ job์ด ๊ฐ์ง ์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋์ ๋์ด ๐ ๊ฐ ์คํ
์ ๋
๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๊ณ ์์ฐจ์ ์ผ๋ก ์คํ๋จ
- run : shell์ ์ด์ฉํด ์ปค๋งจ๋ ๋ผ์ธ ์คํ
- name : step์ ์ด๋ฆ ๋ช ์
- uses : ํ์ฌ step์์ ์ฌ์ฉํ ์ก์
GitHub Actions vs Jenkins
์ด ๊ธฐ์ ์ ์ ์ฌ์ฉํ๋์ง, ์ฅ๋จ์ ์ ๋ฌด์์ธ์ง ํ์ ํ๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.
๐นGitHub Actions
- ์ฅ์ : Jenkins์ ๋ฌ๋ฆฌ ์ค์นํ๋ ๊ณผ์ X / GitHub Repository์ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์์ ๐ ์์ค ์ฝ๋ ๊ด๋ฆฌ์ CI/CD ํ์ดํ๋ผ์ธ์ ๊ฐ์ ํ๋ซํผ์์ ๊ด๋ฆฌ ๐ ๋ณต์ก์ฑ์ด ์ค์ด๋ค๊ณ ํ๋ก์ ํธ์ ํจ์จ์ฑ ์ฆ๊ฐ
- ๋จ์ : ๋ค๋ฅธ ๋๊ตฌ๋ค์ ๋นํด ์๋์ ์ผ๋ก ์๋ก์ / private repository ์ฐ๊ฒฐํ๋ ค๋ฉด ์ ๋ฃ
๐น Jenkins
- ์ฅ์ : ๋ ํผ๋ฐ์ค๊ฐ ๋ง๋ค. ๋งค์ฐ ์ ์ฐํ๋ฉฐ ์๋ง์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ํ์ฅ ๊ฐ๋ฅ
- ๋จ์ : ์ด๊ธฐ ์ค์ ๋ณต์ก
์ฐธ๊ณ ์๋ฃ
https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions
'DevOps > โ๏ธ CI&CD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[โ๏ธCI/CD] GitHub Actions - AWS CodeDeploy & S3 ์ด์ฉํด์ ๋ฐฐํฌ (0) | 2024.04.22 |
---|---|
[โ๏ธ CI/CD] Jenkins๋ฅผ ์ด์ฉํด ๋ฐฐํฌํ๊ธฐ 2 - ๋ค๋ฅธ ์๋ฒ (0) | 2024.01.26 |
[โ๏ธ CI/CD] Jenkins๋ฅผ ์ด์ฉํด ๋ฐฐํฌํ๊ธฐ 1 - ๋ก์ปฌ ์๋ฒ (1) | 2024.01.24 |
[โ๏ธ CI/CD] CI/CD์ Jenkins (1) | 2024.01.23 |
Jenkins์ GitHub Actions์ ์ฐจ์ด์ ์ ์์๋ณด๊ธฐ ์ํด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ ์๋ํ๋ฅผ ์งํํ๋ค.
(Jenkins์ ๊ด๋ จ๋ ๊ธ๋ ์์ฑํ๊ณ ์์ผ๋ ์๋ ์ถ๊ฐํ ๋ด์ฉ์ด ๋ง๋ค๋ณด๋ ์์์ ์ฅ์์ ๋ฌปํ์ง ์ค๋๋ค.. )
GitHub Actions์ Jenkins ๋ณด๋ค ๊ฐ๋จํ๋ค.
์ฌ์ฉ๋ฒ์ ๊ธฐ๋กํ๊ณ ๋์ ์ฐจ์ด์ ์ ๊ฐ๋จํ๊ฒ ๊ธฐ๋กํ๊ณ ์ ํ๋ค.
โ๏ธ CI/CD์ GitHub Actions
CI/CD ๊ฐ๋ ์ Jenkins์ ๊ด๋ จ๋ ๊ธ์ ์์ฑํ๋ฉด์ ์ธ๊ธํ๊ธด ํ์๋ค.
CI/CD(์ง์์ ํตํฉ / ์ง์์ ๋ฐฐํฌ)๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์๋ํํ๊ธฐ ์ํด์์ด๋ค.
๊ถ๊ทน์ ์ผ๋ก๋ ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ฒ ์ต์ ํ๋ก์ ํธ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์์ด๊ธฐ๋ ํ๋ค.
- ์ง์์ ํตํฉ - CI (Continuous Integration) : ๊ฐ๋ฐ์๋ค์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์ ์ ์ฅ์(GitHub Repository)์ ์์ฃผ merge ํ๋ ๊ฒ์ผ๋ก, ์ฝ๋๋ฅผ ์๋์ผ๋ก ๋น๋, ํ ์คํธํ์ฌ ๋ฉ์ธ ๋ธ๋์น์ ํตํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ์์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์์ ํ ์ ์๊ฒ ํ๋ค. ํตํฉ ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ต์ํํ์ฌ ์ํํธ์จ์ด์ ํ์ง์ ํฅ์์ํด์ผ๋ก์จ ์ฌ์ฉ์์ ๊ฒฝํ์ ๋์ธ๋ค. (๊ถ๊ทน์ ๋ชฉํ)
- ์ง์์ ๋ฐฐํฌ - CD (Continuous Deployment) : ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ํ
์คํธ๋ฅผ ํต๊ณผํ ํ ์๋์ผ๋ก ์ด์ ํ๊ฒฝ์ ๋ฐฐํฌ๋๋ ๊ฒ
์ฝ๋๋ฅผ commitํ๊ฑฐ๋ pr ์์ฑ ํ merge๋๋ฉด docker image build ๐ Docker Hub์ ์ฌ๋ผ๊ฐ ๐ image pull
GitHub Actions์ ์ฅ์ ์ค ํ๋๋ ์ค์ ์ด ๊ฐ๋จํ๋ค๋ ๊ฒ์ด๋ค.
GitHub Repository์ ๋ฐ์ ํ๊ฒ ํตํฉ๋์ด ๊ฐ๋ฐ์๋ค์ด ๋ณ๋์ CI/CD ํด์ ์ค์ ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฒ๊ฑฐ๋ก์์ ์ค์ฌ์ค๋ค.
(Jenkins์ ์ฌ์ฉํ์ ๋ ์ค์ , ๊ด๋ฆฌํ๋ ์์ ์์ ๊ฝค ์ค๋ ์๊ฐ์ด ๊ฑธ๋ ธ๋ ๊ฒ์ ์๊ฐํด๋ณด๋ฉด ํจ์ฌ ๋ ํจ์จ์ ์ธ ๊ฒ ๊ฐ๋ค!)
GitHub Actions ๋์ ์๋ฆฌ
- GitHub Actions๋ GitHub Repository์ ์ด๋ฒคํธ(push, pull, pr)์ ๋ฐ์ํ์ฌ ์๋ํ๋ ์ํฌํ๋ก์ฐ๋ฅผ ์คํํ๋ค.
- ์ํฌํ๋ก์ฐ๋ .github/workflows ๋๋ ํ ๋ฆฌ ๋ด YAML ํ์ผ๋ก ์ ์๋๋ฉฐ ์ด ํ์ผ ๋ด์์ ์์ (jobs), ๋จ๊ณ(steps), ์ก์ (actions) ๋ฑ์ ์ค์ ํ ์ ์๋ค.

- Workflow๋ GitHub Actions์์ ์คํ๋๋ ์๋ํ ํ๋ก์ธ์ค๋ฅผ ์ ์ํ๋ ๋จ์๋ก ๊ฐ ์์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ฉฐ ์ฌ๋ฌ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ ์ ์๋ค.
- Step์ ๊ฐ ์์ ๋ด์์ ์ํ๋๋ ๋จ์ผ ๋ช ๋ น์ด ๋๋ ์ก์ ์ ์ฐ์์ผ๋ก, ์์ ๋ด์์ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค.
- Action์ marketplace์์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ง์ ์์ฑํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ด๋ค.
- Secrets์ repository์ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ๐ API ํ ํฐ ์ํธ, SSH ํค ๋ฑ
GitHub Actions ์์ฑ - CI

- respository โ Actions์์ simple workflow๋ก ๋ค์ด๊ฐ๋ค.

- .github/workflows/test-github-actions.yml ์ ์์ฑํ๋ค.

- commit changes์ ๋๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๋ค.

- workflow ๋์์ ํ์ธํ ์ ์์ผ๋ฉฐ ๋ก๊ทธ๋ค์ ํตํด ๊ฐ step๋ค์ด ์ด๋ป๊ฒ ์คํ๋๋์ง ๋ณผ ์ ์๋ค.

์ด๊ณณ์ ๋ณด๋ฉด test ์ค๋ฅ ์ฌ๋ถ๋ ํ์ธํ ์ ์๋ค.
Test code๋ฅผ ์์ฑํ์ง ์์ ๋ณ๋ค๋ฅธ ๋ก๊ทธ๊ฐ ์ฐํ์ง๋ ์์๋ค.
๐น workflow yml file
name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions ๐
on: [push]
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest # ํด๋นjob์ ์ด๋ค OS์์ ์คํํ ๊ฒ์ธ์ง
steps:
- run: echo "๐ The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "๐ง This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "๐ The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v4
- run: echo "๐ก The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "๐ฅ๏ธ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ github.workspace }}
- run: echo "๐ This job's status is ${{ job.status }}."
- on : workflow๊ฐ ์ธ์ ์คํ๋ ์ง์ ๋ํ ํธ๋ฆฌ๊ฑฐ ์ง์ ๐ git push ์ด๋ฒคํธ ๋ฐ์ ์ ํธ๋ฆฌ๊ฑฐ
- runs-on : ํด๋น job์ ์ด๋ค OS์์ ์คํํ ๊ฒ์ธ๊ฐ ๋ช ์
- steps : ํ๋์ job์ด ๊ฐ์ง ์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋์ ๋์ด ๐ ๊ฐ ์คํ
์ ๋
๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๊ณ ์์ฐจ์ ์ผ๋ก ์คํ๋จ
- run : shell์ ์ด์ฉํด ์ปค๋งจ๋ ๋ผ์ธ ์คํ
- name : step์ ์ด๋ฆ ๋ช ์
- uses : ํ์ฌ step์์ ์ฌ์ฉํ ์ก์
GitHub Actions vs Jenkins
์ด ๊ธฐ์ ์ ์ ์ฌ์ฉํ๋์ง, ์ฅ๋จ์ ์ ๋ฌด์์ธ์ง ํ์ ํ๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.
๐นGitHub Actions
- ์ฅ์ : Jenkins์ ๋ฌ๋ฆฌ ์ค์นํ๋ ๊ณผ์ X / GitHub Repository์ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์์ ๐ ์์ค ์ฝ๋ ๊ด๋ฆฌ์ CI/CD ํ์ดํ๋ผ์ธ์ ๊ฐ์ ํ๋ซํผ์์ ๊ด๋ฆฌ ๐ ๋ณต์ก์ฑ์ด ์ค์ด๋ค๊ณ ํ๋ก์ ํธ์ ํจ์จ์ฑ ์ฆ๊ฐ
- ๋จ์ : ๋ค๋ฅธ ๋๊ตฌ๋ค์ ๋นํด ์๋์ ์ผ๋ก ์๋ก์ / private repository ์ฐ๊ฒฐํ๋ ค๋ฉด ์ ๋ฃ
๐น Jenkins
- ์ฅ์ : ๋ ํผ๋ฐ์ค๊ฐ ๋ง๋ค. ๋งค์ฐ ์ ์ฐํ๋ฉฐ ์๋ง์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ํ์ฅ ๊ฐ๋ฅ
- ๋จ์ : ์ด๊ธฐ ์ค์ ๋ณต์ก
์ฐธ๊ณ ์๋ฃ
https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions
'DevOps > โ๏ธ CI&CD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[โ๏ธCI/CD] GitHub Actions - AWS CodeDeploy & S3 ์ด์ฉํด์ ๋ฐฐํฌ (0) | 2024.04.22 |
---|---|
[โ๏ธ CI/CD] Jenkins๋ฅผ ์ด์ฉํด ๋ฐฐํฌํ๊ธฐ 2 - ๋ค๋ฅธ ์๋ฒ (0) | 2024.01.26 |
[โ๏ธ CI/CD] Jenkins๋ฅผ ์ด์ฉํด ๋ฐฐํฌํ๊ธฐ 1 - ๋ก์ปฌ ์๋ฒ (1) | 2024.01.24 |
[โ๏ธ CI/CD] CI/CD์ Jenkins (1) | 2024.01.23 |