안녕하세요 상훈입니다.

Github Action 기능을 사용하여 Ubuntu 서버에 소스를 push 했을 때 자동으로 build, deploy 를 하는 방법을 기록하도록 하겠습니다.

 

환경 🚩

Ubuntu 18.04
Code: Spring boot (Java, jdk11, gradle)
Action 동작 시기 : push 후
동작 방법: ssh

 

목차 ✅

1. Server 에서 ssh private_key 발급
2. GitHub Action 작성
3. GitHub secret 변수 설정
4. Activate

그 다음에는 Github Action 코드를 작성할건데요,

Actions - New workflow 를 눌러서 새로운 workflow를 생성합니다.
set up a workflow yourtself 를 눌러서 진행

 

set up a workflow yourtself 를 눌러서 진행하거나, 아래 MarketPlace 에 이미 작성되어져 있는 초안을 가져와도 무방합니다.

 

set up 되어있는 marketplace!

 

*.yml 이라는 파일 형식을 지키고 원하는대로 만들어줍니다. (파일명이라 원하는대로 만들어도 무방합니다.)

main.yml !

name: Gradle Package

on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-18.04  #build 하는 환경 설정
    permissions:
      contents: read
      packages: write

    steps:
    - uses: actions/checkout@v3        
    - name: Set up JDK 11        
      uses: actions/setup-java@v3            
      with:
        java-version: '11'              #java 버전 설정
        distribution: 'temurin'
        server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
        settings-path: ${{ github.workspace }} # location for the settings.xml file
        
    #grant : 권한 할당을 통하여 gradlew 명령어를 통해 build 가능하도록 설정
    - name: Run chmod to make gradlew executable
      run: chmod +x ./gradlew
      
    #build : 위에서 권한을 준 명령어로 build
    - name: Build with Gradle
      run: ./gradlew build
      
    #전송할 파일을 담을 디렉토리 생성
    - name: Make Directory for deliver
      run: mkdir deploy

    #Jar 파일을 deploy 디렉토리에 Copy
    - name: Copy Jar
      run: cp ./build/libs/*.jar ./deploy/
      
    #서버에 Deploy 
    - name: Deploy to server
      env:
          PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}        # private key
          HOST: ${{ secrets.SERVER_HOST }}                   # server host (ip addr)
          USERNAME: ${{ secrets.SERVER_USERNAME }}           # username (로그인할 id)
          PORT: ${{ secrets.SERVER_PORT }}                   # port (포트포워딩한 포트번호)
          #password: ${{ secrets.NPC_DEV_SERVER_PASSWORD }}  # 비밀번호설정했을 경우 작성(저는 enter로 뺐습니다.)
      run: |
          echo "$PRIVATE_KEY" > private_key.pem              # private key 값-> private_key.pem 로 생성
          chmod 400 private_key.pem                          # 권한 설정 600이상일경우 안되는 경우가 있음
          
          # scp: 서버간 파일전송 명령어 : 위치= /var/www/html/test에 넣었는데, 원하는 경로로 변경해주세요
          scp -i private_key.pem -P $PORT -o StrictHostKeyChecking=no -r build/libs/*.jar $USERNAME@$HOST:/var/www/html/test/
          
          # ssh 통해서 서버에 접속하여 bash 명령어 실행, 마찬가지로 위에서 변경한 경로와 일치시켜주세요
          ssh -i private_key.pem -p $PORT -o StrictHostKeyChecking=no $USERNAME@$HOST 'bash -s' <<- EOF
            pgrep java | xargs kill -9 || true
            nohup java -jar /var/www/html/test/*.jar > /dev/null 2>&1 & disown  
            exit
          EOF
          rm -f private_key.pem   #작업완료 후 pem 삭제

env: 의 내용은 github action 의  [3. GitHub secret 변수 설정] 에서 설정할 것입니다.

각각의 내용의 주석을 꼼꼼히 읽어주시고, 작성 후 create commit 을 해서 remote 에 넣어주세요!

파일 생성 완료!

.yml 파일 생성 완료!

 

3. GitHub secret 변수 설정 🔨

위에서 작성한 내용중 env : 에서 써놓은 key 값들을 작성하려고 합니다.

분리하는 이유: 누군가 제 repository 에 들어와서 모든  값들을 yml 파일로 확인할 수 있기 때문에 github 의 secret 기능을 설정. (환경변수 설정과 동일)

settings - secrets and variables - actions 탭에 들어갑니다.

[ Settings - Secrets and variables - Actions ] 탭에 들어갑니다.

 

New repository secret 을 눌러 새로운 키를 생성한다고 말해줍니다.

새로운 키 생성

json 형태의 Key: value 라고 생각하면 간단합니다.

이녀석들을 작성합니다.

여기서 다른것들은 그냥 작성하면 되는데, PRIVATE_KEY 는 양식이 있었습니다.

함께 복사해서 붙여넣기해야하는 항목

이미지처럼 BEGIN~ 에 해당하는 내용을 입력해서 넣어야합니다. (그래야 저같은 삽질을 하지 않을 수 있습니다 ㅎㅎ)

ssh-gen 을 하게되면 public 과 private  Key가 각각 생성되는데, .pub 자가 붙지 않은 것이 private key 입니다. 참고 바랍니다.

 

4. Activate ✨

그리고 이제 대망의 action을 활성화 해본다면?

 

끝입니다.

제가 고생한 흔적

실패의 연속...

 

반응형

안녕하세요 상훈입니다.

 

깃혀브를 이용해서 아래와 같이 프로젝트 2개를 하나의 깃 Repository에 넣고싶은데, 안되고 있었습니다.

결과 이미지

그런데 아무리해도 git add 가 안돼서 왜그러지 싶었습니다.

다른 경우일 수도 있지만, 제 경우에는 올릴 02-nuxt.js 라는 폴더 내에 .git 이라는 깃 파일이 있었기 때문이었습니다.

.git file was here!

.git 폴더는 repository에 연결할떄 필요한 폴더이기 때문에, 이곳에서는 필요가 없는 폴더입니다.

> 프로젝트를 생성할때 같이 생성되었습니다.

bash 를 사용하여 지우도록하겠습니다.

$ rm -r .git

삭제할건지 물어봅니다.

재확인을 통해, 이제 정상적으로 삭제가되었고 git 관련 파일이 없는것을 확인하였습니다.

남은건 add, commit, 그리고 push 뿐이죠. 

성공하였습니다.

반응형

 

깃허브를 이용하여 특정 Repository의 Collaborator로 지정되었을 때, 직접 url에 작성하는게 아니라 클릭 몇번으로 들어가는 방법입니다.

* Collaborator 를 승인하였는지 확인하고 진행해주세요. *

1. GitHub에 로그인 하고 본인 프로필 아이콘 - Settings 로 들어가주세요.

 

2. Repository를 클릭해주세요

 

 

3. Collborator로 지정된 Repository들을 살펴보실 수 있습니다.

 

 

이상입니다.

 

* 도움이 되셨다면 광고 한 번 클릭해주세요. 블로그 운영에 큰 힘이 됩니다. *

감사합니다.

반응형
이곳에 보시면 git access token을 생성하는 방법이 자세히 작성되어져 있으니 확인 바랍니다.
 

Creating a personal access token - GitHub Docs

Note: If you use GitHub CLI to authenticate to GitHub on the command line, you can skip generating a personal access token and authenticate via the web browser instead. For more information about authenticating with GitHub CLI, see gh auth login. Personal

docs.github.com

 

21년도 중순부터 github에서는 비밀번호 대신, 이 accesstoken을 발급받아 사용하는 방식으로 전환해오려는 노오력을 하고 있다고 합니다.

access-token 만드는 법은 간단합니다.

■ 순서

본인의 계정 아이콘에서 settings
-> <Developer settings>
-> OAuth Apps
-> Personal access tokens
-> Generate new token
-> 만료일자 설정
-> check항목 설정
-> Generate Token - 비밀번호 복사, 저장 등

❗ 비밀번호는 두 번 다시 볼 수 없으니 복사 후 저장하시길 바랍니다.

블록체인 지갑의 비밀번호와 유사하게 암호화된 비밀번호를 생성해주고, 이를 저장하는 방식입니다.

만약 비밀번호를 잊어버리시거나 잃어버리셨으면, 새로 access-token을 발급받아주세요!

 

반응형

 

 

깃 허브(Github)에 있는 본인의 레파지토리(Repository)연결하는 방법에 대해 포스팅하겠습니다.
순서대로 해주세요

 

본인의 깃 레파지토리 주소

 

 

빈 폴더 한곳에서 진행해주세요. (git과 연결되어있는 폴더 내부지양해주세요)

1. git init
2. git remote add origin "git repository url"

# repository와 연결이 잘되었는지 확인
3. git remote -v
4. git pull

# git repository에 이미 데이터 자체가 있다면,
5. git clone "git repository url"

 

만약 가장 처음 등록하여 개인 정보 자체가 없을 경우 개인정보를 등록해줍니다.

$ git config --global user.email "깃허브 이메일주소"
$ git config --global user.name "깃허브 이름"

 

그리고 본인이 원하는 내용 한개를 추가해서 add 하고 commit을 해주면 된다.

 

■ 이 글을 쓰게 된 이유

지난번에 git pull을 통해 repository와 연동하려고 하였는데 실패하고, 해당 내용이 모두 분실되어 다시 restore을 진행하고,
전체적인 폴더 구조를 변경하는 번거로움(분노)이 있었다. 

항상 먼저 작업을 할 때에는

▶ 하위 git 경로와 겹치지 않게,
해당 branch clone을 우선적으로 진행해주어 최신화를 해주는 것을 잊지 말도록 하자.


 

 

참고 블로그

 

GitHub 원격 저장소와 로컬 Git 저장소 연동하는 방법

GitHub은 원격 저장소를 호스팅해주는 서비스로, 본격적인 코드 작업을 하려면 GitHub의 저장소와 로컬 Git 저장소를 연동해야합니다. 이 글에서는 원격 저장소와 로컬 저장소를 연동하는 방법들을

www.lainyzine.com

 

 

반응형

깃허브(Git Hub)에서 코드가져오는 방법은 다양합니다.

1. 다운로드
2. 명령어 
3. etc

사실 여러 모든 내용이 전부 "Clone"을 하는 또다른 형태입니다.

그래서 근본인 clone 명령어만 수기하도록 하겠습니다.

$ git clone "repository url"

 

아주 간단합니다.

 

반응형

 

 

 

깃 명령어로 코드 파일들을 저장·게시 해놓으려고 했는데 push 하니까 해당 에러가 발생...

 

github url에 한줄 띄어쓰기가 되어있다고 하는 것 봐서는 정규표현식이 작용된 것으로 생각 된다.

 

구글링에도 해당 내용은 없음 /R 때문인가?

 

근데 어떻게 해야하나 ;;

 

일단 업무 먼저 하고 해당 내용 해결해야겠음.

 

 

$ git push origin master
warning: url contains a newline in its path component: https://github.com/Hoon-Hub/REACT-JS.git
/
fatal: credential url cannot be parsed: https://github.com/Hoon-Hub/REACT-JS.git
/

반응형

+ Recent posts