1
0
mirror of synced 2024-11-23 13:56:08 +03:00

Move CI to GitHub Actions (#158)

This commit is contained in:
Pavel 2020-11-23 15:38:53 +03:00 committed by GitHub
parent 460b254a13
commit e705ba456a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 133 additions and 88 deletions

113
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,113 @@
name: ci
on:
push:
branches:
- '**'
tags-ignore:
- '*.*'
pull_request:
env:
DB_BITRIX_HOST: 0.0.0.0
DB_BITRIX_LOGIN: root
DB_BITRIX_PASS: root
DB_BITRIX_NAME: bitrix
BITRIX_PATH: ${{ github.workspace }}/bitrix
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
php-version: ['7.1', '7.2', '7.3']
bitrix-edition: ['small_business_encode', 'business_encode']
services:
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: ${{ env.DB_BITRIX_PASS }}
MYSQL_DATABASE: bitrix
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5
steps:
- uses: actions/checkout@v2
- name: Setup PHP ${{ matrix.php-version }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
ini-values: short_open_tag=On, mbstring.func_overload=2, mbstring.internal_encoding="UTF-8"
coverage: xdebug
- name: Install Bitrix
env:
BITRIX_EDITION: ${{ matrix.bitrix-edition }}
run: make bitrix_install
- name: Enable debug mode for tests
run: php bin/enable_debugging "${{ env.BITRIX_PATH }}"
- name: Validate composer.json and composer.lock
run: composer validate
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v2
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: make deps
- name: Run tests
run: make test
- name: Coverage
run: bash <(curl -s https://codecov.io/bash)
deploy:
needs: ['test']
if: success() && github.event_name == 'push' && github.repository_owner == 'retailcrm' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup PHP 7.2
uses: shivammathur/setup-php@v2
with:
php-version: 7.2
ini-values: short_open_tag=On, mbstring.func_overload=2, mbstring.internal_encoding="UTF-8"
- name: Build release
run: |
git fetch origin --unshallow --tags
export CURRENT_VERSION=`php bin/bitrix-version`
export ARCHIVE_PATH="${{ github.workspace }}/release/$CURRENT_VERSION.tar.gz"
export LAST_TAG=`git describe --tags $(git rev-list --tags --max-count=1) || true`
echo CURRENT_VERSION=$CURRENT_VERSION >> $GITHUB_ENV
echo LAST_TAG=$LAST_TAG >> $GITHUB_ENV
echo ARCHIVE_NAME="$CURRENT_VERSION.tar.gz" >> $GITHUB_ENV
echo ARCHIVE_PATH=$ARCHIVE_PATH >> $GITHUB_ENV
echo RELEASE_TAG=v$CURRENT_VERSION >> $GITHUB_ENV
make build_release
- name: Create Release
id: create_release
uses: actions/create-release@v1
if: env.LAST_TAG != env.RELEASE_TAG
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.RELEASE_TAG }}
release_name: ${{ env.RELEASE_TAG }}
body_path: ${{ github.workspace }}/intaro.retailcrm/description.ru
draft: false
prerelease: false
- name: Upload Release Asset
id: upload-release-asset
if: env.LAST_TAG != env.RELEASE_TAG
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.ARCHIVE_PATH }}
asset_name: ${{ env.ARCHIVE_NAME }}
asset_content_type: application/gzip
- name: Cleanup
if: env.LAST_TAG != env.RELEASE_TAG
run: make cleanup

View File

@ -1,70 +0,0 @@
os: linux
dist: trusty
language: php
if: tag IS blank
env:
global:
- DB_BITRIX_HOST=localhost
- DB_BITRIX_LOGIN=root
- DB_BITRIX_PASS=root
- DB_BITRIX_NAME=bitrix
- BITRIX_PATH=$TRAVIS_BUILD_DIR/bitrix
stages:
- test
- deploy
install:
- echo 'short_open_tag = On' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
- echo 'mbstring.func_overload = 2' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
- echo 'mbstring.internal_encoding = "UTF-8"' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
- export LAST_TAG=`git describe --abbrev=0 --tags`
- export CURRENT_VERSION=v`php bin/bitrix-version`
before_script:
- make create_db
- make bitrix_install
script: make test
jobs:
include:
- php: 7.0
env: NOT_USE_VENDOR=1 BITRIX_EDITION=small_business_encode
after_success: bash <(curl -s https://codecov.io/bash)
- php: 7.1
env: BITRIX_EDITION=small_business_encode
- php: 7.2
env: BITRIX_EDITION=small_business_encode
- php: 7.3
env: BITRIX_EDITION=small_business_encode
- php: 7.0
env: NOT_USE_VENDOR=1 BITRIX_EDITION=business_encode
- php: 7.1
env: BITRIX_EDITION=business_encode
- php: 7.2
env: BITRIX_EDITION=business_encode
- php: 7.3
env: BITRIX_EDITION=business_encode
- stage: deploy
php: 7.1
before_script: export VERSION=`php bin/bitrix-version`
script: make build_release
before_deploy:
- export ARCHIVE_NAME=$TRAVIS_BUILD_DIR/release/$VERSION.tar.gz
- git config --local user.name "retailCRM"
- git config --local user.email "support@retailcrm.ru"
- export TRAVIS_TAG=v$VERSION
- git tag $TRAVIS_TAG
deploy:
provider: releases
token: $GITHUB_OAUTH_TOKEN
file: $ARCHIVE_NAME
skip_cleanup: true
on:
condition: "$LAST_TAG != $CURRENT_VERSION"
if: branch = master AND type = push AND fork = false
after_deploy: make cleanup

View File

@ -1,13 +1,9 @@
ROOT_DIR=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) ROOT_DIR=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
test: prepare_module test: prepare_module
ifeq ($(NOT_USE_VENDOR),1)
composer tests7
else
composer tests composer tests
endif
prepare_module: deps prepare_module:
composer pre-module-install composer pre-module-install
deps: deps:
@ -29,29 +25,25 @@ bitrix_install: download_bitrix
download_bitrix: download_bitrix:
ifeq ("$(wildcard $(BITRIX_PATH)/bitrix/php_interface/dbconn.php)","") ifeq ("$(wildcard $(BITRIX_PATH)/bitrix/php_interface/dbconn.php)","")
wget -O /tmp/$(BITRIX_EDITION).tar.gz https://www.1c-bitrix.ru/download/$(BITRIX_EDITION).tar.gz wget --progress=dot -e dotbytes=10M -O /tmp/$(BITRIX_EDITION).tar.gz https://www.1c-bitrix.ru/download/$(BITRIX_EDITION).tar.gz
mkdir -p $(BITRIX_PATH) mkdir -p $(BITRIX_PATH)
chmod -R 777 $(BITRIX_PATH) chmod -R 777 $(BITRIX_PATH)
tar -xf /tmp/$(BITRIX_EDITION).tar.gz -C $(BITRIX_PATH) tar -xf /tmp/$(BITRIX_EDITION).tar.gz -C $(BITRIX_PATH)
rm /tmp/$(BITRIX_EDITION).tar.gz rm /tmp/$(BITRIX_EDITION).tar.gz
endif endif
create_db:
echo "USE mysql;\nUPDATE user SET password=PASSWORD('root') WHERE user='root';\nFLUSH PRIVILEGES;\n" | mysql -u root
mysqladmin create $(DB_BITRIX_NAME) --user=$(DB_BITRIX_LOGIN) --password=$(DB_BITRIX_PASS)
build_release: build_release:
ifneq ($(LAST_TAG),$(CURRENT_VERSION)) ifneq ($(LAST_TAG),$(RELEASE_TAG))
git diff --name-status $(LAST_TAG) HEAD > $(ROOT_DIR)/release/diff git diff --name-status $(LAST_TAG) HEAD > $(ROOT_DIR)/release/diff
php bin/build-release php bin/build-release
bash bin/build $(VERSION) $(ROOT_DIR)/release/ bash bin/build $(CURRENT_VERSION) $(ROOT_DIR)/release/
else else
@exit 0 @exit 0
endif endif
cleanup: cleanup:
@rm -rf $(ROOT_DIR)/release/$(VERSION) @rm -rf $(ROOT_DIR)/release/$(CURRENT_VERSION)
@rm $(ROOT_DIR)/release/$(VERSION).tar.gz @rm $(ROOT_DIR)/release/$(CURRENT_VERSION).tar.gz
# docker commands # docker commands
install: install:

View File

@ -1,4 +1,4 @@
[![Build Status](https://img.shields.io/travis/retailcrm/bitrix-module/master.svg?style=flat-square)](https://travis-ci.org/retailcrm/bitrix-module) [![Build Status](https://github.com/retailcrm/bitrix-module/workflows/ci/badge.svg)](https://github.com/retailcrm/bitrix-module/actions)
[![Coverage](https://img.shields.io/codecov/c/gh/retailcrm/bitrix-module/master.svg?style=flat-square)](https://codecov.io/gh/retailcrm/bitrix-module) [![Coverage](https://img.shields.io/codecov/c/gh/retailcrm/bitrix-module/master.svg?style=flat-square)](https://codecov.io/gh/retailcrm/bitrix-module)
[![GitHub release](https://img.shields.io/github/release/retailcrm/bitrix-module.svg?style=flat-square)](https://github.com/retailcrm/bitrix-module/releases) [![GitHub release](https://img.shields.io/github/release/retailcrm/bitrix-module.svg?style=flat-square)](https://github.com/retailcrm/bitrix-module/releases)
[![PHP version](https://img.shields.io/badge/PHP->=5.3-blue.svg?style=flat-square)](https://php.net/) [![PHP version](https://img.shields.io/badge/PHP->=5.3-blue.svg?style=flat-square)](https://php.net/)

View File

@ -16,6 +16,7 @@ if (!file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/install/wizar
throw new \RuntimeException('Bitrix`s install files is not exists'); throw new \RuntimeException('Bitrix`s install files is not exists');
} }
ob_start();
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/install/wizard/wizard.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/install/wizard/wizard.php';
require_once __DIR__ . '/../helpers/installation/ExtendedCreateModulesStep.php'; require_once __DIR__ . '/../helpers/installation/ExtendedCreateModulesStep.php';
require_once __DIR__ . '/../helpers/installation/Installer.php'; require_once __DIR__ . '/../helpers/installation/Installer.php';
@ -24,6 +25,8 @@ $installer = new Installer();
$step = $argv[1]; $step = $argv[1];
ob_clean();
switch ($step) { switch ($step) {
case 'db_type': case 'db_type':
$installer->dbTypeStep(); $installer->dbTypeStep();

View File

@ -3,7 +3,7 @@
set_time_limit(0); set_time_limit(0);
if (ini_get('memory_limit') > 0 && (int)ini_get('memory_limit') < 784) { if (ini_get('memory_limit') > 0 && (int) ini_get('memory_limit') < 784) {
ini_set('memory_limit', '784M'); ini_set('memory_limit', '784M');
} }

6
bin/enable_debugging Normal file
View File

@ -0,0 +1,6 @@
#!/usr/bin/env php
<?php
$file = $argv[1] . '/bitrix/.settings.php';
$params = include $file;
$params['exception_handling']['value']['debug'] = true;
file_put_contents($file, "<?php\nreturn " . var_export($params, true) . ';', LOCK_EX);

View File

@ -2,8 +2,7 @@
"name": "retailcrm/bitrix-module", "name": "retailcrm/bitrix-module",
"scripts": { "scripts": {
"pre-module-install": "cp -R intaro.retailcrm $BITRIX_PATH/bitrix/modules", "pre-module-install": "cp -R intaro.retailcrm $BITRIX_PATH/bitrix/modules",
"tests": "php vendor/bin/phpunit -c phpunit.xml.dist --whitelist=$BITRIX_PATH/bitrix/modules/intaro.retailcrm", "tests": "php vendor/bin/phpunit -c phpunit.xml.dist --whitelist=$BITRIX_PATH/bitrix/modules/intaro.retailcrm"
"tests7": "phpunit -c phpunit.xml.dist --whitelist=$BITRIX_PATH/bitrix/modules/intaro.retailcrm"
}, },
"description": "Integration module for Bitrix & RetailCRM", "description": "Integration module for Bitrix & RetailCRM",
"type": "bitrix-module", "type": "bitrix-module",

View File

@ -1,6 +1,8 @@
<?php <?php
ob_start();
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/install/wizard/wizard.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/install/wizard/wizard.php';
ob_clean();
/** /**
* Class Installer * Class Installer