sync test. #24
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy and Sync Changed Files | |
on: | |
push: | |
branches: | |
- master # master 브랜치에 푸시될 때 트리거 | |
pull_request: | |
branches: | |
- master # master 브랜치에 PR이 열릴 때 트리거 | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10.12' # Python 3.10.12 버전 설정 | |
- name: Run setup script | |
run: | | |
bash setup.sh | |
- name: Add SSH key | |
uses: webfactory/[email protected] | |
with: | |
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} | |
- name: Deploy to Server | |
env: | |
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} | |
SERVER_HOST: ${{ secrets.SERVER_HOST }} | |
SERVER_USER: ${{ secrets.SERVER_USER }} | |
PROJECT_DIR: ${{ secrets.PROJECT_DIR }} | |
run: | | |
echo "Starting deployment..." | |
echo "SERVER_HOST: $SERVER_HOST" | |
echo "SERVER_USER: $SERVER_USER" | |
echo "PROJECT_DIR: $PROJECT_DIR" | |
mkdir -p ~/.ssh | |
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa | |
chmod 600 ~/.ssh/id_rsa | |
ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_HOST << 'EOF' | |
cd $PROJECT_DIR # 실제 배포할 프로젝트 경로 | |
git fetch --all | |
git reset --hard origin/master | |
source venv/bin/activate | |
# setup.sh 스크립트 실행 | |
if [ -f setup.sh ]; then | |
echo "Running setup.sh in $PROJECT_DIR..." | |
bash setup.sh | |
fi | |
echo "Deployment completed in $PROJECT_DIR." | |
EOF | |
sync_branches: | |
needs: deploy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up Git user | |
run: | | |
git config user.name "seunghoon shin" | |
git config user.email "[email protected]" | |
- name: Get list of changed files | |
id: changed-files | |
run: | | |
echo "CHANGED_FILES=$(git diff-tree --no-commit-id --name-only -r HEAD)" >> $GITHUB_ENV | |
- name: Sync changed files with test branch | |
run: | | |
git checkout test | |
for file in $CHANGED_FILES; do | |
git checkout master -- $file | |
done | |
git commit -m "Sync changed files from master to test" | |
git push origin test | |
- name: Sync changed files with dev branch | |
run: | | |
git checkout dev | |
for file in $CHANGED_FILES; do | |
git checkout master -- $file | |
done | |
git commit -m "Sync changed files from master to dev" | |
git push origin dev |