diff --git a/.github/workflows/deployment.workflow.yml b/.github/workflows/deployment.workflow.yml new file mode 100644 index 000000000..b8f88ed5c --- /dev/null +++ b/.github/workflows/deployment.workflow.yml @@ -0,0 +1,125 @@ +name: "Code Deployment on Acquia Env" +on: + push: + branches: [ code-deployment ] +jobs: + acquia_code_deployment: + #if: ${{ github.ref == 'refs/heads/develop' && github.event_name == 'push' }} + name: "Code Deployment on Acquia Environment" + env: + GIT_AUTHOR_NAME: "Vishal Khode" + GIT_COMMITTER_NAME: "Vishal Khode" + GIT_COMMITTER_EMAIL: "vishal.khode@acquia.com" + GIT_AUTHOR_EMAIL: "vishal.khode@acquia.com" + BUILD_DIR: "/tmp/project" + runs-on: ubuntu-latest + environment: acquia_code_deployment + concurrency: production + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: shivammathur/setup-php@v2 + with: + php-version: 8.3 + - name: Configure SSH keys + run: | + mkdir -p ~/.ssh + echo "${ACQUIA_CLOUD_SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + eval `ssh-agent -s` + ssh-add ~/.ssh/id_rsa + + ssh-keyscan -H "orionacmsdev.ssh.prod.acquia-sites.com" >> ~/.ssh/known_hosts + + # Loop through each line in the environment variable. + echo "${ACQUIA_CLOUD_KNOWN_HOSTS}" | while IFS= read -r KNOWN_HOST; do + if [[ -n "${KNOWN_HOST}" ]]; then + CLEANED_HOST=$(echo "${KNOWN_HOST}" | tr -d '\r' | xargs -n1) + ssh-keyscan "${CLEANED_HOST}" >> ~/.ssh/known_hosts 2>/dev/null || { + echo "Warning: Unable to scan host ${CLEANED_HOST}. Skipping." + } + fi + done + shell: bash + env: + ACQUIA_CLOUD_SSH_PRIVATE_KEY: ${{ secrets.ACQUIA_CLOUD_SSH_PRIVATE_KEY }} + ACQUIA_CLOUD_KNOWN_HOSTS: ${{ vars.ACQUIA_CLOUD_KNOWN_HOSTS }} + - name: Setup Drupal Project + run: | + mkdir -p ${BUILD_DIR} + # We've to use different version of drupal-recommended-project based on Drupal Core version. + if [[ "${CORE_VERSION}" == ^11* ]]; then + composer create-project acquia/drupal-recommended-project:^3 ${BUILD_DIR} --no-install + elif [[ "${CORE_VERSION}" == ^10* ]]; then + composer create-project acquia/drupal-recommended-project:^2 ${BUILD_DIR} --no-install + else + echo "CORE_VERSION: ${CORE_VERSION} not supported." + exit 1; + fi + + cd $BUILD_DIR + + # Merging "allow-plugins", "extra", and "repositories" sections from Acquia Starter Kits' composer.json + # into acquia/drupal-recommended-project's composer.json. This ensures that all dependencies, + # plugins, and repositories are already set up in acquia/drupal-recommended-project + # before requiring additional recipes or modules, so that all required dependencies are available. + jq -s '.[0] * { + "config": { + "allow-plugins": (.[0].config."allow-plugins" + .[1].config."allow-plugins") + }, + "extra": (.[0].extra + .[1].extra), + "repositories": ( + (.[0].repositories + .[1].repositories) | + map( + if .type == "path" and (.url | test("^[^/]")) then + .url = (env.GITHUB_WORKSPACE + "/" + .url | gsub("\\./"; "")) + else + . + end + ) + ) + }' composer.json ${GITHUB_WORKSPACE}/composer.json > temp_composer.json + + # Replace the original composer.json with the merged file. + mv temp_composer.json composer.json + + # Pinning the drupal core dependencies to specific Drupal Core version. + composer require drupal/core:${CORE_VERSION} drupal/core-recommended:${CORE_VERSION} drupal/core-composer-scaffold:${CORE_VERSION} --no-update --no-install + + # Install all dependencies. + composer install + env: + CORE_VERSION: ^11 + +# - name: Setup Drupal Project +# run: | +# rm composer.lock +# #composer require acquia/drupal-recommended-settings --no-install --no-update +# composer require drupal/core:${CORE_VERSION} --no-install --no-update +# composer install +# #composer update "drupal/core-*" drush/drush "drupal/*" -W --with=drupal/core:${CORE_VERSION} +# env: +# CORE_VERSION: ^11 + - name: Setup Acquia Cloud CLI + run: | + curl -OL https://github.com/acquia/cli/releases/latest/download/acli.phar + chmod +x acli.phar + mv acli.phar /usr/local/bin/acli + acli --version + + acli auth:login --key=${ACQUIA_CLOUD_API_KEY} --secret=${ACQUIA_CLOUD_API_SECRET} -n + acli link ${ACQUIA_APPLICATION_UUID} -n + acli remote:aliases:download -n + git add . && git commit -m "Added acli & drush alias configurations." + #printenv + acli push:artifact orionacms.dev --destination-git-branch=acli-${GITHUB_REF_NAME} -n -vvv || true + cd /tmp/acli-push-artifact + ls -ltr + ls -ltr docroot || true + ls -ltr docroot/core || true + cat composer.json || true + env: + ACQUIA_CLOUD_API_KEY: ${{ secrets.ACQUIA_CLOUD_API_KEY }} + ACQUIA_CLOUD_API_SECRET: ${{ secrets.ACQUIA_CLOUD_API_SECRET }} + ACQUIA_APPLICATION_UUID: ${{ secrets.ACQUIA_APPLICATION_UUID }}