trigger: - master resources: - repo: self variables: POSTGRES_DB: passbook POSTGRES_USER: passbook POSTGRES_PASSWORD: "EK-5jnKfjrGRm<77" stages: - stage: Lint jobs: - job: pylint pool: vmImage: 'ubuntu-latest' steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.8' - task: CmdLine@2 inputs: script: | sudo pip install -U wheel pipenv pipenv install --dev - task: CmdLine@2 inputs: script: pipenv run pylint passbook - job: black pool: vmImage: 'ubuntu-latest' steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.8' - task: CmdLine@2 inputs: script: | sudo pip install -U wheel pipenv pipenv install --dev - task: CmdLine@2 inputs: script: pipenv run black --check passbook - job: prospector pool: vmImage: 'ubuntu-latest' steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.8' - task: CmdLine@2 inputs: script: | sudo pip install -U wheel pipenv pipenv install --dev pipenv install --dev prospector --skip-lock - task: CmdLine@2 inputs: script: pipenv run prospector passbook - job: bandit pool: vmImage: 'ubuntu-latest' steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.8' - task: CmdLine@2 inputs: script: | sudo pip install -U wheel pipenv pipenv install --dev - task: CmdLine@2 inputs: script: pipenv run bandit -r passbook - job: pyright pool: vmImage: ubuntu-latest steps: - task: UseNode@1 - task: UsePythonVersion@0 inputs: versionSpec: '3.8' - task: CmdLine@2 inputs: script: npm install -g pyright - task: CmdLine@2 inputs: script: | sudo pip install -U wheel pipenv pipenv install --dev - task: CmdLine@2 inputs: script: pipenv run pyright - stage: Test jobs: - job: migrations pool: vmImage: 'ubuntu-latest' steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.8' - task: DockerCompose@0 displayName: Run services inputs: dockerComposeFile: 'scripts/docker-compose.yml' action: 'Run services' buildImages: false - task: CmdLine@2 inputs: script: | sudo pip install -U wheel pipenv pipenv install --dev - task: CmdLine@2 inputs: script: pipenv run ./manage.py migrate - job: coverage pool: vmImage: 'ubuntu-latest' steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.8' - task: DockerCompose@0 displayName: Run services inputs: dockerComposeFile: 'scripts/docker-compose.yml' action: 'Run services' buildImages: false - task: CmdLine@2 inputs: script: | sudo pip install -U wheel pipenv pipenv install --dev - task: CmdLine@2 inputs: script: pipenv run ./scripts/coverage.sh - task: CmdLine@2 inputs: script: pipenv run coverage xml - task: CmdLine@2 env: CODECOV_TOKEN: $(CODECOV_TOKEN) inputs: script: bash <(curl -s https://codecov.io/bash) - stage: Build jobs: - job: build_server pool: vmImage: 'ubuntu-latest' steps: - task: Docker@2 inputs: containerRegistry: 'dockerhub' repository: 'beryju/passbook' command: 'buildAndPush' Dockerfile: 'Dockerfile' tags: '$(Build.SourceBranchName)' - job: build_gatekeeper pool: vmImage: 'ubuntu-latest' steps: - task: CmdLine@2 inputs: script: cd gatekeeper - task: Docker@2 inputs: containerRegistry: 'dockerhub' repository: 'beryju/passbook-gatekeeper' command: 'buildAndPush' Dockerfile: 'Dockerfile' tags: '$(Build.SourceBranchName)' - job: build_static pool: vmImage: 'ubuntu-latest' steps: - task: DockerCompose@0 displayName: Run services inputs: dockerComposeFile: 'scripts/docker-compose.yml' action: 'Run services' buildImages: false - task: Docker@2 inputs: containerRegistry: 'dockerhub' repository: 'beryju/passbook-static' command: 'build' Dockerfile: 'static.Dockerfile' tags: '$(Build.SourceBranchName)' arguments: "--network=beryjupassbook_default" - task: Docker@2 inputs: containerRegistry: 'dockerhub' repository: 'beryju/passbook-static' command: 'push' tags: '$(Build.SourceBranchName)'