GitHub 작업 구성 – 람다에서 트윗하기
10625 단어 terraformgithubgithubactionsaws
가장 먼저 지정할 것은 파이프라인의 이름과 파이프라인이 실행되어야 하는 조건입니다.
name: Build and deploy lambda-cycles image
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
# Job definitions
지금은 누군가가 메인에 무엇인가를 넣을 때마다 그리고 누군가가 메인에 풀 리퀘스트를 열 때마다 파이프라인이 실행되기를 원합니다.
다음은 워크플로우의 일부인 작업을 정의하는 것입니다. 이 경우에는 두 가지가 있습니다. 하나는 애플리케이션을 준비하고 다른 하나는 애플리케이션을 게시하는 것입니다.
이미지 준비 – 빌드
작업을 정의하려면 작업의 일부를 형성하는
steps
를 지정해야 합니다. 개별적으로 보다 친숙한 이름과 작업이 실행되는 실행기 유형을 지정할 수 있습니다. 우리는 복잡한 것을 사용하지 않을 것이므로 ubuntu-latest
가 잘 작동합니다. build:
name: Build
runs-on: ubuntu-latest
steps:
다음으로 할 일은 작업의 일부인 단계를 지정하는 것입니다.
단계
새로 푸시된 코드의 복사본을 메인에 가져와야 합니다. 체크아웃 작업을 사용합니다.
- name: Checkout
uses: actions/checkout@v2
AWS와 상호 작용할 것이므로 러너*에서 자격 증명을 구성해야 합니다. Amazon은 이에 대한 작업을 제공합니다. 지정해야 하는 것은 자격 증명입니다(이전에 *repo에서 비밀로 설정함).
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-1
이 두 단계는 내가 pipenv를 사용하고 있기 때문에 구현에 따라 다르므로 Python을 설치한 다음 pipenv를 설치하고 종속성을 설치해야 합니다.
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install pipenv
run: |
pip install pipenv
pipenv install
다음 세 단계는 모두 람다 인스턴스를 만드는 데 사용할 이미지를 만드는 것입니다.
첫 번째 단계는
make container
를 호출합니다. 이전 게시물에서 빌드하고 lambda-cycles
로 태그를 지정하기 위해 추가한 유틸리티입니다. 두 번째 단계에서는 이 이미지를 압축 파일로 내보냅니다. 세 번째 단계는 새로 내보낸 Docker 이미지를 아티팩트로 저장하여 다음 작업에서 사용할 것입니다. - name: Build lambda-cycles image
run: make container
- name: Pack docker image
run: docker save lambda-cycles > ./lambda-cycles.tar
- name: Temporarily save Docker image and dependencies
uses: actions/upload-artifact@v2
with:
name: lambda-cycles-build
path: |
./shapefiles/
./requirements.txt
./lambda-cycles.tar
retention-days: 1
terraform을 사용하여 인프라 생성을 구성, 초기화하고 마지막으로 계획해야 합니다. 첫 번째 작업의 경우 Hashicorp는 사전 정의된 작업을 제공하며 다음 두 작업은 terraform 콘솔 도구를 사용하는 것으로 충분합니다.
- name: Set up terraform
uses: hashicorp/setup-terraform@v1
- name: Terraform init
run: terraform -chdir=terraform init
- name: Terraform plan
run: terraform -chdir=terraform plan
AWS에서 인프라 생성
GitHub Actions가 빌드 작업을 완료하면 배포 작업으로 이동할 수 있습니다. 이를 정의하기 위해(이름 및 러너 정보와 함께) 이 작업이
build
작업에 따라 다르며 매우 중요하게는 이 작업을 실행할 분기가 main
분기일 때만 실행되어야 함을 나타냅니다. , if
지침?을 참조하십시오. deploy:
name: Deploy
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/main'
steps:
단계
평소와 같이
actions/checkout@v2
가 포함된 코드 사본을 얻습니다. - name: Checkout
uses: actions/checkout@v2
자격 증명을 구성합니다. 각 작업은 다른 실행기에서 실행됩니다.
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-1
이전 작업에서 Docker 이미지 및 기타 종속성이 포함된
lambda-cycles-build
라는 아티팩트를 생성한 것을 기억하십니까? – 음, 이제 다운로드하고 그 후에 docker load
를 사용하여 이미지를 가져오고 docker에서 사용할 수 있도록 합니다. - name: Retrieve saved Docker image
uses: actions/download-artifact@v2
with:
name: lambda-cycles-build
path: ./
- name: Docker load
run: docker load < ./lambda-cycles.tar
마지막으로 terraform을 다시 구성하고 초기화하고 마지막으로 계획된 변경 사항을 적용합니다. 사람이 개입할 필요 없이 변경 사항이 자동으로 승인되도록
-auto-approve
옵션을 사용하고 있습니다. - name: Set up terraform
uses: hashicorp/setup-terraform@v1
- name: Terraform init
run: terraform -chdir=terraform init
- name: Terraform apply
run: terraform -chdir=terraform apply -auto-approve
이것으로 GitHub에서 람다를 자동으로 빌드하고 배포하는 방법을 설명하는 6부작 시리즈를 마칩니다.
이 게시물이 끝날 때까지 how the repository looks like입니다.
뭔가 명확하지 않거나 오타를 발견한 경우 Twitter에서 저를 찾아 이 게시물에 대해 질문할 수 있습니다. 이 시리즈의 최종 코드는 GitHub이고 자전거 네트워크 상태를 트윗하는 계정은 입니다.
Reference
이 문제에 관하여(GitHub 작업 구성 – 람다에서 트윗하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/feregri_no/configuring-github-actions-tweeting-from-a-lambda-bii텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)