My-Books-projects / etc

0 stars 1 forks source link

CI/CD git hub action #119

Open minsu11 opened 8 months ago

minsu11 commented 8 months ago

인스턴스 생성 이미지: Ubuntu Server 20.04.6 LTS 인스턴스 정보 이름: {팀별 설정} 타입: t2 키 페어 생성 후 꼭 다운 블록 스토리지 타입: SSD 플로팅 IP 설정: 예 접속 후 사용자 계정 생성 및 도커 설치 다운받은 키페어 파일 위치로 이동후 “chmod 400 *.pem” 으로 권한수정

“ssh -i testkey-jh.pem [ubuntu@133.186.220.80](mailto:ubuntu@133.186.220.80)”로 root 로그인

“sudo adduser (생성할 계정명 ex:testuser)” → 비밀번호 입력 → 엔터→엔터→엔터

터미널에서 ssh-keygen -t rsa -f ~/desktop/key/(생성할 사용자 키명)

“sudo login testuser” → 비밀번호 입력 → 로그인 후

mkdir .ssh → chmod 700 .ssh cd .ssh → vi authorized_keys (내부에 keygen으로 생성한 cat (키명).pub 열어서 내용 저장) chmod 644 authorized_keys testuser 로그인은 앞으로 “ssh -i testuserkey [testuser@133.186.220.80](mailto:testuser@133.186.220.80)

docker 설치 (root계정에서)

sudo apt-get update

sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install -y docker-ce docker-ce-cli containerd.io “sudo usermod -aG docker testuser “ testuser에 docker 권한 부여 user계정에서 “docker version”으로 테스트 프로젝트 최상단 디렉토리에 Dockerfile 파일 생성 후

FROM eclipse-temurin:11
ARG JAR_FILE=./target/*.jar COPY ${JAR_FILE} app.jar

ENTRYPOINT ["java", "-jar", "app.jar"] Git Actions를 이용한 CI/CD git프로젝트에서 actions 이동 - java with maven configure하면 yml파일 생성됨

name: Docker Image CI

on: push: branches: [ "main" ] pull_request: branches: [ "main" ]

jobs:

build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

jdk 11 세팅

- name: Set up JDK 11
  uses: actions/setup-java@v3
  with:
    java-version: '11'
    distribution: 'temurin'
    cache: maven

패키징

- name: Build with Maven
  run: mvn -B package --file pom.xml

도커 로그인

- name: Log in to Docker Hub
  uses: docker/login-action@v2
  with:
    username: ${{ secrets.DOCKER_USERNAME }}
    password: ${{ secrets.DOCKER_PASSWORD }}

도커 이미지 빌드

- name: Build the Docker image
  run: docker build -t {이미지 경로} .

이미지 띄우기

- name: push Docker image
  run: docker push {이미지 경로}

쉘 스크립트 실행

- name: execute shell script
  uses: appleboy/ssh-action@master
  with:
    host: ${{ secrets.SSH_IP }}         # 인스턴스 플로팅 ip
    username: ${{ secrets.SSH_ID }}     # user Id
    key: ${{ secrets.SSH_KEY }}         # user 개인키
    port: ${{ secrets.SSH_PORT }}       # ssh 포트 = 22
    script_stop: true
    script: "./{실행시킬 shell 파일명}"

$부분은 git repo settings - secrets and variables - actions -new repository secrets Name = DOCKER_USERNAME Secret* = 도커허브 계정 입력 도커허브 로그인후 repo하나 만들고 {이미지 경로} 에 도커 repo경로 넣기. ex) newjaehun/testrepo 최상단폴더에서 vi startup.sh

docker pull newjaehun/testrepo

docker run -d --name test -p 8080:8080 newjaehun/testrepo chmod +x [startup.sh](http://startup.sh/) {실행시킬 shell 파일명}에 “./[startup.sh](http://startup.sh/)”](http://startup.xn--sh)-9o0a/) 입력 Github - repository - Actions -build 성공 확인

Jenkins를 이용한 CI/CD github repo settings

webhooks

http://133.186.241.167:8080/github-webhook/

applicaton/json

just the push event

active

deploy keys - add new - 제목 아무거나, 내용에 (keygen으로 생성한).pub 내용 복붙