Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub actions + исправление тестов #158

Merged
merged 7 commits into from
Mar 14, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/workflows/qa.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# MIT License
# Copyright (C) 2020 Tymko Oleg <[email protected]> and contributors
# All rights reserved.

name: Контроль качества
# Любой пуш и pr в проекте но с фильтром по основному проекту
on: [push, pull_request]

env:
# отключение безопасности установки
ACTIONS_ALLOW_UNSECURE_COMMANDS: true

jobs:
build:
if: github.repository == 'artbear/1commands'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
oscript_version: ['1.4.0']

steps:
# Загрузка проекта
- name: Актуализация
uses: actions/checkout@v2
with:
fetch-depth: 0

# https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions
- name: Извлечение имени текущей ветки
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch

# Установка OneScript конкретной версии
- name: Установка OneScript
uses: otymko/[email protected]
with:
version: ${{ matrix.oscript_version }}

# Установка зависимостей пакета
- name: Установка зависимостей
run: |
opm install opm
opm install --dev

# Запуск тестов и сбор покрытия кода
- name: Покрытие кода
run: oscript ./tasks/coverage.os

- name: Извлечение версии пакета
shell: bash
run: echo "##[set-output name=version;]`cat packagedef | grep ".Версия(" | sed 's|[^"]*"||' | sed -r 's/".+//'`"
id: extract_version

- name: Установка Sonar-scanner
uses: warchant/setup-sonar-scanner@v1

# Анализ проекта в SonarQube (ветка)
- name: Анализ в SonarQube (branch)
if: github.event_name == 'push'
run: sonar-scanner
-Dsonar.login=${{ secrets.SONARQUBE_TOKEN }}
-Dsonar.host.url=${{ secrets.SONARQUBE_HOST }}
-Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }}
-Dsonar.projectVersion=${{ steps.extract_version.outputs.version }}

# Анализ проекта в SonarQube (PR)
# https://docs.sonarqube.org/latest/analysis/pull-request/
- name: Анализ в SonarQube (pull-request)
if: github.event_name == 'pull_request'
run: sonar-scanner
-Dsonar.login=${{ secrets.SONARQUBE_TOKEN }}
-Dsonar.host.url=${{ secrets.SONARQUBE_HOST }}
-Dsonar.branch.name=${{ steps.extract_branch.outputs.branch }}
-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 }}
59 changes: 59 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# MIT License
# Copyright (C) 2020 Tymko Oleg <[email protected]> and contributors
# All rights reserved.

name: Подготовка релиза и публикация в хабе
# Только события создания и изменения релиза
on:
release:
types: [published, edited]

env:
PACKAGE_MASK: 1commands-*.ospx

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.4.0']

steps:
# Загрузка проекта
- name: Актуализация
uses: actions/checkout@v2

# Установка OneScript конкретной версии
- name: Установка OneScript
uses: otymko/[email protected]
with:
version: ${{ matrix.oscript_version }}

# Установка зависимостей пакета
- name: Установка зависимостей
run: |
opm install opm
opm install

- name: Сборка пакета
run: opm build

- name: Заливка артефактов
uses: actions/upload-artifact@v2
with:
name: package.zip
path: ./${{ env.PACKAGE_MASK }}

- name: Заливка в релиз
uses: AButler/[email protected]
with:
files: ./${{ env.PACKAGE_MASK }}
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Публикация в hub.oscript.io
shell: bash
run: opm push -f ./${{ env.PACKAGE_MASK }} --token ${{ env.TOKEN }} -c stable
env:
TOKEN: ${{ secrets.OSHUB_TOKEN }}
37 changes: 37 additions & 0 deletions .github/workflows/testing.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# MIT License
# Copyright (C) 2020 Tymko Oleg <[email protected]> and contributors
# All rights reserved.

name: Тестирование
# Любой пуш и pr в проекте
on: [push, pull_request]

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
oscript_version: ['1.4.0']

steps:
# Загрузка проекта
- name: Актуализация
uses: actions/checkout@v2

# Установка OneScript конкретной версии
- name: Установка OneScript
uses: otymko/[email protected]
with:
version: ${{ matrix.oscript_version }}

# Установка зависимостей пакета
- name: Установка зависимостей
run: |
opm install opm
opm install --dev

# Задача тестирования, в результате ожидается успешное выполнение
- name: Тестирование
run: oscript ./tasks/test.os
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# Файлы
exec-log.txt
exec.log
gen.log
Expand All @@ -7,5 +8,9 @@ tests/junit-log.xml
bdd-log.xml
tests.xml
bdd-lib.xml
bdd-exec.xml

# Каталоги
.scannerwork/
oscript_modules/
coverage/
3 changes: 3 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This product contains parts of oscript-actions-template, which is licensed under the MIT License.
The source code for this software is available from
https://github.com/silverbulleters/oscript-actions-template.git
27 changes: 17 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,28 @@
<!-- TOC -->

- [1BDD для OneScript](#1bdd-для-onescript)
- [Командная строка запуска](#командная-строка-запуска)
- [Формат файла фичи](#формат-файла-фичи)
- [Пример файла фичи](#пример-файла-фичи)
- [Формат файла шагов](#формат-файла-шагов)
- [Пример файла шагов](#пример-файла-шагов)
- [API фреймворка](#api-фреймворка)
- [Стандартная библиотека](#стандартная-библиотека)
- [Расширения для Visual Studio Code](#расширения)
- [Командная строка запуска](#командная-строка-запуска)
- [Формат файла фичи](#формат-файла-фичи)
- [Пример файла фичи](#пример-файла-фичи)
- [Формат файла шагов](#формат-файла-шагов)
- [Пример файла шагов](#пример-файла-шагов)
- [API фреймворка](#api-фреймворка)
- [Стандартная библиотека](#стандартная-библиотека)
- [Расширения для Visual Studio Code](#расширения-для-visual-studio-code)

<!-- /TOC -->

[![GitHub release](https://img.shields.io/github/release/artbear/1bdd.svg)](https://github.com/artbear/1bdd/releases) [![Build status](https://ci.appveyor.com/api/projects/status/vbnk445352crljjn?svg=true)](https://ci.appveyor.com/project/artbear/1bdd)
[![GitHub release](https://img.shields.io/github/release/artbear/1bdd.svg)](https://github.com/artbear/1bdd/releases)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/artbear/1bdd/%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5?style=flat-square)](https://github.com/artbear/1bdd/actions)
[![Статус Порога Качества](https://sonar.openbsl.ru/api/project_badges/measure?project=1bdd&metric=alert_status)](https://sonar.openbsl.ru/dashboard?id=1bdd)
[![Покрытие](https://sonar.openbsl.ru/api/project_badges/measure?project=1bdd&metric=coverage)](https://sonar.openbsl.ru/dashboard?id=1bdd)
[![Технический долг](https://sonar.openbsl.ru/api/project_badges/measure?project=1bdd&metric=sqale_index)](https://sonar.openbsl.ru/dashboard?id=1bdd)
[![Строки кода](https://sonar.openbsl.ru/api/project_badges/measure?project=1bdd&metric=ncloc)](https://sonar.openbsl.ru/dashboard?id=1bdd)

<!-- [![Build status](https://ci.appveyor.com/api/projects/status/vbnk445352crljjn?svg=true)](https://ci.appveyor.com/project/artbear/1bdd)
[![Build Status](https://travis-ci.org/artbear/1bdd.svg?branch=develop)](https://travis-ci.org/artbear/1bdd)
[![Quality Gate](https://sonar.silverbulleters.org/api/badges/gate?key=opensource-1bdd)](https://sonar.silverbulleters.org/dashboard?id=opensource-1bdd)
[![Tech Debt](https://sonar.silverbulleters.org/api/badges/measure?key=opensource-1bdd&metric=sqale_debt_ratio)](https://sonar.silverbulleters.org/dashboard?id=opensource-1bdd)
[![Tech Debt](https://sonar.silverbulleters.org/api/badges/measure?key=opensource-1bdd&metric=sqale_debt_ratio)](https://sonar.silverbulleters.org/dashboard?id=opensource-1bdd) -->

[![Join the chat at https://gitter.im/artbear/1bdd](https://badges.gitter.im/artbear/1bdd.svg)](https://gitter.im/artbear/1bdd?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Здесь вы можете задавать любые вопросы разработчикам и активным участникам.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,22 +31,23 @@
И В подкаталоге "folder0/folder01" рабочего каталога существует файл "file01"

Сценарий: Копирование файлов

Когда Я копирую файл "steps-generate-tests.os" из каталога "tests" проекта в рабочий каталог
И Я копирую файл "test-report.xml" из каталога "tests/fixtures" проекта в рабочий каталог
И Я копирую файл "БезПараметров.feature" из каталога "tests/fixtures" проекта в рабочий каталог
И Я копирую файл "fixtures/БезПараметров.feature" из каталога "tests" проекта в рабочий каталог

И Я копирую файл "steps-generate-tests.os" из каталога "tests" проекта в подкаталог "folder0" рабочего каталога
И Я копирую файл "exec-feature-tests.os" из каталога "tests" проекта в подкаталог "folder0/folder01" рабочего каталога
И Я копирую файл "test-report.xml" из каталога "tests/fixtures" проекта в подкаталог "folder0" рабочего каталога
И Я копирую файл "fixtures/test-report.xml" из каталога "tests" проекта в подкаталог "folder0/folder01" рабочего каталога
И Я копирую файл "БезПараметров.feature" из каталога "tests/fixtures" проекта в подкаталог "folder0" рабочего каталога
И Я копирую файл "fixtures/БезПараметров.feature" из каталога "tests" проекта в подкаталог "folder0/folder01" рабочего каталога

Тогда В рабочем каталоге существует файл "steps-generate-tests.os"
И В рабочем каталоге существует файл "test-report.xml"
И В рабочем каталоге существует файл "БезПараметров.feature"
И В рабочем каталоге существует файл "БезПараметров.feature"
И В подкаталоге "folder0" рабочего каталога существует файл "steps-generate-tests.os"
И В подкаталоге "folder0/folder01" рабочего каталога существует файл "exec-feature-tests.os"
И В подкаталоге "folder0" рабочего каталога существует файл "test-report.xml"
И В подкаталоге "folder0/folder01" рабочего каталога существует файл "test-report.xml"
И В подкаталоге "folder0" рабочего каталога существует файл "БезПараметров.feature"
И В подкаталоге "folder0/folder01" рабочего каталога существует файл "БезПараметров.feature"

Сценарий: Копирование каталогов
Когда Я копирую каталог "fixtures" из каталога "tests" проекта в рабочий каталог
Expand Down
3 changes: 3 additions & 0 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
.ЗависитОт("1commands", "1.5.0")
.ЗависитОт("fs", "1.1.0")
.ЗависитОт("strings", "0.4.1")
.РазработкаЗависитОт("1testrunner")
.РазработкаЗависитОт("asserts")
.РазработкаЗависитОт("coverage")
.ВключитьФайл("src")
.ВключитьФайл("tests")
.ВключитьФайл("features")
Expand Down
15 changes: 12 additions & 3 deletions sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,26 @@ sonar.organization=sonar-opensource-add
# this is the name displayed in the SonarQube UI
sonar.projectName=BDD for OneScript

sonar.links.homepage=https://github.com/artbear/1bdd
sonar.links.scm=https://github.com/artbear/1bdd
sonar.links.issue=https://github.com/artbear/1bdd/issues
# sonar.links.ci=

# 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=.
sonar.sources=./src
sonar.tests=./features

# sonar.exclusions=build/**,**/*.xml,**/*.json,tools/Sikuli/**/*.html,tools/**
# sonar.inclusions=**/*.bsl, **/*.os
sonar.inclusions=**/*.bsl, **/*.os

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

# sonar.coverageReportPaths=coverage/genericCoverage.xml
sonar.coverageReportPaths=coverage/genericCoverage.xml

# адрес сервера SonarQube, по умолчанию текущий компьютер
sonar.host.url=https://sonar.openbsl.ru
41 changes: 41 additions & 0 deletions tasks/coverage.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#Использовать 1commands
#Использовать fs
#Использовать coverage

ИмяПакета = "1bdd";

ИмяКаталогаФайловПокрытия = "coverage";
ИмяОбщегоФайлаПокрытия = "stat.json";
ШаблонИменФайловПокрытия = "*.json";

ФС.ОбеспечитьПустойКаталог(ИмяКаталогаФайловПокрытия);
ПутьКСтат = ОбъединитьПути(ИмяКаталогаФайловПокрытия, ИмяОбщегоФайлаПокрытия);

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

Команда = Новый Команда;
Команда.УстановитьКоманду("oscript");
Если НЕ ЭтоWindows Тогда
Команда.ДобавитьПараметр("-encoding=utf-8");
КонецЕсли;
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
Команда.ДобавитьПараметр("tasks/test.os coverage");
Команда.ПоказыватьВыводНемедленно(Истина);

КодВозврата = Команда.Исполнить();

Файл_Стат = Новый Файл(ПутьКСтат);

ПроцессорГенерации = Новый ГенераторОтчетаПокрытия();

ПроцессорГенерации.ОтносительныеПути()
.РабочийКаталог(ИмяКаталогаФайловПокрытия)
.ИмяФайлаСтатистики(ШаблонИменФайловПокрытия)
.ФайлСтатистики(Файл_Стат.ПолноеИмя)
.GenericCoverage()
.Cobertura()
.Clover(ИмяПакета)
.Сформировать();

ЗавершитьРаботу(0); // TODO КодВозврата
Loading