diff --git a/.gitea/workflows/docker-image.yml b/.gitea/workflows/docker-image.yml index b1639f90..6b62f2f0 100644 --- a/.gitea/workflows/docker-image.yml +++ b/.gitea/workflows/docker-image.yml @@ -152,12 +152,9 @@ jobs: - name: Deploy image over SSH env: SSH_HOST: ${{ secrets.SSH_HOST }} - SSH_USER: ${{ secrets.SSH_USER }} SSH_PORT: ${{ secrets.SSH_PORT }} SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }} - TEST_DEPLOY_DIR: ${{ secrets.TEST_DEPLOY_DIR }} - PROD_DEPLOY_DIR: ${{ secrets.PROD_DEPLOY_DIR }} REGISTRY_HOST: ${{ secrets.REGISTRY_HOST }} REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} @@ -166,16 +163,18 @@ jobs: case "$DEPLOY_ENV" in test) - DEPLOY_DIR="${TEST_DEPLOY_DIR:-/opt/cozsweet-web-test}" + DEPLOY_ROOT="/home/lzf/apps/cozsweet-web-test" HOST_PORT="9135" CONTAINER_NAME="cozsweet-web-test" PROJECT_NAME="cozsweet-web-test" + SERVER_RETAIN_COUNT="1" ;; prod) - DEPLOY_DIR="${PROD_DEPLOY_DIR:-/opt/cozsweet-web-prod}" + DEPLOY_ROOT="/home/lzf/apps/cozsweet-web-prod" HOST_PORT="9185" CONTAINER_NAME="cozsweet-web-prod" PROJECT_NAME="cozsweet-web-prod" + SERVER_RETAIN_COUNT="2" ;; *) echo "Unsupported deploy env: $DEPLOY_ENV" >&2 @@ -183,8 +182,11 @@ jobs: ;; esac + DEPLOY_DIR="$DEPLOY_ROOT/current" + DEPLOY_SHARED_DIR="$DEPLOY_ROOT/shared" + REMOTE_ENV_FILE="$DEPLOY_SHARED_DIR/$NEXT_ENV_FILE" DEPLOY_HOST="$SSH_HOST" - DEPLOY_USER="$SSH_USER" + DEPLOY_USER="lzf" DEPLOY_PORT="${SSH_PORT:-22}" DEPLOY_KEY="$SSH_PRIVATE_KEY" DEPLOY_KNOWN_HOSTS="$SSH_KNOWN_HOSTS" @@ -210,19 +212,19 @@ jobs: SSH_OPTS="-i $KEY_FILE -p $DEPLOY_PORT -o IdentitiesOnly=yes" SCP_OPTS="-i $KEY_FILE -P $DEPLOY_PORT -o IdentitiesOnly=yes" - ssh $SSH_OPTS "$SSH_TARGET" "mkdir -p '$DEPLOY_DIR'" + ssh $SSH_OPTS "$SSH_TARGET" \ + "mkdir -p '$DEPLOY_DIR' '$DEPLOY_SHARED_DIR' '$DEPLOY_ROOT/releases' '$DEPLOY_ROOT/backups' '$DEPLOY_ROOT/tmp' && chmod 700 '$DEPLOY_SHARED_DIR'" scp $SCP_OPTS docker-compose.yml "$SSH_TARGET:$DEPLOY_DIR/docker-compose.yml" scp $SCP_OPTS scripts/server/deploy-docker-image.sh "$SSH_TARGET:$DEPLOY_DIR/deploy-docker-image.sh" - scp $SCP_OPTS "$NEXT_ENV_FILE" "$SSH_TARGET:$DEPLOY_DIR/$NEXT_ENV_FILE" + scp $SCP_OPTS "$NEXT_ENV_FILE" "$SSH_TARGET:$REMOTE_ENV_FILE" + ssh $SSH_OPTS "$SSH_TARGET" "chmod 600 '$REMOTE_ENV_FILE'" printf '%s' "$REGISTRY_PASSWORD" \ | ssh $SSH_OPTS "$SSH_TARGET" \ "docker login '$REGISTRY_HOST' -u '$REGISTRY_USERNAME' --password-stdin" - SERVER_RETAIN_COUNT="1" - ssh $SSH_OPTS "$SSH_TARGET" \ - "cd '$DEPLOY_DIR' && chmod +x ./deploy-docker-image.sh && ./deploy-docker-image.sh '$IMAGE_VERSION_TAG' '$NEXT_ENV_FILE' '$HOST_PORT' '$CONTAINER_NAME' '$PROJECT_NAME' '$SERVER_RETAIN_COUNT'" + "cd '$DEPLOY_DIR' && chmod +x ./deploy-docker-image.sh && ./deploy-docker-image.sh '$IMAGE_VERSION_TAG' '$REMOTE_ENV_FILE' '$HOST_PORT' '$CONTAINER_NAME' '$PROJECT_NAME' '$SERVER_RETAIN_COUNT'" - name: Purge Cloudflare cache env: