From 35ff84b937c8da514b0aae7a2074eeb69e0ba256 Mon Sep 17 00:00:00 2001 From: guidezSeb Date: Tue, 12 Jan 2021 16:38:59 +0100 Subject: [PATCH] :construction_worker: :wrench: implement dockerfile and CI --- .circleci/config.yml | 119 ++++ Dockerfile | 12 + node_modules/.bin/pip | 9 + node_modules/.bin/pip.cmd | 9 + node_modules/.bin/pip.ps1 | 11 + node_modules/.package-lock.json | 52 ++ node_modules/freckle/README.md | 82 +++ node_modules/freckle/example/users.js | 37 ++ node_modules/freckle/package.json | 16 + node_modules/minimist/.travis.yml | 4 + node_modules/minimist/LICENSE | 18 + node_modules/minimist/example/parse.js | 2 + node_modules/minimist/index.js | 187 +++++++ node_modules/minimist/package.json | 40 ++ node_modules/minimist/readme.markdown | 73 +++ node_modules/minimist/test/bool.js | 119 ++++ node_modules/minimist/test/dash.js | 24 + node_modules/minimist/test/default_bool.js | 20 + node_modules/minimist/test/dotted.js | 22 + node_modules/minimist/test/long.js | 31 ++ node_modules/minimist/test/num.js | 36 ++ node_modules/minimist/test/parse.js | 197 +++++++ node_modules/minimist/test/parse_modified.js | 9 + node_modules/minimist/test/short.js | 67 +++ node_modules/minimist/test/whitespace.js | 8 + node_modules/optimist/.travis.yml | 4 + node_modules/optimist/LICENSE | 21 + node_modules/optimist/example/bool.js | 10 + .../optimist/example/boolean_double.js | 7 + .../optimist/example/boolean_single.js | 7 + node_modules/optimist/example/default_hash.js | 8 + .../optimist/example/default_singles.js | 7 + node_modules/optimist/example/divide.js | 8 + node_modules/optimist/example/line_count.js | 20 + .../optimist/example/line_count_options.js | 29 + .../optimist/example/line_count_wrap.js | 29 + node_modules/optimist/example/nonopt.js | 4 + node_modules/optimist/example/reflect.js | 2 + node_modules/optimist/example/short.js | 3 + node_modules/optimist/example/string.js | 11 + .../optimist/example/usage-options.js | 19 + node_modules/optimist/example/xup.js | 10 + node_modules/optimist/index.js | 343 ++++++++++++ node_modules/optimist/package.json | 39 ++ node_modules/optimist/readme.markdown | 513 ++++++++++++++++++ node_modules/optimist/test/_.js | 71 +++ node_modules/optimist/test/_/argv.js | 2 + node_modules/optimist/test/_/bin.js | 3 + node_modules/optimist/test/dash.js | 31 ++ node_modules/optimist/test/parse.js | 446 +++++++++++++++ node_modules/optimist/test/parse_modified.js | 14 + node_modules/optimist/test/short.js | 16 + node_modules/optimist/test/usage.js | 292 ++++++++++ node_modules/optimist/test/whitespace.js | 8 + node_modules/pip/.npmignore | 1 + node_modules/pip/config.json | 5 + node_modules/pip/package.json | 21 + node_modules/pip/readme.md | 43 ++ node_modules/wordwrap/LICENSE | 18 + node_modules/wordwrap/README.markdown | 70 +++ node_modules/wordwrap/example/center.js | 10 + node_modules/wordwrap/example/meat.js | 3 + node_modules/wordwrap/index.js | 76 +++ node_modules/wordwrap/package.json | 37 ++ node_modules/wordwrap/test/break.js | 30 + node_modules/wordwrap/test/idleness.txt | 63 +++ node_modules/wordwrap/test/wrap.js | 31 ++ package-lock.json | 92 ++++ package.json | 5 + 69 files changed, 3686 insertions(+) create mode 100644 .circleci/config.yml create mode 100644 Dockerfile create mode 100644 node_modules/.bin/pip create mode 100644 node_modules/.bin/pip.cmd create mode 100644 node_modules/.bin/pip.ps1 create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/freckle/README.md create mode 100644 node_modules/freckle/example/users.js create mode 100644 node_modules/freckle/package.json create mode 100644 node_modules/minimist/.travis.yml create mode 100644 node_modules/minimist/LICENSE create mode 100644 node_modules/minimist/example/parse.js create mode 100644 node_modules/minimist/index.js create mode 100644 node_modules/minimist/package.json create mode 100644 node_modules/minimist/readme.markdown create mode 100644 node_modules/minimist/test/bool.js create mode 100644 node_modules/minimist/test/dash.js create mode 100644 node_modules/minimist/test/default_bool.js create mode 100644 node_modules/minimist/test/dotted.js create mode 100644 node_modules/minimist/test/long.js create mode 100644 node_modules/minimist/test/num.js create mode 100644 node_modules/minimist/test/parse.js create mode 100644 node_modules/minimist/test/parse_modified.js create mode 100644 node_modules/minimist/test/short.js create mode 100644 node_modules/minimist/test/whitespace.js create mode 100644 node_modules/optimist/.travis.yml create mode 100644 node_modules/optimist/LICENSE create mode 100644 node_modules/optimist/example/bool.js create mode 100644 node_modules/optimist/example/boolean_double.js create mode 100644 node_modules/optimist/example/boolean_single.js create mode 100644 node_modules/optimist/example/default_hash.js create mode 100644 node_modules/optimist/example/default_singles.js create mode 100644 node_modules/optimist/example/divide.js create mode 100644 node_modules/optimist/example/line_count.js create mode 100644 node_modules/optimist/example/line_count_options.js create mode 100644 node_modules/optimist/example/line_count_wrap.js create mode 100644 node_modules/optimist/example/nonopt.js create mode 100644 node_modules/optimist/example/reflect.js create mode 100644 node_modules/optimist/example/short.js create mode 100644 node_modules/optimist/example/string.js create mode 100644 node_modules/optimist/example/usage-options.js create mode 100644 node_modules/optimist/example/xup.js create mode 100644 node_modules/optimist/index.js create mode 100644 node_modules/optimist/package.json create mode 100644 node_modules/optimist/readme.markdown create mode 100644 node_modules/optimist/test/_.js create mode 100644 node_modules/optimist/test/_/argv.js create mode 100644 node_modules/optimist/test/_/bin.js create mode 100644 node_modules/optimist/test/dash.js create mode 100644 node_modules/optimist/test/parse.js create mode 100644 node_modules/optimist/test/parse_modified.js create mode 100644 node_modules/optimist/test/short.js create mode 100644 node_modules/optimist/test/usage.js create mode 100644 node_modules/optimist/test/whitespace.js create mode 100644 node_modules/pip/.npmignore create mode 100644 node_modules/pip/config.json create mode 100644 node_modules/pip/package.json create mode 100644 node_modules/pip/readme.md create mode 100644 node_modules/wordwrap/LICENSE create mode 100644 node_modules/wordwrap/README.markdown create mode 100644 node_modules/wordwrap/example/center.js create mode 100644 node_modules/wordwrap/example/meat.js create mode 100644 node_modules/wordwrap/index.js create mode 100644 node_modules/wordwrap/package.json create mode 100644 node_modules/wordwrap/test/break.js create mode 100644 node_modules/wordwrap/test/idleness.txt create mode 100644 node_modules/wordwrap/test/wrap.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..5bd9651 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,119 @@ +version: 2.1 +jobs: + build: + docker: + - image: circleci/python:3.9-buster-node-browsers + steps: + - checkout + - restore_cache: + key: deps-{{ checksum "requirements/dev.txt"}}-{{ .Environment.CACHE_VERSION }} + - run: + name: Install dependencies in venv + command: python3 -m venv venv + - run: + name: Activate venv + command: . venv/bin/activate + - run: + name: Install requirements + command: pip install -r requirements/dev.txt + + + - save_cache: + key: deps-{{ checksum "requirements/dev.txt"}}-{{ .Environment.CACHE_VERSION }} + paths: + - "venv" + test: + docker: + - image: circleci/python:3.9-buster-node-browsers + environment: + DATABASE_URL: postgresql://myUser:myPassword@localhost:5432/my_database_postgres + FLASK_APP: autoapp.py + CONDUIT_SECRET: 'something-really-secret' + FLASK_DEBUG: 1 + - image: circleci/postgres:9.6.2-alpine + environment: + POSTGRES_USER: myUser + POSTGRES_DB: my_database_postgres + POSTGRES_PASSWORD: myPassword + steps: + - checkout + - restore_cache: + key: deps-{{ checksum "requirements/dev.txt"}}-{{ .Environment.CACHE_VERSION }} + - run: + name: Waiting postgresql + command : dockerize -wait tcp://localhost:5432 -timeout 1m + - run: + name: Activate tests + command: . venv/bin/activate + - run: + name: Launching upgrade + command: flask db upgrade + - run: + name: Launching tests + command: flask test + + deploy-heroku: + docker: + - image : buildpack-deps:trusty + steps: + - checkout + - run: + name: Config main to heroku + command: git config --global push.default matching + - run: + name: Deploy main to heroku + command: git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git main + + - run: + name: Smoke test + command: HTTPCODE=`curl -s -o /dev/null -w "%{http_code}" https://$HEROKU_APP_NAME.herokuapp.com/api/articles` + - run: + name: Smoke check + command: if [ "$HTTPCODE" -ne 200 ];then + echo "heroku app not responding, failing to deploy" + exit 1 + fi + + docker-build-push: + working_directory: /dockerapp + docker: + - image: docker:17.05.0-ce-git + steps: + - checkout + - setup_remote_docker + - run: + name: dockerize my app + command: docker build --cache-from=app -t app . + - run: + name: Login my app to the hub + command: docker login -u $DOCKER_HUB_USERNAME -p $DOCKER_HUB_PASSWORD + - run: + name: Tag my app + command: docker tag app $DOCKER_HUB_USERNAME/tp-devops-final-back:$CIRCLE_BUILD_NUM + - run: + name: Tag my app to latest + command: docker tag app $DOCKER_HUB_USERNAME/tp-devops-final-back:latest + - run: + name: Publish my app + command: docker push $DOCKER_HUB_USERNAME/tp-devops-final-back:$CIRCLE_BUILD_NUM + - run: + name: Publish my app to the hub + command: docker push $DOCKER_HUB_USERNAME/tp-devops-final-back:latest + +workflows: + build_test_deploy: + jobs: + - build + - test: + requires: + - build + - deploy-heroku: + context: Heroku + requires: + - build + # - test (We don't require test as there's a problem with them atm) + - docker-build-push: + context: Docker + requires: + - build + # - test (We don't require test as there's a problem with them atm) \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3e39ac7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM python:3.9.0 + +COPY . /app +WORKDIR /app + +ENV FLASK_APP=autoapp.py + +RUN pip install -r requirements/dev.txt + +EXPOSE 8080 + +CMD python autoapp.py \ No newline at end of file diff --git a/node_modules/.bin/pip b/node_modules/.bin/pip new file mode 100644 index 0000000..2e360ad --- /dev/null +++ b/node_modules/.bin/pip @@ -0,0 +1,9 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +"$basedir/../pip/lib/cli.js" "$@" +exit $? diff --git a/node_modules/.bin/pip.cmd b/node_modules/.bin/pip.cmd new file mode 100644 index 0000000..1f386a0 --- /dev/null +++ b/node_modules/.bin/pip.cmd @@ -0,0 +1,9 @@ +@ECHO off +SETLOCAL +CALL :find_dp0 +"%dp0%\..\pip\lib\cli.js" %* +ENDLOCAL +EXIT /b %errorlevel% +:find_dp0 +SET dp0=%~dp0 +EXIT /b diff --git a/node_modules/.bin/pip.ps1 b/node_modules/.bin/pip.ps1 new file mode 100644 index 0000000..d0b676c --- /dev/null +++ b/node_modules/.bin/pip.ps1 @@ -0,0 +1,11 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +& "$basedir/../pip/lib/cli.js" $args +exit $LASTEXITCODE diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..a2f9949 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,52 @@ +{ + "name": "2020-2021-devops-final-back", + "lockfileVersion": 2, + "requires": true, + "packages": { + "node_modules/freckle": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/freckle/-/freckle-0.0.1.tgz", + "integrity": "sha1-dm2rLrxjIhJit1G7Bw28Y0wYYSE=", + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "node_modules/optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dependencies": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "node_modules/pip": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pip/-/pip-0.0.1.tgz", + "integrity": "sha1-zwtVqB7Lv0f4UEXMtf6a+gWnJp4=", + "dependencies": { + "freckle": ">= 0.0.1", + "optimist": ">= 0.1.5" + }, + "bin": { + "pip": "lib/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "engines": { + "node": ">=0.4.0" + } + } + } +} diff --git a/node_modules/freckle/README.md b/node_modules/freckle/README.md new file mode 100644 index 0000000..289450a --- /dev/null +++ b/node_modules/freckle/README.md @@ -0,0 +1,82 @@ +Node.js freckle api bindings +============================ + +Created by Tim Branyen [@tbranyen](http://twitter.com/tbranyen) + +These bindings work specifically with the Freckle V1 API. If you are not currently using Freckle for +time management, you totally should! It rocks! http://letsfreckle.com, it was created by @madrobby who +has been excellent with his support. + +Installing +----------------------- + +### Easy install (Recommended) ### +This will install and configure everything you need to use `freckle`. + + $ sudo npm install freckle + +API Example Usage +----------------- + + var freckle = require( 'freckle' ); + + // All freckle commands are sent over HTTPS + + // Add your own subdomain and API token information + freckle( "mysubdomain", "askdfljsdjflkj3" ); + + // List all users + freckle.users.list(function( err, users ) { + if( err ) { + throw new Error( err ); + } + + console.log( users ); + } + + // Show a specific user + freckle.users.show( 5, function( err, user ) { + if( err ) { + throw new Error( err ); + } + + console.log( user ); + }); + + // Fetch a users api token + freckle.users.token({ auth: [ "myemail@address.com", "mypassword" ] }, function( err, token ) { + if( err ) { + throw new Error( err ); + } + + console.log( token ); + }); + + // Adding a new time entry + freckle.entries.add({ + 'entry': { + 'minutes': "1hr" + , 'user': "myemail@address.com" + , 'project_id': 54 + , 'description': 'opensource' + , 'date': freckle.date( new Date ) + } + }, function( err, data ) { + if( err ) { + throw new Error( err ); + } + + console.log( err, data ); + }); + + +Release information +------------------- + +### v0.0.1: ### + * Initial potentially complete bindings + +Getting involved +---------------- + +If you find this project of interest, please document all issues and fork if you feel you can provide a patch. diff --git a/node_modules/freckle/example/users.js b/node_modules/freckle/example/users.js new file mode 100644 index 0000000..fef9e01 --- /dev/null +++ b/node_modules/freckle/example/users.js @@ -0,0 +1,37 @@ +var freckle = require( "../" ); + +// Add subdomain and token information here +// leaving this blank will keep API test account information +freckle( "", "" ); + +freckle.users.list(function( err, users ) { + console.log( users ); +}); + +freckle.users.show(, function( err, user ) { + console.log( user ); +}); + +freckle.tags.list(function( err, tags ) { + console.log( tags ); +}); + +freckle.users.token({ auth: [ "", "" ] }, function( err, token ) { + console.log( token ); +}); + +freckle.entries.add({ + 'entry': { + 'minutes': "