Go제 도구를 GiitHub Contaainer Registry에 배치하여 GiitHub Action으로 공개
7658 단어 DockerGitHubGoGitHub Actionstech
개요
GiitHub Action으로 Go가 만든 도구를 활용하고 싶을 때 Docker 컨테이너 Action으로 공개하고 사용 전 프로세스를 정리했다.
그나저나 지트 허브 액션을 직접 만들고 싶은 동기라면 일부러 Go로 쓰고 Docker를 컨테이너화하는 것보다 자바스크립트로 직접 액션을 만드는 것이 빠르고 수월하다.
동작에 이미 있는 Go 자제 도구를 사용한다면 탓하지 마세요.
물줄기
기본 절차는 다음과 같다.
Go 제조 도구 Docker화
에서 이미 설명했으니 자세한 상황은 놓치지 마세요.
FROM golang:alpine AS build-stage
ADD . /work
WORKDIR /work
RUN go build -o entrypoint .
FROM alpine:latest
COPY /work/entrypoint /usr/local/bin/entrypoint
ENTRYPOINT ["/usr/local/bin/entrypoint"]
이런 Docker를 배치하면 docker build -t hoge
docker run hoge
의 Docker 이미지를 만들 수 있다.GiitHub Container Registry에 Docker 배치
Docker Hub에 올릴 수도 있지만 Docker Hub은 트래픽 제한이 커졌으니 어쨌든 최근 공개된 GiitHub Contaainer Registry는 GiitHub Actions를 통해 올리도록 하겠습니다.
다음 동작을 쓰면 됩니다.
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: |
ghcr.io/${{ github.repository }}:latest
ghcr.io/${{ github.repository }}:${{ steps.get_tag.outputs.TAG }}
Docker Build를 위한 준비Set up Docker Buildx
와 GiitHub Container RegistryLogin to GitHub Docker Container Registry
에 로그인하여 Build &Push를 진행할 뿐입니다.[1] 지금 GiitHub Contaainer Registry에 로그인하려면 특별한 Private Access Token, https://github.com/settings/tokens이 Token을 준비하고 이 창고의 Secrets에 "
CR_PAT
"라는 이름으로 등록해야 한다.사용 권한
write:packages
Upload packages to github package registry read:packages
Download packages from github package registry delete:packages
Delete packages from github package registry세 개가 필요합니다.
delete:packages
은 필요 없을 것 같은데 왜 푸시 때 권한 부족으로 실패했는지(11월 8일 현재) 몰라서 지금 쓰고 있어요.공개 용기
(이 절차는 상황에 따라 필요하지 않을 수 있습니다.)
이어 액션 쪽에서 사용하기 위해 이 컨테이너를 공개한다.
다만, GiitHub Container Registry가 아직 Public Beta에 불과하기 때문에 이 방법은 좀 불안정하다.
매뉴얼'컨테이너 이미지의 액세스 제어 및 가시성 설정에도 이미지 누락, 오류 등이 있어 이상하다.
메뉴판 어디를 클릭하면 이런 도선이 자주 변한다.
그래서 지금 아래처럼 URL을 직접 지정하는 것이 매우 빠르다.
https://github.com/users/<OWNER>/packages/container/package/<REPO-NAME>/settings
여기
Make Public
면 공개할 수 있다.동작화
이렇게 되면 콘테이너 자체는 잘하지만, 액션에 올리기까지는 시간이 조금 더 걸린다.
액션으로 공개되면 이런 리포지토리를 차단하는 게 좋다.
필요한 물건이 많지 않다.
자세한 내용은 관영 매뉴얼을 보면 된다.
컨테이너 작업 작성
그리고 앞서 Docker file에 공개된 GiitHub Contaainer Registry 이미지를 참조하면 됩니다.
FROM ghcr.io/<OWNER>/<REPO-NAME>:v*.*.*
ADD ./entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
최후
이런 형태로 졸작git-vertag을 액션화했다.
git-vertag-action
예를 들어 보세요.
각주
그나저나 GiitHub Contaainer Registry와 일반 Repository는 분리된 것 같아서 필요 없을 것 같다
${{ github.repository }}
, 적당한 이름↩︎Reference
이 문제에 관하여(Go제 도구를 GiitHub Contaainer Registry에 배치하여 GiitHub Action으로 공개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kyoh86/articles/b7f40cbfaf8bf6963854텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)