Github 작업: 단일 워크플로에서 여러 환경에 배포
4839 단어 webdevgithubtutorialproductivity
유용한 한 가지 특정 사용 사례는 최신 코드를 원격 시스템에 게시하는 지속적인 배포 워크플로입니다. 배포 대상은 업데이트를 수신하는 git 분기에 의해 결정됩니다.
예를 들어
dev
분기에 푸시하면 staging
환경에 배포하고 master
에 푸시하면 prod에 코드를 게시해야 합니다.다음은 단일 워크플로 yaml 파일에서 여러 환경에 배포하는 해결 방법입니다.
예제 워크플로우 파일
예를 들어 Azure 함수 앱을 배포하는 Github 작업을 살펴보겠습니다.
Azure에 코드를 게시하려면 함수 앱 이름과 게시 프로필(배포 키)이라는 두 가지 변수가 필요합니다.
각 환경에는 개별 Github 리포지토리 암호에 정의된 자체 게시 프로필이 있습니다.
다음은 워크플로 yaml의 관련 부분입니다. 전체를 보실 수 있습니다here .
먼저 커밋 시 배포해야 하는 분기에서만 워크플로를 트리거하려고 합니다.
on:
push:
branches:
- dev
- master
다음으로 워크플로 정의의 맨 처음에 현재 분기에 따라 올바른 환경 변수를 설정하기 위한 조건부 단계를 추가합니다.
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Set env vars (dev)
if: endsWith(github.ref, '/dev')
run: |
echo "AZURE_FUNCTIONAPP_NAME=azfunccdgh-dev-function-app" >> $GITHUB_ENV
echo "PUBLISH_PROFILE_VAR_NAME=AZURE_FUNCTIONAPP_PUBLISH_PROFILE_DEV" >> $GITHUB_ENV
- name: Set env vars (prod)
if: endsWith(github.ref, '/master')
run: |
echo "AZURE_FUNCTIONAPP_NAME=azfunccdgh-prod-function-app" >> $GITHUB_ENV
echo "PUBLISH_PROFILE_VAR_NAME=AZURE_FUNCTIONAPP_PUBLISH_PROFILE_PROD" >> $GITHUB_ENV
다음은 환경 간에 공유되는 단계입니다. 이들은 다중 환경 배포와 관련이 없으며 여기에 나열되지 않습니다. 제 경우에는 코드를 확인하고, 캐싱하고, 종속성을 설치하고, 프로젝트를 빌드합니다.
마지막으로 배포 단계에서는 위에서 설정한 환경 변수를 사용하여 코드를 올바른 대상 환경에 게시합니다.
- name: Run Azure Functions action
uses: Azure/functions-action@v1
id: fa
with:
app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
publish-profile: ${{ secrets[env.PUBLISH_PROFILE_VAR_NAME] }}
respect-funcignore: true
참조
...
여전히 이것은 내가 그다지 만족하지 않는 해킹이지만 환경당 전체 워크플로 파일의 복사본을 갖는 것보다 낫다고 생각합니다.
Github Actions에서 여러 환경에 배포하는 더 좋은 방법을 알고 있다면 알려주세요!
이러한 유형의 콘텐츠가 마음에 들면 Twitter에서 최신 업데이트를 확인할 수 있습니다.
Reference
이 문제에 관하여(Github 작업: 단일 워크플로에서 여러 환경에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/maxivanov/github-actions-deploy-to-multiple-environments-from-single-workflow-3in0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)