Skip to content

Commit e7fce72

Browse files
authored
Merge pull request devopshq#2 from devopshq/develop
Freeze releaze 1.0
2 parents 2c6eb07 + 44538d4 commit e7fce72

10 files changed

Lines changed: 172 additions & 1 deletion

File tree

.travis.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
language: python
2+
python: '3.6'
3+
branches:
4+
only: # можно перечислить ветки из которых должен быть автоматический запуск сборки на каждый push кода в репозиторий
5+
- master
6+
- develop
7+
install: # раздел предварительной настройки окружения до сборки
8+
- pip install pytest coverage codacy-coverage # эти библиотеки используются для запуска юнит-тестов сбора статистики покрытия кода юнит-тестами для сервиса Codacy
9+
script: # основной шаг сборки, состоящий из последовательного запуска скриптов
10+
- printenv # для отладки очень помогает вывод переменных окружения в логах Travis CI, потом этот шаг можно удалить
11+
- ls -la # также для отладки, потом этот шаг можно удалить
12+
- coverage run -m py.test tests # собираем покрытие кода тестами
13+
- coverage xml # формируем отчёт для Codacy
14+
- python-codacy-coverage -r coverage.xml # аплоадим отчёт в Codacy
15+
deploy: # раздел деплоя в котором можно указать действия, которые нужно произвести с успешно собранным артефактом
16+
provider: pypi # например, Travis CI поддерживает автоматическую загрузку в PyPI через указание провайдера "pypi"
17+
user: devopshq # логин проекта в PyPI
18+
password: # зашифрованный пароль для PyPI через утилиту travis-encrypt подставьте в переменную secure ниже:
19+
secure: "e5lg5iPHSMCIpjEGeA0XuJPHaqzwQjLJefIyjQpRNSgf7h9kYwKYI1BH3b8T48QUw6r099QYSgsTJF1pDNWw7rdpTfiXP7pjvr1esmSSr7fyKVeRYNjc/st0n+Blu99At8HEwLXtoLRw2zD92VvTeZA01qRakT0M1bXccT+6pP3FolG5q2HCvzhzImc+Q2FXPSYGgZIYUo28GoYdeVztq+cFwWd27Onx8ROVU0FrVbGQxYS84reiLuI5aCjlv26SJ+5UQREh/RkYnWbogDPSkN+ee+Cl6r+C3WAtf67ac/l++T1ejsv5G+hSyJlWDUrl+2YbTe0ul2b5szo0YY2uW+w+xEJqynGQp6mH0OBm3MCGvEaV8DEnbM94b6PXz1LHi8opWZAGIVSyst+W3w7jwIMU9kUi1leu8jgAcNPUHIC3UhJ7fJrJC4lElOAAn+cdtT5sb6eC4kIOVL3RjCtodeFLAHVWQxeIXnnR07paZPTN8Y4OpYhIY3fcisl5tLnzFnVZ3lf7W9KnAD8mzqxJsPLYEyqAcLxugpEntgL4gRmt/3R4eZz8XRxFvgh3O4m8u38eIwIWyd1FvY9ZfdrkUxfqWdESjz3tU6M4ZDlEVKdsfXtAr2QIxCA/OefprsuQCBtnyc14p1xfe0IiPXTnh5NaeuypZrKw2YaG/nct+tw="
20+
distributions: sdist bdist_wheel # виды артефактов, которые нужно загрузить в PyPY, sdist загружает .tar.gz, bdist_wheel - загружает wheel-файл
21+
on:
22+
all_branches: true
23+
skip_cleanup: true
24+
after_script: # команды которые нужно выполнить после успешного окончания сборки и деплоя
25+
- echo "Deploy to PyPI finished."
26+
env:
27+
global: # здесь можно разместить общие переменные и секреты доступные для всех шагов сборки. Yапример, секрет для Codacy, зашифрованный через утилиту travis-encrypt подставьте в переменную secure ниже:
28+
- secure: "ZGjMqDQ7BE2Y/Aago40EpeRJWGM4SRt4PWmfFsRiDKJpkcXOpD+VXTDPHeCNVPrTg1O0PMVzfoEJAi1ST1ZnlJDmufelk9WjtZJFx5grUVAldcODrBQS7yuE5Ck9COExagHvQOmhu4G0EMnxxL1fv5UEc3ef+4513ve1YaKNctE8CjnTV1XCdaazKuDGBB49wuax7DynN/5D0hQYHw5rsxhwHY4YB4IXkjB74rTcp6tYF6FtFrhWioQ+K1aJOcfeqcwPjPGpY7VySmkh/iTxwAtkTrltVN3j9D2F5X276XEW5kFWm9B0x3ytztNkmJk0BSWH2za5QbhrOmRtIml52XnQVWWwDLUV7WgOpGiMEhdcvdlXA5i82uahSUL1svBfR4AQ8uI+e7NdTVkVHY5GvTq+Gd7u8Bp0QPenwMEif62mIZVVTk7IMq99JLLYAEE39K64rTZAivCaEqrfbX1ObMjyaMCeGP1Nu9evsEOM8DOsh8hMDU01gxSLUZFS0q+CKnRBsXEKhxtlNo6Wur260b23rJMrDeii2Q94OUmMbqus9qjZ8hwv5QEgDZgluZyOJsM1wLBqyn41FSBv3j7AiqA0o4RcROlg/paePBhX5NA1DpC1SOVs/E6P9Sio6vwvgQz28+oQ5tsw2jNxjM6cmzEpZFKj9Fe56IYA7pPi3tI="

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ ExampleProject
33
This is simple example of project in DevOpsHQ Community with basic functionality.
44
See english instruction here: https://github.com/devopshq/ExampleProject/blob/master/README_EN.md
55

6-
[![ExampleProject build status](https://travis-ci.org/devopshq/ExampleProject.svg)](https://travis-ci.org/devopshq/ExampleProject) [![ExampleProject code quality](https://api.codacy.com/project/badge/Grade/a533e2d46b9b471893b4991e89649212)](https://www.codacy.com/app/tim55667757/ExampleProject/dashboard) [![ExampleProject code coverage](https://api.codacy.com/project/badge/Coverage/a533e2d46b9b471893b4991e89649212)](https://www.codacy.com/app/tim55667757/ExampleProject/dashboard) [![ExampleProject on PyPI](https://img.shields.io/pypi/v/dohq-example-project.svg)](https://pypi.python.org/pypi/dohq-example-project) [![ExampleProject license](https://img.shields.io/pypi/l/dohq-example-project.svg)](https://github.com/devopshq/ExampleProject/blob/master/LICENSE)
6+
[![ExampleProject build status](https://travis-ci.org/devopshq/ExampleProject.svg)](https://travis-ci.org/devopshq/ExampleProject) [![ExampleProject code quality](https://api.codacy.com/project/badge/Grade/63aaf7dcbeda43f0b7eb1d70be4ed36b)](https://www.codacy.com/app/tim55667757/ExampleProject/dashboard) [![ExampleProject code coverage](https://api.codacy.com/project/badge/Coverage/63aaf7dcbeda43f0b7eb1d70be4ed36b)](https://www.codacy.com/app/tim55667757/ExampleProject/dashboard) [![ExampleProject on PyPI](https://img.shields.io/pypi/v/dohq-example-project.svg)](https://pypi.python.org/pypi/dohq-example-project) [![ExampleProject license](https://img.shields.io/pypi/l/dohq-example-project.svg)](https://github.com/devopshq/ExampleProject/blob/master/LICENSE)
77

88
***Содержание:***
99
- [Введение](#Introduction)

exampleproject/Main.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# -*- coding: utf-8 -*-
2+
3+
4+
# This is Main module for ExampleProject that do nosting.
5+
6+
7+
def Main():
8+
"""
9+
This is Main method that do nosting.
10+
"""
11+
return "This is Main module for ExampleProject that do nosting.\nRead more about DevOpsHQ Community here: https://github.com/devopshq/ExampleProject"
12+
13+
14+
if __name__ == "__main__":
15+
print(Main())

exampleproject/README_EN.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
ExampleProject
2+
==============
3+
This is simple example of project in DevOpsHQ Community with basic functionality.
4+
See full russian instruction here: https://github.com/devopshq/ExampleProject/blob/master/README.md
5+
6+
[![ExampleProject build status](https://travis-ci.org/devopshq/ExampleProject.svg)](https://travis-ci.org/devopshq/ExampleProject) [![ExampleProject code quality](https://api.codacy.com/project/badge/Grade/63aaf7dcbeda43f0b7eb1d70be4ed36b)](https://www.codacy.com/app/tim55667757/ExampleProject/dashboard) [![ExampleProject code coverage](https://api.codacy.com/project/badge/Coverage/63aaf7dcbeda43f0b7eb1d70be4ed36b)](https://www.codacy.com/app/tim55667757/ExampleProject/dashboard) [![ExampleProject on PyPI](https://img.shields.io/pypi/v/dohq-example-project.svg)](https://pypi.python.org/pypi/dohq-example-project) [![ExampleProject license](https://img.shields.io/pypi/l/dohq-example-project.svg)](https://github.com/devopshq/ExampleProject/blob/master/LICENSE)
7+
8+
9+
***... Soon there will be a translation of the Russian instruction ...***

exampleproject/__init__.py

Whitespace-only changes.

setup.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[metadata]
2+
description-file = README.md

setup.py

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
5+
from setuptools import setup
6+
import os
7+
8+
__version__ = '1.0' # Здесь можно менять глобальный мажор.минор вашего инструмента. Итоговая версия после сборки будет выглядеть так: [major.minor].[build] для релизных сборок и [major.minor.dev]build для нерелизных.
9+
# В дальнейшем узнать версию вашего установленного инструмента внутри программы возможно используя метод, аналогичный этому:
10+
# https://github.com/devopshq/FuzzyClassificator/blob/master/FuzzyClassificator.py#L27
11+
# import pkg_resources # часть стандартной библиотеки setuptools
12+
# version = pkg_resources.get_distribution('YourProject').version
13+
14+
# Логика версионирования в зависимости от веток настраивается ниже:
15+
if 'TRAVIS_BUILD_NUMBER' in os.environ and 'TRAVIS_BRANCH' in os.environ:
16+
print("This is TRAVIS-CI build")
17+
print("TRAVIS_BUILD_NUMBER = {}".format(os.environ['TRAVIS_BUILD_NUMBER']))
18+
print("TRAVIS_BRANCH = {}".format(os.environ['TRAVIS_BRANCH']))
19+
20+
__version__ += '.{}{}'.format(
21+
'' if 'release' in os.environ['TRAVIS_BRANCH'] or os.environ['TRAVIS_BRANCH'] == 'master' else 'dev',
22+
os.environ['TRAVIS_BUILD_NUMBER'],
23+
)
24+
25+
else:
26+
print("This is local build")
27+
__version__ += '.localbuild' # set version as major.minor.localbuild if local build: python setup.py install
28+
29+
print("ExampleProject build version = {}".format(__version__)) # Перед сборкой выведется сообщение о том, какая версия собирается
30+
31+
# Это основной раздел настроек setuptools для сборки вашей программы
32+
setup(
33+
name='dohq-example-project', # имя проекта под которым люди будут искать вашу программу в PyPI и инсталлить через "pip install dohq-example-project"
34+
35+
version=__version__,
36+
37+
description='About Example Project: https://github.com/devopshq/ExampleProject', # короткое описание проекта - отображается рядом с пакетом в PyPI
38+
39+
long_description='GitHub Pages: https://devopshq.github.io/ExampleProject/', # подробная документация должна быть доступна в GitHub Pages по этой ссылке
40+
41+
license='MIT', # только MIT лицензия для Open DevOps Community
42+
43+
author='Open DevOps Community', # укажите имя основного автора, либо укажите Open DevOps Community
44+
45+
author_email='[email protected]', # е-mail автора либо ссылка на Open DevOps Community
46+
47+
url='https://devopshq.github.io/ExampleProject/', # сюда пишем ссылку на GitHub Pages или другой сайт с документацией
48+
49+
download_url='https://github.com/devopshq/ExampleProject.git', # здесь указываем ссылку на проект в GitHub
50+
51+
entry_points={'console_scripts': ['exampleproject = exampleproject.Main:Main']}, # Точка входа указывает на основной метод, который нужно запустить при запуске программы из консоли. Например, если основной модуль в пакете exampleproject называется Main, то в данном примере будет запущен метод Main() этого скрипта, если вы наберёте в консоли команду "exampleproject".
52+
53+
classifiers=[ # все допустимые классификаторы для PyPI подробно перечислены на страничке: https://pypi.python.org/pypi?%3Aaction=list_classifiers
54+
'Development Status :: 5 - Production/Stable',
55+
'Environment :: Console',
56+
'Intended Audience :: Developers',
57+
'Topic :: Utilities',
58+
'License :: OSI Approved :: MIT License',
59+
'Natural Language :: Russian',
60+
'Programming Language :: Python :: 3.6',
61+
],
62+
63+
keywords=[ # перечислите все ключевые слова, которые ассоциируются с вашим инструментом, каждое слово отдельной записью
64+
'exampleproject',
65+
'PyPI',
66+
'DevOpsHQ',
67+
'devops',
68+
],
69+
70+
packages=[ # необходимо перечислить ВСЕ каталоги с пакетами, если они присутствуют в вашем проекте, либо оставить '.', что будет указывать на то, что корень проекта сам является пакетом (в корне должен быть __init__.py)
71+
'exampleproject',
72+
],
73+
74+
setup_requires=[ # необходимо перечислить ВСЕ библиотеки, от которых зависит сборка вашего инструмента
75+
],
76+
77+
tests_require=[ # необходимо перечислить ВСЕ библиотеки, которые должны быть установлены для запуска тестов
78+
'pytest',
79+
],
80+
81+
install_requires=[ # необходимо перечислить ВСЕ библиотеки, от которых зависит ваш инструмент (requirements), кроме стандартных библиотек, и они будут установлены автоматически при установке вашего инструмента
82+
],
83+
84+
package_data={ # необходимо перечислить ВСЕ файлы, которые должны войти в итоговый пакет, например:
85+
'': [
86+
'./exampleproject/*.py', # если проект содержит другие модули, их и все входящие в них файлы тоже нужно перечислить
87+
88+
'./tests/*.py', # все юнит-тесты, если вы хотите, чтобы люди могли их запускать после установки вашей библиотеки
89+
90+
'LICENSE', # файл лицензии нужно добавить в пакет
91+
'README.md', # файл документации нужно добавить в пакет
92+
],
93+
},
94+
95+
zip_safe=True,
96+
)

tests/__init__.py

Whitespace-only changes.

tests/conftest.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# -*- coding: utf-8 -*-
2+
3+
4+
def pytest_sessionstart(session):
5+
6+
print("This is pre-test part example.")

tests/test_Main.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# -*- coding: utf-8 -*-
2+
3+
4+
import pytest
5+
from exampleproject import Main
6+
7+
8+
class TestMain():
9+
10+
@pytest.fixture(scope='class', autouse=True)
11+
def init(self):
12+
print("This is start of test example.")
13+
14+
def test_Main(self):
15+
assert Main.Main() == "This is Main module for ExampleProject that do nosting.\nRead more about DevOpsHQ Community here: https://github.com/devopshq/ExampleProject"

0 commit comments

Comments
 (0)