재미를 위해 Argo Tunnels 및 컨테이너로 간단한 포트폴리오 배포 🚀 - 2부
이제 Cloudflare Argo 터널과 Gitlab 러너가 실행 중이어야 합니다.
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31f46243cbe9 docker.io/gitlab/gitlab-runner:alpine run --user=gitlab... 8 days ago Up About an hour ago gitlab-runner
$ systemctl --user status cloudflared
Loaded: loaded (/home/leon/.config/systemd/user/cloudflared.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-10-10 14:51:26 IST; 1h 8min ago
Gitlab CI/CD가 작동하려면 프로젝트의 루트 폴더에
.gitlab-ci.yml
를 추가해야 합니다. 이것은 주요 성분과 같습니다.이것이 내
.gitlab-ci.yml
의 모습입니다.stages:
- publish
- deploy
variables:
TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA
# Begin building the image
publish:
image: quay.io/podman/stable:latest
stage: publish
tags:
- publish
script:
- podman build -t $TAG_COMMIT -t $TAG_LATEST .
- podman login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
- podman push $TAG_COMMIT
- podman push $TAG_LATEST
# Deployment
deploy:
image: alpine:latest
stage: deploy
tags:
- deployment
before_script:
- apk update && apk add openssh-client
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- eval $(ssh-agent -s)
- echo "${PK_KEY}" |tr -d '\r' | ssh-add -
- ssh-keyscan $SERVER_IP
script:
- ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
- ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman pull $TAG_COMMIT"
- ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman container rm -f $WEB_NAME || true"
- ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman run -d -p 8080:80 --name $WEB_NAME $TAG_COMMIT"
environment:
name: production
url: https://portfolio.afro-coder.com/
# Run only on the main branch
only:
- main
이제 여기에서 몇 가지 중요한 변수에 대해 살펴보겠습니다. 이러한 변수는 Gitlab 저장소(개별 저장소) => 설정 => CI/CD => 변수에서 정의해야 합니다.
Make sure you mask the important and sensitive variables, and protect them so that they do not show up in your logs,
your username also needs to be longer than 4 chars to mask it and also meet their RegEx criteria
ssh-keygen
를 사용하여 키를 생성하고 공개 키를 .ssh/authorized_keys
파일Gitlab 변수에 대한 추가 설명서를 찾을 수 있습니다here.
이제 이 파일을 저장소에 커밋하십시오.
git add .gitlab-ci.yml
git commit -s -m "Added Gitlab CI"
git push -u
If your gitlab CI/CD doesn't run after pushing it to the main branch re-check the branch name
and the tags you've given your runner, they should match the one in the .gitlab-ci.yml file
빌드가 성공적으로 진행되면 다음이 표시되어야 합니다.
파이프라인 빌드 후 컨테이너는 호스트에서 실행되어야 합니다.
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31646243cbe9 docker.io/gitlab/gitlab-runner:alpine run --user=gitlab... 8 days ago Up 16 minutes ago gitlab-runner-priv
4930b205caa1 registry.gitlab.com/leon9923/new-portfolio/main:c2054av4 httpd-foreground 15 minutes ago Up 15 minutes ago 0.0.0.0:8080->80/tcp portfolio.afro-coder.com
이제 자체 호스팅 루트리스(그러나 올바르게 보호되지 않으면 여전히 안전하지 않습니다.) gitlab CI/CD with podman 및 Argo Tunnels가 있고 작동합니다!
내 다음 목표는 도커 인터페이스 없이 podman을 사용하는 gitlab용 사용자 지정 실행기를 만드는 것입니다. 읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(재미를 위해 Argo Tunnels 및 컨테이너로 간단한 포트폴리오 배포 🚀 - 2부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mediocredevops/deploying-a-simple-portfolio-with-argo-tunnels-and-containers-for-fun-part-2-2n8l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)