mirror of
https://github.com/sartography/protocol-builder-mock.git
synced 2025-01-12 08:44:46 +00:00
stuff to automate deployment.
This commit is contained in:
parent
89eb002ffa
commit
9e590961fa
25
.travis.yml
Normal file
25
.travis.yml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
language: python
|
||||||
|
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
|
||||||
|
python:
|
||||||
|
- "3.7"
|
||||||
|
|
||||||
|
install:
|
||||||
|
- pip install pipenv pytest
|
||||||
|
- pipenv install
|
||||||
|
- pytest # <== This runs in Pipenv (a/k/a virtualenv)
|
||||||
|
|
||||||
|
# command to run tests
|
||||||
|
script:
|
||||||
|
- pytest
|
||||||
|
|
||||||
|
before_deploy:
|
||||||
|
- docker build -t sartography/protocol-builder-mock .
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
provider: script
|
||||||
|
script: bash docker_push.sh
|
||||||
|
on:
|
||||||
|
branch: master
|
1
Pipfile
1
Pipfile
@ -17,6 +17,7 @@ flask-migrate = "*"
|
|||||||
flask-marshmallow = "*"
|
flask-marshmallow = "*"
|
||||||
ma = "*"
|
ma = "*"
|
||||||
marshmallow-sqlalchemy = "*"
|
marshmallow-sqlalchemy = "*"
|
||||||
|
wtforms-alchemy = "*"
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
python_version = "3.7"
|
python_version = "3.7"
|
||||||
|
46
Pipfile.lock
generated
46
Pipfile.lock
generated
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"hash": {
|
"hash": {
|
||||||
"sha256": "afcaa47f07aa9c4b50c6b35fb701605e4155a5d34e6d1fe153e01a57af0c7cdd"
|
"sha256": "96c16527bfb9e0a4363b92b0fff94997f533b831fedb0c5b06c84fcad31231d8"
|
||||||
},
|
},
|
||||||
"pipfile-spec": 6,
|
"pipfile-spec": 6,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -75,6 +75,13 @@
|
|||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.6.0"
|
"version": "==2.6.0"
|
||||||
},
|
},
|
||||||
|
"decorator": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:54c38050039232e1db4ad7375cfce6748d7b41c29e95a081c8a6d2c30364a2ce",
|
||||||
|
"sha256:5d19b92a3c8f7f101c8dd86afd86b0f061a8ce4540ab8cd401fa2542756bce6d"
|
||||||
|
],
|
||||||
|
"version": "==4.4.1"
|
||||||
|
},
|
||||||
"flask": {
|
"flask": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52",
|
"sha256:13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52",
|
||||||
@ -201,12 +208,24 @@
|
|||||||
"markers": "python_version < '3.8'",
|
"markers": "python_version < '3.8'",
|
||||||
"version": "==1.5.0"
|
"version": "==1.5.0"
|
||||||
},
|
},
|
||||||
|
"infinity": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:dc4aa138d7e366fc00d2e741e32c78a0fecd16b74f8daeb3f7408b459668005c"
|
||||||
|
],
|
||||||
|
"version": "==1.4"
|
||||||
|
},
|
||||||
"inflection": {
|
"inflection": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:18ea7fb7a7d152853386523def08736aa8c32636b047ade55f7578c4edeb16ca"
|
"sha256:18ea7fb7a7d152853386523def08736aa8c32636b047ade55f7578c4edeb16ca"
|
||||||
],
|
],
|
||||||
"version": "==0.3.1"
|
"version": "==0.3.1"
|
||||||
},
|
},
|
||||||
|
"intervals": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:37921da1407a5e9384e8e1350cfb8500f8d0d69fc43d03d01a4fdc6e7a7c7166"
|
||||||
|
],
|
||||||
|
"version": "==0.8.1"
|
||||||
|
},
|
||||||
"itsdangerous": {
|
"itsdangerous": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19",
|
"sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19",
|
||||||
@ -373,6 +392,12 @@
|
|||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==1.3.13"
|
"version": "==1.3.13"
|
||||||
},
|
},
|
||||||
|
"sqlalchemy-utils": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:4e637c88bf3ac5f99b7d72342092a1f636bea1287b2e3e17d441b0413771f86e"
|
||||||
|
],
|
||||||
|
"version": "==0.36.1"
|
||||||
|
},
|
||||||
"swagger-ui-bundle": {
|
"swagger-ui-bundle": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:49d2e12d60a6499e9d37ea37953b5d700f4e114edc7520fe918bae5eb693a20e",
|
"sha256:49d2e12d60a6499e9d37ea37953b5d700f4e114edc7520fe918bae5eb693a20e",
|
||||||
@ -388,6 +413,12 @@
|
|||||||
],
|
],
|
||||||
"version": "==1.25.8"
|
"version": "==1.25.8"
|
||||||
},
|
},
|
||||||
|
"validators": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:b192e6bde7d617811d59f50584ed240b580375648cd032d106edeb3164099508"
|
||||||
|
],
|
||||||
|
"version": "==0.14.2"
|
||||||
|
},
|
||||||
"werkzeug": {
|
"werkzeug": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:169ba8a33788476292d04186ab33b01d6add475033dfc07215e6d219cc077096",
|
"sha256:169ba8a33788476292d04186ab33b01d6add475033dfc07215e6d219cc077096",
|
||||||
@ -402,6 +433,19 @@
|
|||||||
],
|
],
|
||||||
"version": "==2.2.1"
|
"version": "==2.2.1"
|
||||||
},
|
},
|
||||||
|
"wtforms-alchemy": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:c491755380490c5c016f04e62949b22056f915160f54d0d1103c76b944c1c321"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.16.9"
|
||||||
|
},
|
||||||
|
"wtforms-components": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:4a7751fc12dc4e4b2ef5700973296b5368094dcdf85c2808d2faff2c8e8f4caa"
|
||||||
|
],
|
||||||
|
"version": "==0.10.4"
|
||||||
|
},
|
||||||
"zipp": {
|
"zipp": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:12248a63bbdf7548f89cb4c7cda4681e537031eda29c02ea29674bc6854460c2",
|
"sha256:12248a63bbdf7548f89cb4c7cda4681e537031eda29c02ea29674bc6854460c2",
|
||||||
|
10
README.md
10
README.md
@ -20,4 +20,12 @@ http://localhost:5001/pb/ui
|
|||||||
1. pipenv install flask
|
1. pipenv install flask
|
||||||
1. pipenv install connexion
|
1. pipenv install connexion
|
||||||
1. place your swagger/openapi file in the root directory
|
1. place your swagger/openapi file in the root directory
|
||||||
1. add methods to return example data in the app.py file.
|
1. add methods to return example data in the app.py file.
|
||||||
|
|
||||||
|
## Deploying to staging
|
||||||
|
We don't have a travis / test environment set up for this yet, no tests
|
||||||
|
but you can build and publish it with:
|
||||||
|
```bash
|
||||||
|
docker image build -t sartography/protocol-builder-mock:latest .
|
||||||
|
docker push sartography/protocol-builder-mock:latest
|
||||||
|
```
|
||||||
|
3
docker_push.sh
Executable file
3
docker_push.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
||||||
|
docker push sartography/protocol-builder-mock
|
6
docker_run.sh
Executable file
6
docker_run.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# run migrations
|
||||||
|
export FLASK_APP=./app.py
|
||||||
|
pipenv run flask db upgrade
|
||||||
|
pipenv run python ./run.py
|
24
migrations/script.py.mako
Normal file
24
migrations/script.py.mako
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
"""${message}
|
||||||
|
|
||||||
|
Revision ID: ${up_revision}
|
||||||
|
Revises: ${down_revision | comma,n}
|
||||||
|
Create Date: ${create_date}
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
${imports if imports else ""}
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = ${repr(up_revision)}
|
||||||
|
down_revision = ${repr(down_revision)}
|
||||||
|
branch_labels = ${repr(branch_labels)}
|
||||||
|
depends_on = ${repr(depends_on)}
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
${upgrades if upgrades else "pass"}
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
${downgrades if downgrades else "pass"}
|
Loading…
x
Reference in New Issue
Block a user