-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
👷(project) add GitHub Actions CI workflow
We set up a CI pipeline using GitHub Actions, adapted from Moodle Plugin CI, to ensure adherence to best development practices.
- Loading branch information
Showing
5 changed files
with
275 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,112 @@ | ||
name: IAGORA CI | ||
|
||
on: | ||
push: | ||
branches: [ "main" ] | ||
pull_request: | ||
branches: [ "main" ] | ||
|
||
jobs: | ||
test: | ||
runs-on: ubuntu-latest | ||
|
||
services: | ||
postgres: | ||
image: postgres:13 | ||
env: | ||
POSTGRES_USER: 'postgres' | ||
POSTGRES_HOST_AUTH_METHOD: 'trust' | ||
ports: | ||
- 5432:5432 | ||
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3 | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
php: ['8.3'] | ||
moodle-branch: ['MOODLE_404_STABLE'] | ||
database: [pgsql] | ||
|
||
steps: | ||
- name: Check out repository code | ||
uses: actions/checkout@v4 | ||
with: | ||
path: plugin | ||
|
||
- name: Setup PHP ${{ matrix.php }} | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: ${{ matrix.php }} | ||
ini-values: max_input_vars=5000 | ||
coverage: xdebug | ||
|
||
- name: Initialise moodle-plugin-ci | ||
run: | | ||
composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^4 | ||
echo $(cd ci/bin; pwd) >> $GITHUB_PATH | ||
echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH | ||
sudo locale-gen en_AU.UTF-8 | ||
echo "NVM_DIR=$HOME/.nvm" >> $GITHUB_ENV | ||
- name: Install moodle-plugin-ci | ||
run: moodle-plugin-ci install --plugin ./plugin --db-host=127.0.0.1 | ||
env: | ||
DB: ${{ matrix.database }} | ||
MOODLE_BRANCH: ${{ matrix.moodle-branch }} | ||
# Uncomment this to run Behat tests using the Moodle App. | ||
# MOODLE_APP: 'true' | ||
|
||
- name: PHP Lint | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci phplint | ||
|
||
- name: PHP Mess Detector | ||
continue-on-error: true # This step will show errors but will not fail. | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci phpmd | ||
|
||
- name: Moodle Code Checker | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci phpcs --max-warnings 0 | ||
|
||
- name: Moodle PHPDoc Checker | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci phpdoc --max-warnings 0 | ||
|
||
- name: Validating | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci validate | ||
|
||
- name: Check upgrade savepoints | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci savepoints | ||
|
||
- name: Mustache Lint | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci mustache | ||
|
||
- name: Grunt | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci grunt --max-lint-warnings 0 | ||
|
||
- name: PHPUnit tests | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci phpunit --fail-on-warning | ||
|
||
- name: Behat features | ||
id: behat | ||
if: ${{ !cancelled() }} | ||
run: moodle-plugin-ci behat --profile chrome | ||
|
||
- name: Upload Behat Faildump | ||
if: ${{ failure() && steps.behat.outcome == 'failure' }} | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Behat Faildump (${{ join(matrix.*, ', ') }}) | ||
path: ${{ github.workspace }}/moodledata/behat_dump | ||
retention-days: 1 | ||
if-no-files-found: ignore | ||
|
||
- name: Mark cancelled jobs as failed. | ||
if: ${{ cancelled() }} | ||
run: exit 1 |
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,63 @@ | ||
<?php | ||
// This file is part of Moodle - http://moodle.org/ | ||
// | ||
// Moodle is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// Moodle is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
/** | ||
* Block definition class for the block_iagora plugin. | ||
* | ||
* @package block_iagora | ||
* @copyright 2024, Datum Academy <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
defined('MOODLE_INTERNAL') || die(); | ||
|
||
class block_iagora extends block_base { | ||
|
||
/** | ||
* Initialises the block. | ||
* | ||
* @return void | ||
*/ | ||
public function init() { | ||
$this->title = get_string('pluginname', 'block_iagora'); | ||
} | ||
|
||
/** | ||
* Gets the block contents. | ||
* | ||
* @return string The block HTML. | ||
*/ | ||
public function get_content() { | ||
if ($this->content !== null) { | ||
return $this->content; | ||
} | ||
|
||
$this->content = new stdClass(); | ||
$this->content->footer = ''; | ||
$this->content->text = ''; | ||
|
||
return $this->content; | ||
} | ||
|
||
/** | ||
* Defines in which pages this block can be added. | ||
* | ||
* @return array of the pages where the block can be added. | ||
*/ | ||
public function applicable_formats() { | ||
return ['all' => true]; | ||
} | ||
} |
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,46 @@ | ||
<?php | ||
// This file is part of Moodle - http://moodle.org/ | ||
// | ||
// Moodle is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// Moodle is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
/** | ||
* Plugin capabilities for the block_iagora plugin. | ||
* | ||
* @package block_iagora | ||
* @copyright 2024, Datum Academy <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
defined('MOODLE_INTERNAL') || die(); | ||
|
||
$capabilities = [ | ||
'block/iagora:myaddinstance' => [ | ||
'captype' => 'write', | ||
'contextlevel' => CONTEXT_SYSTEM, | ||
'archetypes' => [ | ||
'user' => CAP_ALLOW | ||
], | ||
'clonepermissionsfrom' => 'moodle/my:manageblocks' | ||
], | ||
'block/iagora:addinstance' => [ | ||
'riskbitmask' => RISK_SPAM | RISK_XSS, | ||
'captype' => 'write', | ||
'contextlevel' => CONTEXT_BLOCK, | ||
'archetypes' => [ | ||
'editingteacher' => CAP_ALLOW, | ||
'manager' => CAP_ALLOW | ||
], | ||
'clonepermissionsfrom' => 'moodle/site:manageblocks' | ||
], | ||
]; |
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,25 @@ | ||
<?php | ||
// This file is part of Moodle - http://moodle.org/ | ||
// | ||
// Moodle is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// Moodle is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
/** | ||
* Languages configuration for the block_iagora plugin. | ||
* | ||
* @package block_iagora | ||
* @copyright 2024, Datum Academy <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
$string['pluginname'] = 'IAGORA'; |
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,29 @@ | ||
<?php | ||
// This file is part of Moodle - http://moodle.org/ | ||
// | ||
// Moodle is free software: you can redistribute it and/or modify | ||
// it under the terms of the GNU General Public License as published by | ||
// the Free Software Foundation, either version 3 of the License, or | ||
// (at your option) any later version. | ||
// | ||
// Moodle is distributed in the hope that it will be useful, | ||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
// GNU General Public License for more details. | ||
// | ||
// You should have received a copy of the GNU General Public License | ||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
/** | ||
* @package block_iagora | ||
* @copyright 2024, Datum Academy <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
defined('MOODLE_INTERNAL') || die(); | ||
|
||
$plugin->component = 'block_iagora'; | ||
$plugin->version = 2024070800; // YYYYMMDDXX (intentionally added long line to see and check whether the moodle linter complains!). | ||
$plugin->requires = 2023100900.00; // Moodle 4.3.0. | ||
$plugin->maturity = MATURITY_ALPHA; | ||
$plugin->release = '0.1.0'; |