Hugo S3 배포
6821 단어 actionshackathon
내 워크플로우
Hugo에서 구성된 배포 대상을 사용하여 S3에 배포하는 새 GitHub Action을 만들었습니다. Hugo 배포에 대한 추가 정보는 official documentation 에서 확인할 수 있습니다.
왜요?
저는 개인 웹사이트에 Hugo를 사용하며 변경하거나 새 콘텐츠를 만들 때마다 로컬에서 사이트를 구축한 다음 배포해야 합니다. 하지만 더 이상은 아닙니다. 이제 커밋할 때마다 GitHub가 사이트를 구축하고 S3에 배포하고 내 CloudFront 배포를 무효화하여 새로운 콘텐츠를 즉시 사용할 수 있도록 합니다.
비슷한 조치가 있습니까?
예, 아니오. Marketplace를 탐색하고 해결 방법을 찾을 수 있었습니다. 예를 들어 Hugo 사이트를 구축하는 작업이 있고 출력 폴더(일반적으로
public
)를 S3와 같은 원격 대상에 업로드하여 수동으로 배포하는 작업이 있습니다. 그리고 CloudFront 배포를 무효화하는 작업이 있습니다.그러나 Hugo는 이미 이 모든 작업을 수행하는 메커니즘인
hugo deploy
명령을 제공합니다. 그러나 이 명령을 실행하고 구성된 배포를 실행하기 위해 찾을 수 있는 GitHub 작업이 없었습니다.이 조치는 이것을 해결합니다.
구현 세부정보
이를 위해 Docker 컨테이너 작업을 만들었습니다. 사용 가능한 설명서here .
도커파일
컨테이너를 정의하기 위해 Dockerfile을 사용합니다.
FROM pahud/awscli-v2:node-lts
RUN yum update -y && \
yum install -y curl jq
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
CloudFront 무효화를 수행할 수 있도록 이미 AWS CLI가 포함된 기본 이미지를 사용하고 있습니다. 하단 참조.
그런 다음 나중에 컨테이너에 Hugo를 설치하는 데 사용할
curl
및 jq
를 설치합니다.마지막으로 진입점을 지정합니다.
entrypoint.sh
설명서에 설명된 대로 실행 가능하게 만드는 것을 기억하는 것이 중요합니다.
chmod +x entrypoint.sh
진입점은 작업이 실행될 때 실행될 논리를 포함하는 것입니다.
먼저 오류가 있는 경우 파이프라인을 즉시 중단합니다.
set -eo pipefail
환경 변수로 전달하는 다른 매개변수를 확인합니다. 예:
if [ -z "$AWS_ACCESS_KEY_ID" ]; then
echo "error: AWS_ACCESS_KEY_ID is not set"
err=1
fi
이 작업에 대한 AWS 프로필을 생성합니다.
aws configure --profile hugo-s3 <<-EOF > /dev/null 2>&1
${AWS_ACCESS_KEY_ID}
${AWS_SECRET_ACCESS_KEY}
${AWS_REGION}
text
EOF
그런 다음 curl로 최신 버전을 가져와서 Hugo를 설치합니다(여기에 코드를 추가하지 않고 저장소에서 찾을 수 있음).
사이트를 구축하고 배포합니다.
hugo
hugo deploy
그리고 마지막으로 AWS 프로필을 정리합니다(컨테이너가 나중에 즉시 파괴되는 경우 실제로 필요하지는 않지만 나중에 정리하는 것이 좋습니다).
action.yml
작업에 대한 메타데이터를 포함합니다.
name: 'Hugo S3'
description: 'Deploy Hugo with an S3 target'
author: 'Pedro Lopez'
branding:
icon: 'book'
color: 'purple'
runs:
using: 'docker'
image: 'Dockerfile'
제출 범주
DIY 배포
Yaml 파일 또는 코드 링크
이 작업은 이제 GitHub Marketplace에서 사용할 수 있습니다.
https://github.com/marketplace/actions/hugo-s3 .
플랍카 / 휴고-s3-액션
S3 대상으로 구성된 `hugo deploy`를 사용하기 위한 GitHub 작업
휴고 S3 액션
Hugo 리포지토리에 구성된 S3 대상이 있는 경우 실행할 GitHub 작업hugo deploy
입니다.
용법
name: Hugo S3
on
push
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out master
uses: actions/checkout@master
- name: Deploy site
uses: plopcas/[email protected]
env:
AWS_REGION: 'eu-west-2'
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
구성
Settings / Secrets
아래의 저장소에서 다음 속성을 비밀로 설정합니다.
이름
필수의
설명
AWS_지역
예
AWS 지역
AWS_ACCESS_KEY_ID
예
배포를 실행할 수 있는 권한이 있는 액세스 키
AWS_SECRET_ACCESS_KEY
예
비밀 키
Hugo에서 S3에 대한 배포를 구성하는 방법에 대한 정보는 여기https://gohugo.io/hosting-and-deployment/hugo-deploy/에서 찾을 수 있습니다.
선택적으로 config.toml
파일에 CloudFront 배포 ID를 포함할 수 있습니다. 사용하는 키가 키를 무효화하고 이 경우 S3에 배포할 수 있는 권한을 부여할 수 있는지 확인하십시오.…
View on GitHub
또한 GitHub에서 공개적으로 사용할 수 있는 내 개인 사이트https://retrolog.io/에도 구성했습니다.
성공적인 실행의 예는 여기에서 볼 수 있습니다.
https://github.com/plopcas/retrolog/runs/1018289670 .
용법
name: Hugo S3
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out master
uses: actions/checkout@master
- name: Deploy site
uses: plopcas/[email protected]
env:
AWS_REGION: 'eu-west-2'
AWS_ACCESS_KEY_ID: ${{ secrets.ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.ACCESS_KEY_SECRET }}
추가 리소스/정보
GitHub 저장소https://github.com/plopcas/hugo-s3-action
새 작업을 사용하는 개인 사이트https://retrolog.io/
GitHub의 개인 사이트https://github.com/plopcas/retrolog
참조
GitHub 작업 설명서https://docs.github.com/en/actions/creating-actions/creating-a-docker-container-action
GitHub의 Hugohttps://github.com/gohugoio/hugo
AWS CLI Docker 기본 이미지https://hub.docker.com/r/pahud/awscli-v2
Reference
이 문제에 관하여(Hugo S3 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/plopcas/hugo-s3-deployments-34ni
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
name: Hugo S3
on
push
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out master
uses: actions/checkout@master
- name: Deploy site
uses: plopcas/[email protected]
env:
AWS_REGION: 'eu-west-2'
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
name: Hugo S3
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out master
uses: actions/checkout@master
- name: Deploy site
uses: plopcas/[email protected]
env:
AWS_REGION: 'eu-west-2'
AWS_ACCESS_KEY_ID: ${{ secrets.ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.ACCESS_KEY_SECRET }}
Reference
이 문제에 관하여(Hugo S3 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/plopcas/hugo-s3-deployments-34ni텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)