1

ファイルの設定に問題があり.gitlab-ci.ymlます。古いコミットを削除したいので、(Debian) サーバーで利用できるのは最新および以前のコミットのみです。

何らかの理由で、スクリプトを実行すると、期待どおりに動作しません。コミットは正しく切り替えられますが、古いものはフォルダーに保持され、削除されませんrm -rf $(readlink <link>)

ただし、同じユーザーを使用してサーバー上で SSH を実行し、まったく同じ手順を実行するとrm -rf $(readlink <link>)、実際のシンボリック リンク ターゲットが正常に削除されます (予期される動作)。CI スクリプトから同じことを行うと、ターゲットは削除されません。

たぶん、変数のエスケープや括弧を逃したのでしょうか?

これは私の(トリミングされた).gitlab-ci.ymlファイルです:

variables:
    SSH_USER: "user@server"
    PROJECT_DIR: "/domains/example.com/project-name"
    DEPLOY_DIR: "${PROJECT_DIR}/deploy"
    STAGING_TEMP_DIR: "${PROJECT_DIR}/staging-temp"
    # is this correct?
    DELETE_STAGING_TEMP: "'$$(readlink -f ${STAGING_TEMP_DIR})'"

stages:
    - build
    - deploy
    - post-deploy

Post Deploy staging:
    stage: post-deploy
    script:
        # switch last version
        - ssh $SSH_USER mv ${PROJECT_DIR}/staging-previous ${STAGING_TEMP_DIR} || true
        - ssh $SSH_USER mv ${PROJECT_DIR}/staging-latest ${PROJECT_DIR}/staging-previous || true
        - ssh $SSH_USER rm -rf ${DELETE_STAGING_TEMP}
        - ssh $SSH_USER unlink ${STAGING_TEMP_DIR} || true
        - ssh $SSH_USER ln -s ${DEPLOY_DIR}/${CI_COMMIT_REF_NAME}/${CI_COMMIT_SHA} ${PROJECT_DIR}/staging-latest

私もこの変種を試しました:

variables:
    SSH_USER: "user@server"
    PROJECT_DIR: "/domains/example.com/project-name"
    DEPLOY_DIR: "${PROJECT_DIR}/deploy"
    STAGING_TEMP_DIR: "${PROJECT_DIR}/staging-temp"

Post Deploy staging:
    stage: post-deploy
    script:            
        # switch last version
        - ssh $SSH_USER mv ${PROJECT_DIR}/staging-previous ${STAGING_TEMP_DIR} || true
        - ssh $SSH_USER mv ${PROJECT_DIR}/staging-latest ${PROJECT_DIR}/staging-previous || true      
        # is this correct? 
        - ssh $SSH_USER rm -rf "$(readlink -f ${STAGING_TEMP_DIR})"
        - ssh $SSH_USER unlink ${STAGING_TEMP_DIR} || true
        - ssh $SSH_USER ln -s ${DEPLOY_DIR}/${CI_COMMIT_REF_NAME}/${CI_COMMIT_SHA} ${PROJECT_DIR}/staging-latest

注意: ${PROJECT_DIR}/staging-previousand${PROJECT_DIR}/staging-latestはコミットへのシンボリックリンクです。

誰かが同様の問題を抱えていますか?それとも、古い (不要になった) コミットを削除するために他の方法を使用していますか?

4

1 に答える 1