diff --git a/.github/workflows/registry-ci.yml b/.github/workflows/registry-ci.yml index 843e44b9c..65d22e220 100644 --- a/.github/workflows/registry-ci.yml +++ b/.github/workflows/registry-ci.yml @@ -18,10 +18,14 @@ jobs: env: COMANAGE_REGISTRY_DIR: /srv/comanage-registry + + # Values used by your PHPUnit setup test COMANAGE_REGISTRY_ADMIN_GIVEN_NAME: Admin COMANAGE_REGISTRY_ADMIN_FAMILY_NAME: User COMANAGE_REGISTRY_ADMIN_USERNAME: admin COMANAGE_REGISTRY_SECURITY_SALT: phpunit-security-salt + + # Values used by tests/bootstrap.php to create containers (host/port are set dynamically after start) COMANAGE_REGISTRY_DATABASE: registry_test COMANAGE_REGISTRY_DATABASE_USER: test_user COMANAGE_REGISTRY_DATABASE_USER_PASSWORD: test_password @@ -33,104 +37,69 @@ jobs: run: | cat /etc/os-release uname -a - docker --version - - name: Upgrade Docker Engine + - name: Checkout (only for workflow files) shell: bash run: | set -euxo pipefail - # Remove old docker packages first to avoid conflicts - sudo yum remove -y docker \ - docker-client \ - docker-client-latest \ - docker-common \ - docker-latest \ - docker-latest-logrotate \ - docker-logrotate \ - docker-engine || true - - # Install missing dependencies from AL2 extras - sudo amazon-linux-extras install -y selinux-ng || true - sudo yum install -y \ - container-selinux \ - fuse-overlayfs \ - slirp4netns || true - - # Add Docker CE repo pinned to CentOS 7 - sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - sudo sed -i 's|\$releasever|7|g' /etc/yum.repos.d/docker-ce.repo - - # Install Docker CE, skip rootless extras to avoid optional dep issues - sudo yum install -y \ - docker-ce \ - docker-ce-cli \ - containerd.io \ - --exclude=docker-ce-rootless-extras - - sudo systemctl start docker || true - docker --version + git clone \ + --depth=1 \ + --branch "${GITHUB_REF_NAME}" \ + "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" \ + "${COMANAGE_REGISTRY_DIR}" - name: Install PHP ${{ matrix.php }} and extensions shell: bash run: | set -euxo pipefail + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + software-properties-common ca-certificates gnupg + sudo add-apt-repository -y ppa:ondrej/php + sudo apt-get update PHP_VER="${{ matrix.php }}" - - # Enable EPEL and Remi repo for multiple PHP versions on AL2 - sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm || true - sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm || true - sudo yum-config-manager --enable remi-php$(echo $PHP_VER | tr -d '.') - - sudo yum install -y \ - php${PHP_VER/./} \ - php${PHP_VER/./}-php-cli \ - php${PHP_VER/./}-php-mbstring \ - php${PHP_VER/./}-php-intl \ - php${PHP_VER/./}-php-ldap \ - php${PHP_VER/./}-php-xml \ - php${PHP_VER/./}-php-zip \ - php${PHP_VER/./}-php-pdo \ - php${PHP_VER/./}-php-mysqlnd \ - php${PHP_VER/./}-php-pgsql \ - php${PHP_VER/./}-php-gd \ - php${PHP_VER/./}-php-xsl \ - php${PHP_VER/./}-php-memcached \ - php${PHP_VER/./}-php-curl \ - php${PHP_VER/./}-php-sodium - - # Make the correct version the default - sudo ln -sf /usr/bin/php${PHP_VER/./} /usr/local/bin/php - echo "/usr/local/bin" >> "$GITHUB_PATH" + sudo apt-get install -y --no-install-recommends \ + php${PHP_VER}-cli \ + php${PHP_VER}-mbstring \ + php${PHP_VER}-intl \ + php${PHP_VER}-ldap \ + php${PHP_VER}-xml \ + php${PHP_VER}-zip \ + php${PHP_VER}-pdo \ + php${PHP_VER}-mysql \ + php${PHP_VER}-pgsql \ + php${PHP_VER}-gd \ + php${PHP_VER}-xsl \ + php${PHP_VER}-memcached \ + php${PHP_VER}-curl + # Force the correct version via update-alternatives + sudo update-alternatives --set php /usr/bin/php${PHP_VER} + # Also override via /usr/local/bin which is earlier in PATH + sudo ln -sf /usr/bin/php${PHP_VER} /usr/local/bin/php + # Persist for subsequent steps echo "PHP_VER=${PHP_VER}" >> "$GITHUB_ENV" + # Prepend /usr/local/bin to PATH for all subsequent steps + echo "/usr/local/bin" >> "$GITHUB_PATH" - name: Install OS packages needed for setup shell: bash run: | set -euxo pipefail - sudo yum install -y \ + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ wget curl tar ca-certificates \ git unzip \ - libicu-devel \ - openldap-devel \ + libicu-dev \ + libldap2-dev \ libxml2 \ - zlib \ - libsodium \ - libpng-devel \ - libjpeg-devel \ - freetype-devel \ - libxslt \ - libmemcached \ - tree - - - name: Checkout source - shell: bash - run: | - set -euxo pipefail - git clone \ - --depth=1 \ - --branch "${GITHUB_REF_NAME}" \ - "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" \ - "${COMANAGE_REGISTRY_DIR}" + zlib1g \ + libsodium23 \ + libpng-dev \ + libjpeg-dev \ + libfreetype6-dev \ + libxslt1.1 \ + libmemcached11 \ + tree - name: Show versions shell: bash @@ -140,35 +109,19 @@ jobs: composer --version docker --version - - name: Create apache user/group - shell: bash - run: | - set -euxo pipefail - if ! getent group apache >/dev/null; then - sudo groupadd --system apache - fi - if ! id -u apache >/dev/null 2>&1; then - sudo useradd --system --no-create-home --gid apache apache - fi - - name: Create local/config/database.php placeholder shell: bash run: | set -euxo pipefail - sudo mkdir -p "${COMANAGE_REGISTRY_DIR}/local/config" - sudo tee "${COMANAGE_REGISTRY_DIR}/local/config/database.php" > /dev/null <<'EOF' + cd "${COMANAGE_REGISTRY_DIR}"/local/config + sudo touch database.php + sudo chown www-data:www-data database.php + sudo tee "database.php" > /dev/null <<'EOF' &1) - echo "${output}" - if echo "${output}" | grep -q "Could not load + cd "${COMANAGE_REGISTRY_DIR}"/app + DB_ENGINE="${DB_ENGINE}" vendor/bin/phpunit --testsuite app \ No newline at end of file