diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml new file mode 100644 index 0000000..e3fae09 --- /dev/null +++ b/.github/workflows/releases.yml @@ -0,0 +1,87 @@ +name: MonarcAppFO releases + +on: + push: + branches: [ 'master' ] + tags: [ 'v*.*', 'v*.*.*', 'v*.*.*-*' ] + pull_request: + branches: [ 'master' ] + +jobs: + build: + runs-on: ubuntu-20.04 + + strategy: + matrix: + node-version: [ "16.x" ] + php-version: [ "7.4" ] + + steps: + - uses: actions/checkout@v2 + + - name: install deps + run: sudo apt-get update && sudo apt install -y gettext + + # PHP + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + tools: composer:v2.3 + extensions: bcmath + + - name: Validate composer.json and composer.lock + run: composer validate + + - name: Install PHP dependencies + run: composer install --prefer-dist --no-progress --no-suggest --no-dev + + - name: Symlink Monarc modules + run: | + mkdir -p module/Monarc + ln -s ../../vendor/monarc/core module/Monarc/Core + ln -s ../../vendor/monarc/frontoffice module/Monarc/FrontOffice + + # javascript + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + run: | + npm install + head node_modules/ng_client/src/ClientApp.js + + - name: Install ng-anr dependencies + run: | + npm install + working-directory: node_modules/ng_anr/ + + - name: Install ng-client dependencies + run: | + npm install + working-directory: node_modules/ng_client/ + + # final "cleanup" + - name: post job + run: | + bash -ex ./scripts/link_modules_resources.sh + bash -ex ./scripts/compile_translations.sh + + # prepare release + - name: Get repository name + id: repository + run: echo "::set-output name=pathref::$(echo '${{ github.repository }}' | cut -d'/' -f2)-$(echo '${{ github.ref_name }}' | sed 's/[^[:alnum:]\.-]/_/g')" + + - name: create artifact archive + run: | + tar --exclude .git --exclude .github -zcf '../${{ steps.repository.outputs.pathref }}.tar.gz' . + + - name: release + uses: softprops/action-gh-release@v1 + with: + files: | + ../${{ steps.repository.outputs.pathref }}.tar.gz + fail_on_unmatched_files: true + if: startsWith(github.ref, 'refs/tags/') diff --git a/scripts/update-all.sh b/scripts/update-all.sh index 295049b..8b99ce9 100755 --- a/scripts/update-all.sh +++ b/scripts/update-all.sh @@ -9,53 +9,53 @@ forceClearCache=0 isDevEnv=0 while getopts "hbcd" option do - case $option in - h) - echo -e "Update or install all Monarc modules, frontend views and migrate database." - echo -e "\t-b\tbypass migrate database" - echo -e "\t-c\tforce clear cache" - echo -e "\t-h\tdisplay this message" - exit 1 - ;; - b) - bypass=1 - echo "Migrate database don't execute !!!" - ;; - c) - forceClearCache=1 - ;; - d) - isDevEnv=1 - esac + case $option in + h) + echo -e "Update or install all Monarc modules, frontend views and migrate database." + echo -e "\t-b\tbypass migrate database" + echo -e "\t-c\tforce clear cache" + echo -e "\t-h\tdisplay this message" + exit 1 + ;; + b) + bypass=1 + echo "Migrate database don't execute !!!" + ;; + c) + forceClearCache=1 + ;; + d) + isDevEnv=1 + esac done checkout_to_latest_tag() { - if [ -d $1 ]; then - pushd $1 - git fetch --tags - tag=$(git describe --tags `git rev-list --tags --max-count=1`) - git checkout $tag -b $tag - git pull origin $tag - popd - fi + if [ -d $1 ]; then + pushd $1 + git fetch --tags + tag=$(git describe --tags `git rev-list --tags --max-count=1`) + git checkout $tag -b $tag + git pull origin $tag + popd + fi } migrate_module() { - if [[ -d $1 ]]; then - php ./vendor/robmorgan/phinx/bin/phinx migrate -c ./$1/migrations/phinx.php - fi + if [[ -d $1 ]]; then + php ./vendor/robmorgan/phinx/bin/phinx migrate -c ./$1/migrations/phinx.php + fi } if [[ ! -f "config/autoload/local.php" && $bypass -eq 0 ]]; then - echo "Configure Monarc (config/autoload/local.php)" - exit 1 + echo "Configure Monarc (config/autoload/local.php)" + exit 1 fi git pull if [ $? != 0 ]; then - echo "A problem occurred while retrieving remote files from repository." - exit 1 + echo "A problem occurred while retrieving remote files from repository." + exit 1 fi ./scripts/check_composer.sh @@ -64,38 +64,38 @@ if [[ $? -eq 1 ]]; then fi if [[ $isDevEnv -eq 0 ]]; then - composer ins -o --no-dev + composer ins -o --no-dev else - composer ins + composer ins fi pathCore="module/Monarc/Core" pathFO="module/Monarc/FrontOffice" if [[ $bypass -eq 0 ]]; then - if [ -e data/backup/credentialsmysql.cnf ]; then - backupdir=data/backup/$(date +"%Y%m%d_%H%M%S") - mkdir $backupdir - echo -e "${GREEN}Dumping database to $backupdir...${NC}" - mysqldump --defaults-file=data/backup/credentialsmysql.cnf --databases monarc_common > $backupdir/dump-common.sql - mysqldump --defaults-file=data/backup/credentialsmysql.cnf --databases monarc_cli > $backupdir/dump-cli.sql - else - echo -e "${GREEN}Database backup not configured. Skipping.${NC}" - fi - - migrate_module $pathCore - migrate_module $pathFO + if [ -e data/backup/credentialsmysql.cnf ]; then + backupdir=data/backup/$(date +"%Y%m%d_%H%M%S") + mkdir $backupdir + echo -e "${GREEN}Dumping database to $backupdir...${NC}" + mysqldump --defaults-file=data/backup/credentialsmysql.cnf --databases monarc_common > $backupdir/dump-common.sql + mysqldump --defaults-file=data/backup/credentialsmysql.cnf --databases monarc_cli > $backupdir/dump-cli.sql + else + echo -e "${GREEN}Database backup not configured. Skipping.${NC}" + fi + + migrate_module $pathCore + migrate_module $pathFO fi if [[ -d node_modules && -d node_modules/ng_anr ]]; then - if [[ -d node_modules/ng_anr/.git ]]; then - checkout_to_latest_tag node_modules/ng_client - checkout_to_latest_tag node_modules/ng_anr - else - npm update - fi + if [[ -d node_modules/ng_anr/.git ]]; then + checkout_to_latest_tag node_modules/ng_client + checkout_to_latest_tag node_modules/ng_anr + else + npm update + fi else - npm ci + npm ci fi cd node_modules/ng_client @@ -106,19 +106,18 @@ cd ../.. ./scripts/compile_translations.sh if [[ $forceClearCache -eq 1 ]]; then - # Clear doctrine cache - # Move to Monarc/Core Module.php - php ./public/index.php orm:clear-cache:metadata - php ./public/index.php orm:clear-cache:query - php ./public/index.php orm:clear-cache:result + # Clear Laminas cache + php ./public/index.php orm:clear-cache:metadata + php ./public/index.php orm:clear-cache:query + php ./public/index.php orm:clear-cache:result - # Clear ZF2 cache - touch ./data/cache/upgrade && chmod 777 ./data/cache/upgrade + # Clear Laminas cache + touch ./data/cache/upgrade && chmod 777 ./data/cache/upgrade fi if [[ $forceClearCache -eq 0 && $bypass -eq 0 ]]; then - # Clear ZF2 cache - touch ./data/cache/upgrade && chmod 777 ./data/cache/upgrade + # Clear Laminas cache + touch ./data/cache/upgrade && chmod 777 ./data/cache/upgrade fi ./scripts/update_config_variables.sh