Github의 Actions로 Neto 개발 워크플로 개선하기

4507 단어 gitworkflowgithubneto

목표



궁극적으로 Neto 사이트에서 작업할 때 워크플로를 개선합니다.

주요 목표는 다음과 같습니다.
  • 현재 Neto 테마의 스테이징 버전을 만듭니다.
  • 명령줄을 통해 스테이징 및 프로덕션 테마 모두에 쉽게 배포할 수 있습니다. 개발자와 클라이언트가 사이트 테마의 스테이징 버전을 쉽게 볼 수 있습니다.
  • 하위 버전 관리를 위해 Git을 구현합니다.

  • 우리가 만들고 있는 워크플로:


  • 개발자가 마스터에 대해 새 스테이징 분기를 만듭니다. 코딩 작업을 수행하고 Github에 스테이징 분기를 푸시하고 Github Actions가 Neto 서버의 스테이징 테마에 배포합니다.
  • 클라이언트/이해관계자는 스테이징 테마에 대해 테스트합니다(Neto의 경우 사이트 URL에 ?nview=my-theme-stg를 추가하기만 하면 됨).
  • 작업이 승인되면 개발자는 스테이지를 마스터로 병합합니다. Github Actions는 라이브 테마에 변경 사항을 자동으로 배포합니다.

  • Github 작업 설정



    2개의 Github Action 파일이 필요합니다. 1은 프로덕션 배포용이고 다른 하나는 스테이징 배포용입니다.

    1단계: .yml 파일 만들기



    로컬로 리포지토리에서 .yml.github/workflows/main.yml 2개의 새.github/workflows/stg.workflow.yml 파일(필요한 경우 폴더 구조)을 만듭니다. 여기에는 Github 작업에 대한 코드가 들어 있습니다.

    main.yml 파일에서

    우리는 이 Action: FTP Deploy 을 사용할 것입니다. 사용하려면 다음 코드를 main.yml 파일에 붙여넣기만 하면 됩니다.

    on:
      push:
        branches:
          - master
    name: Publish Website
    jobs:
      FTP-Deploy-Action:
        name: FTP-Deploy-Action
        runs-on: ubuntu-latest
        steps:
        - uses: actions/[email protected]
          with:
            fetch-depth: 2
        - name: FTP-Deploy-Action
          uses: SamKirkland/[email protected]
          with:
            ftp-server: sftp://sftp.neto.com.au:1022/httpdocs/assets/themes/my-theme
            ftp-username: ${{ secrets.FTP_USERNAME }}
            ftp-password: ${{ secrets.FTP_PASSWORD }}
            local-dir: src/
            git-ftp-args: --insecure
    


    따라서 주의해야 할 몇 가지 사항은 다음과 같습니다.

    선:

    on:
      push:
        branches:
          - master
    


    아래 jobs:가 언제 실행되는지 Github에 알려주세요. 이 경우 리포지토리의 마스터 브랜치에 대한 푸시가 있을 때 작업이 실행됩니다.

    위 코드의 다음 섹션은 FTP-Deploy-Action 작업입니다.Neto(및 실제로 대부분의 다른 FTP 응용 프로그램)의 경우 이는 동일하게 유지될 수 있습니다. 그러나 몇 가지 작은 사항을 업데이트해야 합니다.
    ftp-server: sftp://sftp.neto.com.au:1022/httpdocs/assets/themes/my-theme/
    이 줄은 서버 이름뿐 아니라 전송 프로토콜( sftp:// ), 포트 번호( :1022 ) 및 위치 디렉터리( /httpdocs/assets/themes/ )를 나타냅니다.Neto의 경우 위치 디렉토리 경로만 변경하면 됩니다.
    local-dir: src/
    이것은 분명히 로컬 디렉토리를 나타냅니다. 제 경우에는 저장소 경로에 많은 것들이 있으며 src 디렉토리에만 해당 항목을 배포하고 싶습니다.

    stg.workflow.yml 파일에서

    main.yml 파일의 내용을 stg.workflow.yml에 복사하여 스테이징 배포를 위한 작업 파일을 만듭니다. 우리는 2가지를 변경할 것입니다:

    작업이 실행되는 시점을 스테이지 분기로 푸시할 때로 변경합니다.

    on:
      push:
        branches:
          - stage
    


    그리고 대상 디렉토리를 스테이징 테마로 변경합니다.
    ftp-server: sftp://sftp.neto.com.au:1022/httpdocs/assets/themes/my-theme-stg
    이 파일을 원격 저장소로 푸시합니다.
    ftp-passwordftp-username 에 대해서는 다음 단계에서 다룰 것입니다.

    2단계: FTP 로그인 및 비밀번호를 저장하기 위해 Github에 Secret을 설정합니다.



    비밀을 사용하면 FTP 계정에 대한 사용자 이름 및 암호와 같은 민감한 정보를 저장할 수 있습니다. 추가하려면 저장소의 설정 페이지로 이동한 다음 비밀 탭으로 이동하십시오. 페이지 오른쪽 상단의 New Secret을 누르고 이름(예: FTP_USERNAME )과 값을 지정하기만 하면 됩니다. Secret당 하나의 이름과 값 쌍만 있음을 참고하십시오.

    3단계: 테스트



    나는 단순히 내 test.txt 디렉토리에 더미 src/ 파일을 생성하고 마스터에 푸시했습니다. 작업이 저장소의 작업 탭을 실행하는 것을 볼 수 있습니다. 액션의 이름을 클릭하면 라이브 로그를 볼 수 있습니다. 온전성 검사를 위해 Filezilla를 사용하여 이 새test.txt 파일이 원격 서버에 나타나는지 확인했습니다.

    나는 스테이지 분기에 대해 똑같은 테스트를 반복했습니다.

    FTP Deploy를 처음 실행할 때 모든 항목을 인덱싱하는 데 1~2분이 소요될 수 있습니다.

    마스터에 단계를 병합하면 마스터에 배포도 트리거됩니다.

    추가 항목(선택 사항)



    이제 마스터로 푸시하면 라이브 서버에 배포되므로 이것이 개발자가 실제로 원하는 작업인지 확인하는 방법이 필요할 수 있습니다(우연히 배포하고 싶지 않음).

    아래에 Protected Branches 스크립트를 추가하여 사용자에게 배포 여부를 확인하도록 요청할 수 있습니다. 이것은 .git/hooks/pre-push 파일에 있습니다.
    Are you sure you want to push to master? (y/n):
    BRANCH=`git rev-parse --abbrev-ref HEAD`
    PROTECTED_BRANCHES="^(master|dev|release-*|patch-*)"
    
    if [[ "$BRANCH" =~ $PROTECTED_BRANCHES ]]; then
      read -p "Are you sure you want to push to \"$BRANCH\" ? (y/n): " -n 1 -r < /dev/tty
      echo
      if [[ $REPLY =~ ^[Yy]$ ]]; then
        exit 0
      fi
      echo "Push aborted."
      exit 1
    fi
    exit 0
    

    좋은 웹페이지 즐겨찾기