aboutsummaryrefslogtreecommitdiffstats
path: root/azure-pipelines.yml
blob: cdc4ce114e4e7eca5506504544e561981786c73b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# https://aka.ms/yaml

jobs:
  - 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

      - 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'

      - 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: |
          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: 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: 'DockerHubV2'
          repository: 'pythondiscord/site'
          command: 'buildAndPush'
          Dockerfile: 'docker/app/Dockerfile'
          buildContext: '.'
          tags: 'latest'