From 62486c9a55ffa4803e74ba4cc441c8995f09851f Mon Sep 17 00:00:00 2001 From: Dima Date: Sat, 10 Oct 2020 18:58:25 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B5=D0=B7=D0=B4=20?= =?UTF-8?q?=D0=BD=D0=B0=20GA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/main.yml | 69 ++++++++++++++++++++++++++++++++++ .travis.yml | 77 -------------------------------------- sonar-project.properties | 19 ++++++++++ sonar-qube.sh | 22 ----------- tasks/coverage.os | 16 ++------ travis-ci.sh | 22 ----------- 6 files changed, 92 insertions(+), 133 deletions(-) create mode 100644 .github/workflows/main.yml delete mode 100644 .travis.yml create mode 100644 sonar-project.properties delete mode 100644 sonar-qube.sh delete mode 100755 travis-ci.sh diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..ec774ef --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,69 @@ +name: CI + +on: + push: + pull_request: + schedule: + # * is a special character in YAML so you have to quote this string + - cron: '0 0 * * 1' + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + oscript_version: ['1.2.0', 'dev', 'stable'] + + steps: + - uses: actions/checkout@v2 + + - name: Setup Onescript Action + uses: otymko/setup-onescript@v1.0 + with: + version: ${{ matrix.oscript_version }} + + - name: Install dependencies + run: | + opm install opm@1.0.2 + opm install 1testrunner; + opm install 1bdd; + opm install coverage; + opm install -l --dev + + - name: Configure env vars for SonarCloud scan + run: | + echo "::set-env name=PATH::/opt/sonar-scanner/bin:$PATH" + + - name: Compute branch name + uses: nixel2007/branch-name@v3 + + - name: Run tests + run: | + oscript ./tasks/coverage.os + + - name: SonarCloud Scan on push + if: github.repository == 'oscript-library/opm' && github.event_name == 'push' && matrix.os == 'ubuntu-latest' && matrix.oscript_version == 'dev' + uses: nixel2007/sonarcloud-github-action@v1.4 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + -Dsonar.host.url=https://sonar.openbsl.ru + -Dsonar.branch.name=${{ env.BRANCH_NAME }} + + - name: SonarCloud Scan on PR + if: github.repository == 'oscript-library/opm' && github.event_name == 'pull_request' && matrix.os == 'ubuntu-latest' && matrix.oscript_version == 'dev' + uses: nixel2007/sonarcloud-github-action@v1.4 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + -Dsonar.host.url=https://sonar.openbsl.ru + -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} + -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} + -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} + -Dsonar.scm.revision=${{ github.event.pull_request.head.sha }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 01cba2c..0000000 --- a/.travis.yml +++ /dev/null @@ -1,77 +0,0 @@ -sudo: required -language: generic - -notifications: - email: false -env: - global: - - CHANNEL=dev - - PACKAGE_NAME=opm - matrix: - - OSCRIPT_VERSION=1_0_21 - - OSCRIPT_VERSION=night-build -matrix: - allow_failures: - - env: OSCRIPT_VERSION=night-build - -services: - - docker - -addons: - sonarqube: true - -jdk: - - oraclejdk8 - -before_install: - # Load cached docker images - - if [[ -d $HOME/docker ]]; then ls $HOME/docker/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; fi - -before_cache: - # Save tagged docker images - - > - mkdir -p $HOME/docker && docker images -a --filter='dangling=false' --format '{{.Repository}}:{{.Tag}} {{.ID}}' - | xargs -n 2 -t sh -c 'test -e $HOME/docker/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker/$1.tar.gz' - -install: - - docker pull evilbeaver/onescript:1.0.21 - -script: - - docker version - - docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.0.20 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log - - grep 'Результат прогона тестов <Да>' /tmp/test.log -after_success: - # - bash <(curl -s https://codecov.io/bash) - - ./sonar-qube.sh - -cache: - directories: - - '$HOME/.m2/repository' - - '$HOME/.sonar/cache' - - '$HOME/docker' -jobs: - include: - - stage: Сборка и публикация github & hub.oscript.io - script: skip - before_deploy: - - docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.21 sh -c 'cd /work_dir; opm build ./ ; exit' - deploy: - - provider: releases - api_key: "$GITHUB_OAUTH_TOKEN" - file_glob: true - file: $PACKAGE_NAME*.ospx - skip_cleanup: true - on: - branch: master - tags: true - - provider: script - skip_cleanup: true - script: docker run -it -e GITHUB_OAUTH_TOKEN=$GITHUB_OAUTH_TOKEN -v $(pwd):/work_dir evilbeaver/onescript:1.0.21 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel dev --file ./$PACKAGE_NAME-*.ospx; exit' - on: - branch: develop - - provider: script - skip_cleanup: true - script: docker run -it -e GITHUB_OAUTH_TOKEN=$GITHUB_OAUTH_TOKEN -v $(pwd):/work_dir evilbeaver/onescript:1.0.21 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel stable --file ./$PACKAGE_NAME-*.ospx; exit' - on: - branch: master - tags: true diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..978bd08 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,19 @@ +# must be unique in a given SonarQube instance +sonar.projectKey=opm + +# this is the name displayed in the SonarQube UI +sonar.projectName=opm + +# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. +# Since SonarQube 4.2, this property is optional if sonar.modules is set. +# If not set, SonarQube starts looking for source code from the directory containing +# the sonar-project.properties file. + +sonar.sources=./src +sonar.tests=./tests + +# Encoding of the source code. Default is default system encoding +sonar.sourceEncoding=UTF-8 + +sonar.coverageReportPaths=./coverage/genericCoverage.xml +sonar.testExecutionReportPaths=./coverage/coverage.xml \ No newline at end of file diff --git a/sonar-qube.sh b/sonar-qube.sh deleted file mode 100644 index 2e333d4..0000000 --- a/sonar-qube.sh +++ /dev/null @@ -1,22 +0,0 @@ -temp=`cat src/core/Модули/КонстантыOpm.os | grep "ВерсияПродукта = " | sed 's|[^"]*"||' | sed -r 's/".+//'` -version=${temp##*|} - -if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then - if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then - sonar-scanner \ - -Dsonar.host.url=https://sonar.silverbulleters.org \ - -Dsonar.analysis.mode=issues \ - -Dsonar.github.pullRequest=$TRAVIS_PULL_REQUEST \ - -Dsonar.github.repository=$TRAVIS_REPO_SLUG \ - -Dsonar.github.oauth=$GITHUB_OAUTH_TOKEN \ - -Dsonar.login=$SONAR_TOKEN \ - -Dsonar.scanner.skip=false - - elif [ "$TRAVIS_BRANCH" == "develop" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then - sonar-scanner \ - -Dsonar.host.url=https://sonar.silverbulleters.org \ - -Dsonar.login=$SONAR_TOKEN \ - -Dsonar.projectVersion=$version\ - -Dsonar.scanner.skip=false - fi -fi \ No newline at end of file diff --git a/tasks/coverage.os b/tasks/coverage.os index afa612e..0827f03 100644 --- a/tasks/coverage.os +++ b/tasks/coverage.os @@ -2,29 +2,21 @@ #Использовать 1commands #Использовать fs -ФС.ОбеспечитьПустойКаталог("coverage"); -ПутьКСтат = "coverage/stat.json"; +ФС.ОбеспечитьПустойКаталог("coverage"); // TODO: убрать после исправления issue #5 в coverage Команда = Новый Команда; Команда.УстановитьКоманду("oscript"); -Команда.ДобавитьПараметр("-encoding=utf-8"); -Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат)); -Команда.ДобавитьПараметр("tasks/test.os"); +Команда.ДобавитьПараметр("tasks/test.os"); // Файла запуска тестов Команда.ПоказыватьВыводНемедленно(Истина); КодВозврата = Команда.Исполнить(); -Файл_Стат = Новый Файл(ПутьКСтат); - -ИмяПакета = "opm"; - ПроцессорГенерации = Новый ГенераторОтчетаПокрытия(); ПроцессорГенерации.ОтносительныеПути() - .ФайлСтатистики(Файл_Стат.ПолноеИмя) + .ИмяФайлаСтатистики() .GenericCoverage() .Cobertura() - .Clover(ИмяПакета) .Сформировать(); -ЗавершитьРаботу(КодВозврата); \ No newline at end of file +ЗавершитьРаботу(КодВозврата); diff --git a/travis-ci.sh b/travis-ci.sh deleted file mode 100755 index 90ec8d0..0000000 --- a/travis-ci.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -e - -echo "Устанавливаю версию OScript <$OSCRIPT_VERSION>" -curl -L http://oscript.io/downloads/$OSCRIPT_VERSION/deb > oscript.deb -dpkg -i oscript.deb -rm -f oscript.deb - -apt-get update -apt-get install -y python3 - -opm install 1testrunner; -opm install 1bdd; -opm install notify; -opm install coverage; -opm install; - -opm run coverage; - - -