diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 80ef212..828bbee 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -8,7 +8,6 @@ on: env: PROJECT_NAME: sifatbaho - permissions: contents: write @@ -112,38 +111,52 @@ jobs: key: ${{ secrets.KEY }} port: ${{ secrets.PORT }} script: | - PROJECTS=/opt/projects/ - DIR=/opt/projects/${{ env.PROJECT_NAME }}/ + set -e - if [ -d "$PROJECTS" ]; then - echo "projects papkasi mavjud" - else - mkdir -p $PROJECTS - echo "projects papkasi yaratildi" - fi + PROJECTS=/opt/projects + DIR=/opt/projects/${{ env.PROJECT_NAME }} - if [ -d "$DIR" ]; then + mkdir -p "$PROJECTS" + echo "projects papkasi mavjud" + + # Gitea SSH port: 2222 + mkdir -p ~/.ssh + cat >> ~/.ssh/config <<'EOF' + Host gitea.felixits.uz + HostName gitea.felixits.uz + User git + Port 2222 + StrictHostKeyChecking no + EOF + chmod 600 ~/.ssh/config + + # Clone (agar yo'q bo'lsa) yoki update + if [ -d "$DIR/.git" ]; then echo "loyiha mavjud" else - cd $PROJECTS - git clone git@gitea.felixits.uz:${{ github.repository }}.git ${{ env.PROJECT_NAME }} - echo "Clone qilindi"; + rm -rf "$DIR" + cd "$PROJECTS" + git clone ssh://git@gitea.felixits.uz:2222/${{ github.repository }}.git "${{ env.PROJECT_NAME }}" + echo "Clone qilindi" fi - cd $DIR + cd "$DIR" git fetch origin main git reset --hard origin/main + cp .env.example .env update_env() { - local env_file=".env" - cp .env.example "$env_file" - - for kv in "$@"; do - local key="${kv%%=*}" - local value="${kv#*=}" - sed -i "s|^$key=.*|$key=$value|" "$env_file" - done + local env_file=".env" + for kv in "$@"; do + local key="${kv%%=*}" + local value="${kv#*=}" + if grep -q "^$key=" "$env_file"; then + sed -i "s|^$key=.*|$key=$value|" "$env_file" + else + echo "$key=$value" >> "$env_file" + fi + done } update_env \