From 5a148dfe4cfa2eae2ec4e8386c55351a7fcee83f Mon Sep 17 00:00:00 2001 From: Pete Inge Date: Thu, 25 Apr 2024 19:12:08 -0400 Subject: [PATCH] Add in github actions files --- .github/workflows/assign-to-projects.yml | 27 +++ .github/workflows/coding-standards-check.yml | 190 +++++++++++++++++++ 2 files changed, 217 insertions(+) create mode 100644 .github/workflows/assign-to-projects.yml create mode 100644 .github/workflows/coding-standards-check.yml diff --git a/.github/workflows/assign-to-projects.yml b/.github/workflows/assign-to-projects.yml new file mode 100644 index 0000000..e1cb4ee --- /dev/null +++ b/.github/workflows/assign-to-projects.yml @@ -0,0 +1,27 @@ +name: Auto Assign to Project(s) + +on: + issues: + types: [opened] + pull_request: + types: [opened] + # issue_comment: + # types: [created] +env: + target: "New issues" + +jobs: + issue_opened_or_reopened: + name: issue_opened_or_reopened + runs-on: ubuntu-latest + if: github.event_name == 'issues' && (github.event.action == 'opened' || github.event.action == 'reopened') + steps: + - name: Move issue to ${{ env.target }} + uses: leonsteinhaeuser/project-beta-automations@v2.0.1 + with: + gh_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + user: pingevt + # organization: pingevt + project_id: 3 + resource_node_id: ${{ github.event.issue.node_id }} + status_value: ${{ env.target }} # Target status diff --git a/.github/workflows/coding-standards-check.yml b/.github/workflows/coding-standards-check.yml new file mode 100644 index 0000000..15a1b47 --- /dev/null +++ b/.github/workflows/coding-standards-check.yml @@ -0,0 +1,190 @@ +name: Tests +on: + push: + pull_request: + branches: [ 1.x ] +env: + SIMPLETEST_DB: "mysql://drupal:drupal@mariadb:3306/drupal" + SIMPLETEST_BASE_URL: "http://127.0.0.1:8080" + DRUPAL_MODULE_NAME: "iiif_media_source" +jobs: + + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + drupal-core: ['10.1.x', '10.2.x'] + php-version: ['8.1', '8.2', '8.3'] + mariadb-version: ['10.4', '10.6'] + exclude: + - + drupal-core: '10.1.x' + php-version: '8.0' + mariadb-version: '10.4' + - + drupal-core: '10.1.x' + php-version: '8.0' + mariadb-version: '10.6' + - + drupal-core: '10.2.x' + php-version: '8.0' + mariadb-version: '10.4' + - + drupal-core: '10.2.x' + php-version: '8.0' + mariadb-version: '10.6' + + container: + # See https://github.com/tuutti/docker-images/tree/main/drupal/ci + # to see how this image is built. + image: ghcr.io/tuutti/drupal-php-docker:${{ matrix.php-version }} + services: + mariadb: + image: mariadb:${{ matrix.mariadb-version }} + env: + MYSQL_USER: drupal + MYSQL_PASSWORD: drupal + MYSQL_DATABASE: drupal + MYSQL_ROOT_PASSWORD: drupal + ports: + - 3306:3306 + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + + # The next two steps exposes $DRUPAL_ROOT and $MODULE_FOLDER environment + # variables. + # + # They have to be set in separate steps because $DRUPAL_ROOT variable + # won't be accessible in currently active step. + # You can access them either with $DRUPAL_ROOT and $MODULE_FOLDER or + # ${{ env.DRUPAL_ROOT }} and ${{ env.MODULE_FOLDER }}. + - name: Define DRUPAL_ROOT env variable + run: echo "DRUPAL_ROOT=$HOME/drupal" >> $GITHUB_ENV + + # Change the module folder according to your needs, it's probably either + # modules/contrib/$DRUPAL_MODULE_NAME or modules/custom/$DRUPAL_MODULE_NAME. + - name: Set module folder + run: | + echo "MODULE_FOLDER=$DRUPAL_ROOT/modules/contrib/$DRUPAL_MODULE_NAME" \ + >> $GITHUB_ENV + + # Clone Drupal core into $DRUPAL_ROOT folder. + # Core version can be set by changing $DRUPAL_CORE_VERSION. + - name: Clone drupal + run: | + git clone --depth 1 --branch "${{ matrix.drupal-core }}" \ + http://git.drupal.org/project/drupal.git/ $DRUPAL_ROOT + + # Override the platform.php config with currently active PHP version. + # As of writing this, the composer.json shipped with core sets + # platform.php version to 7.3.0, meaning we possibly get dependencies + # that won't work with php 8+. + - name: Override the platform.php version + working-directory: ${{ env.DRUPAL_ROOT }} + run: composer config platform.php ${{ matrix.php-version }} + + # Set the module folder as a composer repository, so the latest code + # is symlinked from $GITHUB_WORKSPACE to modules/ folder. + - name: Install the module + working-directory: ${{ env.DRUPAL_ROOT }} + run: | + composer config --no-plugins allow-plugins.oomphinc/composer-installers-extender true + composer config repositories.$DRUPAL_MODULE_NAME '{"type": "path", "url": "$GITHUB_WORKSPACE", "options": {"symlink": true}}' + composer config extra.installer-paths + composer require mglaman/drupal-check --dev + composer require drupal/devel + composer require pingevt/$DRUPAL_MODULE_NAME + + # PHP 8+ requires newer phpunit, use core's composer script + # to upgrade it. + - name: Upgrade phpunit + working-directory: ${{ env.DRUPAL_ROOT }} + run: composer run-script drupal-phpunit-upgrade + + # We use drush's build-in webserver to run tests. Make sure + # Drush is installed. + - name: Install drush + working-directory: ${{ env.DRUPAL_ROOT }} + run: composer require "drush/drush ^11.0 || ^12" + + - name: Install PHPCS + working-directory: ${{ env.DRUPAL_ROOT }} + run: | + composer config --no-plugins allow-plugins.dealerdirect/phpcodesniffer-composer-installer true + composer require --dev "drupal/coder" + + # Install Drupal using minimal installation profile and enable the module. + - name: Install Drupal + working-directory: ${{ env.DRUPAL_ROOT }} + run: | + php -d sendmail_path=$(which true); vendor/bin/drush --yes -v \ + site-install minimal --db-url="$SIMPLETEST_DB" + vendor/bin/drush en $DRUPAL_MODULE_NAME -y + + - name: Run PHPCS + working-directory: ${{ env.DRUPAL_ROOT }} + continue-on-error: true + run: | + vendor/bin/phpcs --config-set ignore_warnings_on_exit 1 + vendor/bin/phpcs --config-set ignore_errors_on_exit 1 + vendor/bin/phpcs -s --standard=Drupal --extensions=php,module,inc,install,test,profile,theme,css,info,txt --ignore=node_modules,bower_components,vendor,dist --exclude=Drupal.InfoFiles.AutoAddedKeys --colors $MODULE_FOLDER + vendor/bin/phpcs -s --standard=DrupalPractice --extensions=php,module,inc,install,test,profile,theme,css,info,txt --ignore=node_modules,bower_components,vendor,dist --exclude=Drupal.InfoFiles.AutoAddedKeys --colors $MODULE_FOLDER + + - name: Run Drupal-Check + working-directory: ${{ env.DRUPAL_ROOT }} + continue-on-error: true + run: | + php vendor/bin/drupal-check $MODULE_FOLDER --drupal-root ${{ env.DRUPAL_ROOT }} + + - name: Start Drush webserver and chromedriver + working-directory: ${{ env.DRUPAL_ROOT }} + run: | + vendor/bin/drush runserver $SIMPLETEST_BASE_URL > /dev/null 2>&1 & + chromedriver --port=4444 > /dev/null 2>&1 & + # Wait for drush server to start. + for i in {1..5}; do \ + RESPONSE_CODE=$(curl -s -o /dev/null \ + -w "%{http_code}" "$SIMPLETEST_BASE_URL" || true); \ + if [ "$RESPONSE_CODE" -gt "301" ] || [ "$RESPONSE_CODE" -lt "200" ]; \ + then sleep 2; fi; done + + # Chromium browser is required to run functional javascript tests. + # You can remove or uncomment this step if you don't have any functional + # js tests. + - name: Start chromium-browser + working-directory: ${{ env.DRUPAL_ROOT }} + run: | + chromium-browser --headless --disable-gpu \ + --no-sandbox \ + --remote-debugging-port=9222 & + + # Run tests using core's run-tests.sh script. See the example below + # to run tests using phpunit. + # - name: Run tests + # working-directory: ${{ env.DRUPAL_ROOT }} + # run: | + # php ./core/scripts/run-tests.sh --dburl $SIMPLETEST_DB \ + # --php /usr/local/bin/php --color --verbose \ + # --sqlite /tmp/test.sqlite \ + # --url $SIMPLETEST_BASE_URL $DRUPAL_MODULE_NAME + + # Uncomment this step to run tests using phpunit. Your module is expected + # to ship with 'phpunit.xml' file. See the repository for an example + # phpunit.xml file. + - name: Run tests + working-directory: ${{ env.DRUPAL_ROOT }} + continue-on-error: true + run: | + touch drupal_debug.txt + vendor/bin/phpunit --bootstrap $DRUPAL_ROOT/core/tests/bootstrap.php -c $MODULE_FOLDER/phpunit.xml $MODULE_FOLDER + + - name: Print debug file + working-directory: ${{ env.DRUPAL_ROOT }} + continue-on-error: true + run: | + ls -sla + cat drupal_debug.txt