Skip to content

Commit 9f49253

Browse files
authored
Merge pull request #1 from Xpirix/develop
Develop
2 parents c44b9fb + cdd7689 commit 9f49253

File tree

311 files changed

+12794
-1416
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

311 files changed

+12794
-1416
lines changed

.dockerignore

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
venv
2+
.venv
3+
.idea
4+
*.pyc
5+
*.*~
6+
vagrant-fabric-lxc
7+
django_project/media/images
8+
visual_changelog.db
9+
.vagrant
10+
11+
node_modules
12+
id_dsa.pub
13+
id_rsa.pub
14+
docs/build
15+
fabgis_resources
16+
private.py
17+
18+
# Vim leftovers
19+
*.*~
20+
21+
# project specifc
22+
django_project/core/settings/secret.py
23+
xmlrunner
24+
25+
# Byte-compiled / optimized / DLL files
26+
__pycache__/
27+
*.py[cod]
28+
29+
# C extensions
30+
*.so
31+
32+
# Distribution / packaging
33+
.Python
34+
env/
35+
build/
36+
develop-eggs/
37+
dist/
38+
downloads/
39+
eggs/
40+
lib/
41+
lib64/
42+
parts/
43+
sdist/
44+
var/
45+
*.egg-info/
46+
.installed.cfg
47+
*.egg
48+
49+
# PyInstaller
50+
# Usually these files are written by a python script from a template
51+
# before PyInstaller builds the exe, so as to inject date/other infos
52+
# into it.
53+
*.manifest
54+
*.spec
55+
56+
# Installer logs
57+
pip-log.txt
58+
pip-delete-this-directory.txt
59+
60+
# Unit test / coverage reports
61+
htmlcov/
62+
.tox/
63+
.coverage
64+
.cache
65+
nosetests.xml
66+
coverage.xml
67+
68+
# Translations
69+
*.mo
70+
*.pot
71+
72+
# Django stuff:
73+
*.log
74+
75+
# Sphinx documentation
76+
docs/_build/
77+
78+
# PyBuilder
79+
target/
80+
81+
#PyCharm
82+
.idea
83+
84+
# Virtual env
85+
venv
86+
87+
# Node
88+
django_project/static
89+
node_modules
90+
91+
# Working data not intended to be versioned
92+
data_for_import
93+
scrap.html
94+
.pycharm_helpers
95+
.sudo_as_admin_successful
96+
97+
# Pg cluster for docker
98+
deployment/pg/postgres_data/9.3
99+
deployment/pg/postgres_staging_data/9.3
100+
deployment/pg/postgres_dev_data/9.3
101+
# Template for apt-cacher
102+
# static and media dirs
103+
deployment/static
104+
deployment/media
105+
deployment/docker/71-apt-cacher-ng
106+
django_project/static
107+
django_project/core/settings/secret.py
108+
109+
# local media
110+
django_project/media
111+
112+
# OSX Crap
113+
.DS_Store
114+
115+
# Backups
116+
*.dmp
117+
deployment/backups
118+
119+
# We should never version the btsync keys
120+
deployment/btsync-media.env
121+
deployment/btsync-db.env
122+
deployment/btsync-db.env.PRODUCTION
123+
deployment/btsync-media.env.PRODUCTION
124+
.sync/
125+
# These don't get versioned since they are generated on the fly
126+
deployment/docker/Dockerfile-prod
127+
deployment/docker/projecta.tar.gz
128+
129+
130+
docs
131+
deployment/pg

.flake8

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ max-line-length = 79
55
# E12x continuation line indentation
66
# E251 no spaces around keyword / parameter equals
77
# E303 too many blank lines (3)
8-
ignore = E125,E126,E251,E303,W504,W60
8+
ignore = E125,E126,E251,E303,W504,W60,F405
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
name: latest-build
2+
on:
3+
workflow_dispatch:
4+
pull_request:
5+
branches:
6+
- develop
7+
push:
8+
branches:
9+
- develop
10+
jobs:
11+
lint:
12+
runs-on: ubuntu-latest
13+
strategy:
14+
matrix:
15+
python-version:
16+
- 3.7
17+
steps:
18+
- uses: actions/checkout@v2
19+
20+
- name: Set up Python ${{ matrix.python-version }}
21+
uses: actions/setup-python@v2
22+
23+
- name: Test installing development dependencies
24+
working-directory: deployment/docker
25+
run: |
26+
python -m pip install --upgrade pip
27+
pip install -r REQUIREMENTS-dev.txt
28+
29+
- name: Run Flake8 test
30+
run: flake8 .
31+
32+
test:
33+
runs-on: ubuntu-latest
34+
needs:
35+
- lint
36+
env:
37+
APP_IMAGE: kartoza/projecta-uwsgi
38+
steps:
39+
- uses: actions/checkout@v2
40+
- name: Set up QEMU
41+
uses: docker/setup-qemu-action@v1
42+
- name: Set up Docker Buildx
43+
uses: docker/setup-buildx-action@v1
44+
45+
- name: Build test image
46+
uses: docker/build-push-action@v2
47+
with:
48+
context: .
49+
file: deployment/docker/Dockerfile
50+
push: false
51+
load: true
52+
target: dev
53+
tags: ${{ env.APP_IMAGE }}:dev
54+
cache-from: |
55+
type=gha,scope=test
56+
type=gha,scope=prod
57+
cache-to: type=gha,scope=test
58+
59+
- name: Build prod image
60+
uses: docker/build-push-action@v2
61+
with:
62+
context: .
63+
file: deployment/docker/Dockerfile
64+
push: false
65+
load: true
66+
target: dev
67+
tags: ${{ env.APP_IMAGE }}:prod
68+
cache-from: |
69+
type=gha,scope=test
70+
type=gha,scope=prod
71+
cache-to: type=gha,scope=prod
72+
73+
- name: Run docker compose services
74+
working-directory: deployment
75+
run: |
76+
echo "Override docker compose for testing purposes"
77+
cp .env.example .env
78+
cp docker-compose.test.yml docker-compose.override.yml
79+
make up
80+
make devweb
81+
make wait-db
82+
make create-test-db
83+
84+
- name: Run Coverage test
85+
working-directory: deployment
86+
run: |
87+
cat << EOF | docker compose exec -T devweb bash
88+
python manage.py makemigrations
89+
python manage.py migrate
90+
python manage.py collectstatic --noinput --verbosity 0
91+
coverage run manage.py test
92+
coverage xml
93+
EOF
94+
docker cp projecta-devweb-1:/home/web/django_project/coverage.xml ../coverage.xml
95+
96+
# - name: Upload coverage to codecov
97+
# uses: codecov/codecov-action@v2
98+
# with:
99+
# fail_ci_if_error: true
100+
101+
docker-builder:
102+
# Only push if PR happens in the same repo
103+
if: github.event.pull_request.base.repo.url == github.event.pull_request.head.repo.url
104+
runs-on: ubuntu-latest
105+
needs:
106+
- test
107+
steps:
108+
- uses: actions/checkout@v2
109+
- name: Set up QEMU
110+
uses: docker/setup-qemu-action@v1
111+
- name: Set up Docker Buildx
112+
uses: docker/setup-buildx-action@v1
113+
114+
- name: Login to DockerHub
115+
uses: docker/login-action@v1
116+
with:
117+
username: ${{ secrets.DOCKERHUB_USERNAME }}
118+
password: ${{ secrets.DOCKERHUB_PASSWORD }}
119+
120+
- name: Docker meta
121+
id: docker_meta
122+
uses: docker/metadata-action@v3
123+
with:
124+
images: ${{ secrets.DOCKERHUB_REPO }}/projecta-uwsgi
125+
tags: |
126+
type=semver,pattern=\d.\d.\d
127+
type=ref,event=branch
128+
type=ref,event=pr
129+
130+
- name: Build and push
131+
id: docker_build
132+
uses: docker/build-push-action@v2
133+
with:
134+
context: .
135+
file: deployment/docker/Dockerfile
136+
push: true
137+
target: prod
138+
tags: ${{ steps.docker_meta.outputs.tags }}
139+
labels: ${{ steps.docker_meta.outputs.labels }}
140+
cache-from: |
141+
type=gha,scope=test
142+
type=gha,scope=prod
143+
cache-to: type=gha,scope=prod
144+
145+
- name: Image digest
146+
run: echo ${{ steps.docker_build.outputs.digest }}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: release-build
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
tags:
6+
description: 'Git tag to use'
7+
release:
8+
types:
9+
- released
10+
push:
11+
tags:
12+
- '*.*.*.'
13+
- 'v*.*.*.'
14+
jobs:
15+
docker-builder-run-on-tag:
16+
if: ${{ github.event.inputs.tags }}
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v2
20+
with:
21+
ref: ${{ github.event.inputs.tags }}
22+
23+
- name: Set up QEMU
24+
uses: docker/setup-qemu-action@v1
25+
- name: Set up Docker Buildx
26+
uses: docker/setup-buildx-action@v1
27+
- name: Login to DockerHub
28+
uses: docker/login-action@v1
29+
with:
30+
username: ${{ secrets.DOCKERHUB_USERNAME }}
31+
password: ${{ secrets.DOCKERHUB_PASSWORD }}
32+
33+
- name: Build and push
34+
id: docker_build
35+
uses: docker/build-push-action@v2
36+
with:
37+
context: .
38+
file: deployment/docker/Dockerfile
39+
push: true
40+
target: prod
41+
tags: ${{ secrets.DOCKERHUB_REPO }}/projecta-uwsgi:${{ github.event.inputs.tags }}
42+
cache-from: type=gha,scope=prod
43+
cache-to: type=gha,scope=prod
44+
- name: Image digest
45+
run: echo ${{ steps.docker_build.outputs.digest }}
46+
47+
docker-builder-run-on-tag-release:
48+
if: ${{ !github.event.inputs.tags }}
49+
runs-on: ubuntu-latest
50+
steps:
51+
- uses: actions/checkout@v2
52+
53+
- name: Set up QEMU
54+
uses: docker/setup-qemu-action@v1
55+
- name: Set up Docker Buildx
56+
uses: docker/setup-buildx-action@v1
57+
- name: Login to DockerHub
58+
uses: docker/login-action@v1
59+
with:
60+
username: ${{ secrets.DOCKERHUB_USERNAME }}
61+
password: ${{ secrets.DOCKERHUB_PASSWORD }}
62+
63+
- name: Docker meta
64+
id: docker_meta
65+
uses: docker/metadata-action@v3
66+
with:
67+
images: ${{ secrets.DOCKERHUB_REPO }}/projecta-uwsgi
68+
tags: |
69+
type=semver,pattern={{version}}
70+
type=ref,event=branch
71+
type=ref,event=pr
72+
73+
- name: Build and push
74+
id: docker_build
75+
uses: docker/build-push-action@v2
76+
with:
77+
context: .
78+
file: deployment/docker/Dockerfile
79+
push: true
80+
target: prod
81+
tags: ${{ steps.docker_meta.outputs.tags }}
82+
labels: ${{ steps.docker_meta.outputs.labels }}
83+
cache-from: type=gha,scope=prod
84+
cache-to: type=gha,scope=prod
85+
86+
- name: Image digest
87+
run: echo ${{ steps.docker_build.outputs.digest }}

0 commit comments

Comments
 (0)