GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD(지속적 통합 및 지속적 전달) 플랫폼입니다. 리포지토리에 대한 모든 풀 요청을 빌드 및 테스트하거나 병합된 풀 요청을 프로덕션에 배포하는 워크플로를 생성할 수 있습니다.
GitHub Actions는 DevOps 이상의 기능을 제공하며 pull request 다른 이벤트가 발생할 때 workflow를 실행할 수 있게 해줍니다. 예를 들어 누군가 저장소에 새 이슈를 생성할 때마다 workflow를 실행하여 적절한 레이블을 자동으로 추가할 수 있습니다.
GitHub는 workflows를 실행하기 위한 Linux, Windows 및 macOS 가상 머신을 제공하며, 자체 데이터 센터 또는 클라우드 인프라에서 자체 호스팅 실행기를 호스팅할 수도 있습니다.
pull request이 열리거나 문제가 생성되는 등 repository 이벤트가 발생할 때 트리거되도록 GitHub Actions workflow를 구성할 수 있습니다.
workflow에는 순차적 또는 병렬로 실행될 수 있는 작업이 하나 이상 포함되어 있습니다. 각 작업은 자체 가상 머신 실행기 또는 컨테이너 내부에서 실행되며, 정의한 스크립트를 실행하거나 workflow을 단순화할 수 있는 재사용 가능한 확장인 작업을 실행하는 하나 이상의 단계가 있습니다.
workflow는 하나 이상의 작업을 실행하는 구성 가능한 자동화된 프로세스입니다. workflow는 저장소에 체크인된 YAML 파일에 의해 정의되며 저장소의 이벤트에 의해 트리거될 때 실행되거나 수동으로 또는 정의된 일정에 따라 트리거될 수 있습니다.
workflow는 repository의 .github/workflows 디렉터리에 정의되어 있으며 repository에는 여러 workflow가 있을 수 있으며 각 workflow는 서로 다른 작업 집합을 수행할 수 있습니다. 예를 들어 request full을 빌드하고 test하는 workflow, release가 생성될 때마다 app 배포하는 워크플로, 그리고 누군가가 새 이슈를 열 때마다 레이블을 추가하는 워크플로가 있을 수 있습니다.
다른 workflow 내에서 workflow를 참조할 수 있습니다.
자세한 내용은 https://docs.github.com/en/actions/using-workflows/reusing-workflows
을 참조하십시오.
워크플로에 대한 자세한 내용은 https://docs.github.com/en/actions/using-workflows을 참조하세요.
Event는 workflow 실행을 트리거하는 저장소의 특정 활동입니다. 예를 들어, 누군가 pull request을 생성하거나, 이슈를 열거나, 커밋을 저장소에 푸시할 때 활동은 GitHub에서 시작될 수 있습니다.
REST API에 게시하거나
수동으로 일정에 따라 실행되도록 workflow를 트리거할 수도 있습니다.
워크플로를 트리거하는 데 사용할 수 있는 이벤트의 전체 목록은 workflow를 트리거하는 이벤트를 참조하세요.
Job은 동일한 실행기에서 실행되는 workflow의 일련의 단계입니다.
각 단계는 실행될 shell script이거나 run될 action 입니다. 단계는 순서대로 실행되며 서로 종속됩니다. 각 단계는 동일한 실행기에서 실행되므로 한 단계에서 다른 단계로 데이터를 공유할 수 있습니다. 예를 들어, 애플리케이션을 빌드하는 단계와 빌드된 애플리케이션을 테스트하는 단계가 있을 수 있습니다.
다른 Job과의 종속성을 구성할 수 있습니다. 기본적으로 Job은 종속성이 없으며 서로 병렬로 실행됩니다. 작업이 다른 작업에 종속되면 종속 작업이 완료될 때까지 기다렸다가 실행합니다. 예를 들어 종속성이 없는 다양한 아키텍처에 대한 여러 빌드 작업과 해당 작업에 종속되는 패키징 작업이 있을 수 있습니다. 빌드 작업은 병렬로 실행되며 모두 성공적으로 완료되면 패키징 작업이 실행됩니다. job 대한 자세한 내용은
'Using job'을 참조하세요.
Job 복잡하지만 자주 반복되는 작업을 수행하는 GitHub Actions 플랫폼용 사용자 지정 애플리케이션입니다. Job을 사용하면 workflow 파일에 작성하는 반복적인 코드의 양을 줄이는 데 도움이 됩니다. 작업을 통해 GitHub에서 Git 리포지토리를 가져오거나, 빌드 환경에 맞는 도구 체인을 설정하거나, 클라우드 공급자에 대한 인증을 설정할 수 있습니다. 자신만의 작업을 작성하거나 GitHub Marketplace의 워크플로에 사용할 job을 찾을 수 있습니다.
자세한 내용은 "액션 생성" 을 참조하세요.
Runner는 WorkFlow가 트리거될 때 워크플로를 실행하는 서버입니다. 각 실행자는 한 번에 하나의 작업을 실행할 수 있습니다. GitHub는 워크플로를 실행하기 위한 Ubuntu Linux, Microsoft Windows 및 macOS 실행기를 제공합니다. 각 워크플로 실행은 새로 프로비저닝된 새로운 가상 머신에서 실행됩니다. GitHub는 더 큰 구성에서 사용할 수 있는 더 큰 실행기를 제공합니다. 자세한 내용은 "About larger runners."를 참조하세요.
다른 운영 체제가 필요하거나 특정 하드웨어 구성이 필요한 경우 자체 실행기를 호스팅할 수 있습니다. 자체 호스팅 Runner에 대한 자세한 내용은 "Hosting your own runners." 을 참조하세요
GitHub Actions는 YAML 구문을 사용하여 워크플로를 정의합니다. 각 워크플로는 코드 저장소의 .github/workflows 디렉터리에 별도의 YAML 파일로 저장됩니다.
Code가 푸시될 때마다 일련의 명령을 자동으로 triggers하는 예제 workflow repository에 생성할 수 있습니다. 이 워크플로에서 GitHub Actions는 푸시된 코드를 확인하고, bats 테스트 프레임워크를 설치하고, bats 버전을 출력하는 기본 명령인 bats -v를 실행합니다.
reporsitory에 .github/workflows/ 디렉터리를 생성하여 워크플로 파일을 저장합니다.
.github/workflows/ 디렉터리에서 learn-github-actions.yml이라는 새 파일을 만들고 다음 코드를 추가합니다.
# This workflow will build a Swift project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-swift
//name: learn-github-actions 선택 사항(Obtional) - GitHub 저장소의 "작업" 탭에 표시되는 워크플로의 이름입니다. 이 필드를 생략하면 워크플로우 파일의 이름이 대신 사용됩니다.
name: Swift
//on : 이 workflow에 대한 trigger를 지정합니다. 이 예에서는 push 이벤트를 사용하므로 누군가가
main branche에 repository's 변경 사항을 push하거나 merges a pull request 할 때마다 workflow run이 trigger됩니다. 이는 모든 분기에 대한 푸시에 의해 트리거됩니다.
특정 branches, paths 또는 tags 푸시할 때만 실행되는 구문의 예는 "GitHub Actions의 워크플로 구문"을 참조하세요.
https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
// jobs : learn-github-actions에 대한workflow 에서 실행되는 모든 job을 group화합니다.
jobs:
build:
//runs - on: macos에서 실행되도록 합니다
runs-on: macos-latest
//steps: checkout@v3를 사용하여 swift에서 build될 수 있도록 합니다.
steps:
- uses: actions/checkout@v3
//run은 실행기에서 명령을 실행하도록 작업 합니다. 이경우 swift build -v하도록 합니다.
- name: Build
run: swift build -v
- name: Run tests
run: swift test -v
workflow가 trigger되면 workflow를 실행하는 executes the workflow이 생성됩니다. 워크플로 실행이 시작된 후 실행 진행 상황의 시각화 그래프를 확인하고 GitHub에서 각 단계의 활동을 볼 수 있습니다.
깃헙 레포지 이동
Under your repository name, click Actions.
xcode에서 package로 만들어야 package.swift가 있어서 빌드됨
그리고, package.swift와 actions에 yams으로 생성된 버전이 같아야 한다.
참고 : https://developer.apple.com/documentation/xcode/creating-a-standalone-swift-package-with-xcode