Github Action 테스트의 경우 간단하게 Docker 이미지를 만들어서 workflow를 작성하는 것에 대해 테스트를 진행하였다.
FROM nginx:alpine
RUN echo "Hello, dongdorrong~?" > /usr/share/nginx/html/index.html ; \
chmod +x run.sh ;\
apk update && apk upgrade --ignore alpine-baselayout
GitHub Container Registry에 접근하기 위해서는 액세스 토큰이 필요하다.
https://github.com/settings/tokens 에서 토큰을 만들 수 있고, 해당 토큰을 임의 파일에 삽입하고 명령을 수행하면 이미지를 푸시할 수 있다.
# cat password.txt | docker login https://ghcr.io -u <사용자 ID> --password-stdin
Login Succeeded
# docker tag nginx-test ghcr.io/dongdorrong/nginx-dongdorrong:0.1
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-test latest 0c51660caa3a 3 hours ago 45.9MB
ghcr.io/dongdorrong/nginx-dongdorrong 0.1 0c51660caa3a 3 hours ago 45.9MB
# docker push ghcr.io/dongdorrong/nginx-dongdorrong:0.1
80c32fbe8536: Pushed
9e173cdce044: Pushed
f2d47996fdfa: Pushed
c23f26e962bd: Pushed
0511ab7e6edc: Pushed
ec7e4a91c33b: Pushed
1fee4bd55a85: Pushed
ded7a220bb05: Pushed
0.1: digest: sha256:971b6b281843cb9418462bc5f870d21267bb04f3c07107b0831c7c5029e2ad38 size: 1992
master 브랜치에 적용하면 바로 작동할 수 있도록 조건을 상단에 적용하였다.
workflow 작성하고 merge 했을 때 상태를 확인해보자.
name : ci
on:
push:
branch:
- master
jobs:
image-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV
- 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
id: docker_build
with:
context: .
file: ./eks_github/Dockerfile
push: true
tags: |
ghcr.io/${{ github.repository_owner }}/nginx-dongzz:latest
---
변경된 태그로 GitHub Container Registry에 올라간 것을 확인했다.
https://devocean.sk.com/blog/techBoardDetail.do?ID=163350
https://www.daleseo.com/github-actions-basics
https://blog.outsider.ne.kr/1531