diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml new file mode 100644 index 000000000..c7f506745 --- /dev/null +++ b/.github/workflows/python-app.yml @@ -0,0 +1,36 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: Python application + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + pytest diff --git a/Jenkinsfile b/Jenkinsfile index 6ac0de5bd..8c3720cd4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -10,6 +10,7 @@ pipeline { //Docker image and runs this image as a separate container. The Python container becomes //the agent that Jenkins uses to run the Build stage of your Pipeline project. image 'python:2-alpine' + } } steps { @@ -20,64 +21,8 @@ pipeline { //workspace directory for use in later stages. stash(name: 'compiled-results', includes: 'sources/*.py*') } - } - stage('Test') { - agent { - docker { - //This image parameter downloads the qnib:pytest Docker image and runs this image as a - //separate container. The pytest container becomes the agent that Jenkins uses to run the Test - //stage of your Pipeline project. - image 'qnib/pytest' - } - } - steps { - //This sh step executes pytest’s py.test command on sources/test_calc.py, which runs a set of - //unit tests (defined in test_calc.py) on the "calc" library’s add2 function. - //The --junit-xml test-reports/results.xml option makes py.test generate a JUnit XML report, - //which is saved to test-reports/results.xml - sh 'py.test --verbose --junit-xml test-reports/results.xml sources/test_calc.py' - } - post { - always { - //This junit step archives the JUnit XML report (generated by the py.test command above) and - //exposes the results through the Jenkins interface. - //The post section’s always condition that contains this junit step ensures that the step is - //always executed at the completion of the Test stage, regardless of the stage’s outcome. - junit 'test-reports/results.xml' - } - } - } - stage('Deliver') { - agent any - //This environment block defines two variables which will be used later in the 'Deliver' stage. - environment { - VOLUME = '$(pwd)/sources:/src' - IMAGE = 'cdrx/pyinstaller-linux:python2' - } - steps { - //This dir step creates a new subdirectory named by the build number. - //The final program will be created in that directory by pyinstaller. - //BUILD_ID is one of the pre-defined Jenkins environment variables. - //This unstash step restores the Python source code and compiled byte - //code files (with .pyc extension) from the previously saved stash. image] - //and runs this image as a separate container. - dir(path: env.BUILD_ID) { - unstash(name: 'compiled-results') - - //This sh step executes the pyinstaller command (in the PyInstaller container) on your simple Python application. - //This bundles your add2vals.py Python application into a single standalone executable file - //and outputs this file to the dist workspace directory (within the Jenkins home directory). - sh "docker run --rm -v ${VOLUME} ${IMAGE} 'pyinstaller -F add2vals.py'" - } - } - post { - success { - //This archiveArtifacts step archives the standalone executable file and exposes this file - //through the Jenkins interface. - archiveArtifacts "${env.BUILD_ID}/sources/dist/add2vals" - sh "docker run --rm -v ${VOLUME} ${IMAGE} 'rm -rf build dist'" - } - } + + } } } diff --git a/sources/add2vals.py b/sources/add2vals.py index d671e38ea..66c838f6b 100644 --- a/sources/add2vals.py +++ b/sources/add2vals.py @@ -1,6 +1,6 @@ ''' A simple command line tool that takes 2 values and adds them together using -the calc.py library's 'add2' function. +the calc.py library's 'add2' function. some edits going on ''' import sys diff --git a/sources/calc.py b/sources/calc.py index 368c55b2c..947e2ab8b 100644 --- a/sources/calc.py +++ b/sources/calc.py @@ -3,7 +3,7 @@ them together. If either value is a string (or both of them are) 'add2' ensures they are both strings, thereby resulting in a concatenated result. NOTE: If a value submitted to the 'add2' function is a float, it must be done so -in quotes (i.e. as a string). +in quotes (i.e. as a string).hureihvhoj ijrijorij ''' # If 'value' is not an integer, convert it to a float and failing that, a string. diff --git a/sources/dev/dev b/sources/dev/dev new file mode 100644 index 000000000..e69de29bb diff --git a/sources/dev/test.txt b/sources/dev/test.txt new file mode 100644 index 000000000..145512b06 --- /dev/null +++ b/sources/dev/test.txt @@ -0,0 +1 @@ +hur gkriorh lrijljkhb