# Github Action
- ์ํํธ์จ์ด workflow ์๋ํ ๋๊ตฌ
- Workflow : ์ฌ๋ฌ๊ฐ์ Job๋ก ๊ตฌ์ฑ๋๋ ํ๋ก์ธ์ค
- Event : Workflow๋ฅผ ์คํํ๋ ๊ท์น (ํน์ ์๊ฐ ๋ฐ๋ณต)
- Job : ์ฌ๋ฌ Step์ ๊ตฌ์ฑํด์ ์คํ
- Step : action์ ์คํ (ssh-action, scp-action ๋ฑ)
# Repository์ Github Action ์ถ๊ฐ
- Github Repository > Actions > Java With Gradle > Configure
- root ํด๋์์ /.github/workflows/gradle.yml ์์ฑ > Start commit (๊ธฐ๋ณธ ์์ฑ์ build๊น์ง ๋จ)
- GitAction Flow:
JDK Setup > Build > Upload Jar(upload-artifact) > Kill Service(ssh-action) > Download Jar(download-artifact) > Upload File to Server (scp-action) > Run Jar (ssh-action)
JDK Setup
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- Build
- name: Build with Gradle
uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
with:
arguments: build
- Upload Jar(upload-artifact)
- name: Upload Jar
uses: actions/upload-artifact@v2
with:
name: spring-boot
path: build/libs/spring-0.0.1-SNAPSHOT.jar
retention-days: 1
- run: |
rm -f ~/.gradle/caches/modules-2/modules-2.lock
rm -f ~/.gradle/caches/modules-2/gc.properties
name: Cleanup Gradle Cache
- Kill Service(ssh-action)
- uses: appleboy/ssh-action@v0.1.4
name: Kill Spring Boot Application
with:
host: ${{ secrets.SERV_HOST }}
username: ${{ secrets.SERV_USERNAME }}
password: ${{ secrets.SERV_KEY }}
script: |
if [ -e "pid.file" ]; then
kill $(cat ./pid.file)
fi
- Download Jar(download-artifact)
- name: Download Jar
uses: actions/download-artifact@v2
with:
name: spring-boot
- Upload File to Server (scp-action)
- name: SCP Files
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SERV_HOST }}
username: ${{ secrets.SERV_USERNAME }}
password: ${{ secrets.SERV_KEY }}
source: "spring-0.0.1-SNAPSHOT.jar"
target: "build"
rm: true
- Run Jar (ssh-action)
- uses: appleboy/ssh-action@v0.1.4
name: Run the application
with:
host: ${{ secrets.SERV_HOST }}
username: ${{ secrets.SERV_USERNAME }}
password: ${{ secrets.SERV_KEY }}
script: |
nohup java -jar build/spring-0.0.1-SNAPSHOT.jar > app.out 2> app.err < /dev/null &
nohup echo $! > ./pid.file &
secrets.SERV_HOST ๋ฑ์ ์ค์ ์ Github Repository > Settings > Secrets์์ ์ถ๊ฐ (workflow๋ด์ ์ค์ ์ด ๊ฐ๋ฅํ์ง๋ง ๋ณด์๋ฌธ์ ๊ฐ ์์ ์ ์์)
Github Repository > Settings > Actions > ์ก์ ๊ด๋ จ ์ค์ (Artifact and log retention์ 7 days ์ ๋๋ก ์ค์ ํ๋ ๋ฑ )
# Server (Ubuntu) ์ค์
- jdk ์ค์น
sudo apt install openjdk-11-jdk
java -version
- mysql ์ค์น
sudo apt-get install mysql-server
- ์ธ๋ถ์ ์ ๊ธฐ๋ฅ ์ค์ (3306 port open)
sudo ufw allow mysql
- mysql ์คํ
sudo systemctl start mysql
- ์๋ฒ ์ฌ์์์ ์๋ ์คํ
sudo systemctl enable mysql
- mysql ์ ์
sudo /usr/bin/mysql -u root -p
- ๋น๋ฐ๋ฒํธ ์ค์
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1234');
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
- mysql schema ์ถ๊ฐ
CREATE DATABASE testdb;
์๋ฒ์ ์ธ๋ฐ์ด๋ ํฌํธ ํ์ฑํ
mysql ์ธ๋ถ์ ์ ์๋ ๋
netstat -ntlp | grep mysqld
sudo /usr/bin/mysql -u root -p
mysql> show variables like '%bind%';
exit
cd /etc/mysql/mysql.conf.d
sudo vi mysqld.cnf
bind-address ๋ณ๊ฒฝ 127.0.0.1 -> 0.0.0.0
systemctl restart mysql
systemctl status mysql
- mysql ์ ๊ฑฐ
sudo apt-get remove --purge mysql
sudo apt-get remove --purge mysql*
dpkg -l | grep mysql
sudo apt-get remove --purge mysql-apt-config
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean
โ - git - github-slack โ