이 프로젝트는 기본 분기로 푸시할 때 스테이징 환경에 대한 애플리케이션의 빌드, 테스트 및 배포 프로세스의 자동화를 보여주는 빠른 샘플 프로젝트입니다.
CI/CD 파이프라인을 적절하게 시연하기 위해 최소한의 코드로 간단한 Python 프로젝트를 생성한 다음 이를 GitHub Actions에 통합하겠습니다.
앞서 언급한 것처럼 파이프라인에서 사용할 간단한 프로젝트를 생성하겠습니다. 저는 특별한 이유 없이 이 작업을 Python으로 선택했습니다. 원하는 다른 프로그래밍 언어를 사용해도 됩니다. 이 프로젝트의 주요 목적은 파이프라인을 시연하는 것입니다.
그러므로 프로젝트 폴더를 생성하고 해당 폴더로 이동하세요.
mkdir automated-testing cd automated-testing
이제 간단한 Python 애플리케이션을 작성하겠습니다. 프로젝트 폴더에 app.py라는 새 파일을 생성하세요.
touch app.py
파일에 아래 코드 블록을 추가하세요.
def hello(): return "Hello, World!" if __name__ == "__main__": print(hello())
이것은 CI 파이프라인에서 테스트할 수 있는 기본 기능의 예 역할을 하는 매우 간단한 Python "Hello world" 함수입니다.
def hello()는 인수를 사용하지 않는 hello라는 함수를 정의합니다. 이 함수가 호출되면 "Hello, World!"라는 문자열이 반환됩니다.
if __name__ == "__main__"은 파일이 직접 실행될 때만(모듈로 가져올 때가 아니라) 특정 코드가 실행되도록 하는 데 사용되는 표준 Python 구문입니다. 스크립트의 진입점 역할을 합니다.
app.py가 직접 실행되면(예: python app.py 실행) 스크립트는 hello() 함수를 호출하고 "Hello, World!"라는 결과를 인쇄합니다.
일반적인 프로젝트에는 종속성이 있으며 Python 프로젝트에서는 일반적으로 요구사항.txt 파일에 정의됩니다.
새 파일 요구 사항.txt 만들기
touch requirements.txt
파일에 다음을 추가하세요.
pytest
이제 app.py의 기능을 테스트하기 위해 기본 테스트 파일인 test_app.py를 추가하겠습니다. 파일에 아래 내용을 추가하세요:
from app import hello def test_hello(): assert hello() == "Hello, World!"
이제 파이프라인을 생성할 준비가 되었습니다.
GitHub 작업을 구성하려면 저장소 내에 .github/workflows 폴더를 만들어야 합니다. 이것이 저장소의 CI/CD 파이프라인을 GitHub에 알리는 방법입니다.
새 파일 만들기:
mkdir -p .github/workflows
하나의 저장소에 여러 파이프라인이 있을 수 있으므로 .github/workflows 폴더에 proj.yml 파일을 생성하세요. 여기에서 Python 프로젝트를 구축, 테스트 및 배포하는 단계를 정의합니다.
파일에 아래 코드를 추가하세요.
name: Build, Test and Deploy # Trigger the workflow on pushes to the main branch on: push: branches: - main jobs: build-and-test: runs-on: ubuntu-latest steps: # Checkout the code from the repository - name: Checkout repo uses: actions/checkout@v4 # Set up Python environment - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.x' # Install dependencies - name: Install Dependecies run: | python -m pip install --upgrade pip pip install -r requirements.txt # Build (this project deosn't require a build but we will simulate a build by creating a file) - name: Build Project run: | mkdir -p build # Simulate build output by creating a file touch build/output_file.txt # Run tests using pytest - name: Run tests run: pytest # Upload the build output as an artifact (we created a file in the build step to simulate an artifact) - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: build-artifact path: build/ deploy: runs-on: ubuntu-latest needs: build-and-test if: success() steps: # Download the artifact from the build stage - name: Download build artifact uses: actions/download-artifact@v4 with: name: build-artifact path: build/ - name: Simulate Deployment run: | echo "Deploying to staging..." ls build/
If you haven't already, you need to initialize a git repository using the commands below:
git init git add . git commit -m "Create project as well as CI/CD pipeline"
Now we push to GitHub. Create a GitHub repository and push your code using the below commands:
git remote add origin <your-repo-url> git push -u origin main
After pushing the code, you can visit the Actions tab in your GitHub repository. You should see the pipeline triggered, running the steps defined in your proj.yml file.
If everything is set up correctly, the pipeline will build, test, and simulate deployment. You can changes things around in your project and make new pushes to see the the pipeline works, create errors intentional so you can see how the pipeline works when the tests fail.
On a successful run this is how your Actions tab should look.
And that's it, this setup provides a working example of a CI/CD pipeline for a very basic Python project. If you found this helpful, please share with your connection and if you have any questions, do not hesitate to drop the question in the comments.
위 내용은 GitHub Actions를 사용하여 빌드, 테스트 및 배포 프로세스 자동화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!