-
Notifications
You must be signed in to change notification settings - Fork 35
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a350b83
commit 31739eb
Showing
1 changed file
with
125 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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: "[email protected]" | ||
GIT_AUTHOR_EMAIL: "[email protected]" | ||
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 }} |