aboutsummaryrefslogtreecommitdiffstats
path: root/azure-pipelines.yml
diff options
context:
space:
mode:
authorGravatar S. Co1 <[email protected]>2019-09-24 13:54:40 -0400
committerGravatar S. Co1 <[email protected]>2019-09-24 13:54:40 -0400
commit20b19de0d22e33476ac082ea048476f9f8c1a5ed (patch)
treef1541776183c3d3850693ad20d81fb530bed3a1d /azure-pipelines.yml
parentApply suggestions from code review (diff)
parentSwap out old discord shield for new one. (diff)
Merge branch 'master' into update-linting
Diffstat (limited to 'azure-pipelines.yml')
-rw-r--r--azure-pipelines.yml171
1 files changed, 77 insertions, 94 deletions
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index de6237d8..b3d4e6da 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -1,97 +1,80 @@
# https://aka.ms/yaml
jobs:
-- job: python_lint
- displayName: 'Lint Job'
- pool:
- vmImage: ubuntu-16.04
-
- variables:
- PIP_CACHE_DIR: .cache/pip
-
- steps:
- - task: UsePythonVersion@0
- displayName: 'Set Python Version'
- inputs:
- versionSpec: '3.7.x'
- addToPath: true
-
- - script: python3 -m pip install pipenv && pipenv install --dev --system && python3 -m pip install flake8-formatter-junit-xml
- displayName: 'Install Project Environment'
-
- - script: python3 -m flake8 --format junit-xml --output-file test-lint.xml
- displayName: 'Run Linter'
-
- - task: PublishTestResults@2
- condition: succeededOrFailed()
- inputs:
- testResultsFiles: '**/test-*.xml'
- testRunTitle: 'Site-Django Lint Results'
-
-- job: coverage_test
- displayName: 'Test Job'
- dependsOn: python_lint
- pool:
- vmImage: ubuntu-16.04
-
- steps:
- - task: UsePythonVersion@0
- inputs:
- versionSpec: '3.7.x'
- architecture: x64
-
- - script: |
- curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
- sudo apt-get update -y
- sudo apt-get install -y postgresql-11
- displayName: 'Install PostgreSQL'
-
- - script: |
- echo "$USER_CREATE_COMMAND;" > pgscript.sql
- echo "CREATE DATABASE pysite OWNER pysite;" >> pgscript.sql
- sudo su postgres -c "psql < pgscript.sql"
- env:
- USER_CREATE_COMMAND: CREATE USER pysite WITH PASSWORD 'pysite' CREATEDB
- displayName: 'Setup Database'
-
- - script: python3 -m pip install pipenv && pipenv install --dev --system
- displayName: 'Install Project Environment'
-
- - script: |
- python manage.py makemigrations --check
- python manage.py migrate
- coverage run --branch manage.py test --testrunner xmlrunner.extra.djangotestrunner.XMLTestRunner --no-input
- env:
- CI: azure
- DATABASE_URL: postgres://pysite:pysite@localhost/pysite
- displayName: 'Run Test'
-
- - script: coverage report
- displayName: 'Show Coverage Results'
-
- - task: PublishTestResults@2
- inputs:
- testResultsFiles: "**/TEST-*.xml"
- testRunTitle: 'Site-Django Test Results'
-
-- job: docker
- displayName: 'Build & Push Job'
- dependsOn: coverage_test
- condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
- pool:
- vmImage: ubuntu-16.04
-
- steps:
- - task: Docker@1
- displayName: Login to Docker Hub
-
- inputs:
- containerregistrytype: 'Container Registry'
- dockerRegistryEndpoint: 'DockerHub'
- command: 'login'
-
- - script: |
- docker build -t pythondiscord/site:latest -f docker/app/Dockerfile .
- docker push pythondiscord/site:latest
- displayName: 'Build & Push Docker Image'
+ - job: test
+ displayName: 'Test & Lint'
+ pool:
+ vmImage: ubuntu-16.04
+
+ variables:
+ PIP_CACHE_DIR: .cache/pip
+
+ steps:
+ - task: UsePythonVersion@0
+ displayName: 'Set Python Version'
+ inputs:
+ versionSpec: '3.7.x'
+ addToPath: true
+
+ - task: DockerCompose@0
+ displayName: 'Setup Database'
+ inputs:
+ action: Run a specific service
+ dockerComposeFile: docker-compose.yml
+ projectName: pydis_web
+ serviceName: postgres
+ ports: '7777:5432'
+
+ - script: |
+ pip install pipenv
+ pipenv install --dev --system
+ pip install flake8-formatter-junit-xml
+ displayName: 'Install Project Environment'
+
+ - script: flake8 --format junit-xml --output-file TEST-lint.xml
+ displayName: 'Run Linter'
+
+ - script: |
+ python3 manage.py makemigrations --check
+ python3 manage.py migrate
+ coverage run \
+ manage.py test \
+ --testrunner xmlrunner.extra.djangotestrunner.XMLTestRunner \
+ --no-input
+ env:
+ CI: azure
+ DATABASE_URL: postgres://pysite:pysite@localhost:7777/pysite
+ displayName: 'Run Tests'
+
+ - script: coverage report -m && coverage xml
+ displayName: 'Generate Coverage Reports'
+
+ - task: PublishTestResults@2
+ condition: succeededOrFailed()
+ displayName: 'Publish Test & Linting Results'
+ inputs:
+ testResultsFiles: '**/TEST-*.xml'
+ testRunTitle: 'Site Test Results'
+
+ - task: PublishCodeCoverageResults@1
+ displayName: 'Publish Coverage Results'
+ condition: succeededOrFailed()
+ inputs:
+ codeCoverageTool: Cobertura
+ summaryFileLocation: '**/coverage.xml'
+
+ - job: build
+ displayName: 'Build & Push Container'
+ dependsOn: test
+ condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
+
+ steps:
+ - task: Docker@2
+ displayName: 'Build & Push Container'
+ inputs:
+ containerRegistry: 'DockerHub'
+ repository: 'pythondiscord/site'
+ command: 'buildAndPush'
+ Dockerfile: 'docker/app/Dockerfile'
+ buildContext: '.'
+ tags: 'latest'