2020-05-28 17:57:48 +01:00
|
|
|
trigger:
|
2020-05-28 18:15:18 +01:00
|
|
|
- master
|
2020-05-28 17:57:48 +01:00
|
|
|
|
|
|
|
resources:
|
2020-05-28 18:15:18 +01:00
|
|
|
- repo: self
|
2020-05-28 17:57:48 +01:00
|
|
|
|
|
|
|
variables:
|
2020-12-05 21:08:42 +00:00
|
|
|
POSTGRES_DB: authentik
|
|
|
|
POSTGRES_USER: authentik
|
2020-05-28 18:15:18 +01:00
|
|
|
POSTGRES_PASSWORD: "EK-5jnKfjrGRm<77"
|
2020-09-21 16:55:57 +01:00
|
|
|
${{ if startsWith(variables['Build.SourceBranch'], 'refs/heads/') }}:
|
|
|
|
branchName: ${{ replace(variables['Build.SourceBranchName'], 'refs/heads/', '') }}
|
|
|
|
${{ if startsWith(variables['Build.SourceBranch'], 'refs/pull/') }}:
|
2020-12-24 15:18:06 +00:00
|
|
|
branchName: $(System.PullRequest.SourceBranch)
|
2020-05-28 17:57:48 +01:00
|
|
|
|
|
|
|
stages:
|
2020-05-28 18:15:18 +01:00
|
|
|
- stage: Lint
|
|
|
|
jobs:
|
|
|
|
- job: pylint
|
|
|
|
pool:
|
|
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-05-28 18:15:18 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-05-28 18:15:18 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
2020-12-05 21:08:42 +00:00
|
|
|
script: pipenv run pylint authentik tests lifecycle
|
2020-05-28 18:15:18 +01:00
|
|
|
- job: black
|
|
|
|
pool:
|
|
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-05-28 18:15:18 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-05-28 18:15:18 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
2020-12-05 21:08:42 +00:00
|
|
|
script: pipenv run black --check authentik tests lifecycle
|
2020-05-28 18:15:18 +01:00
|
|
|
- job: prospector
|
|
|
|
pool:
|
|
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-05-28 18:15:18 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-05-28 18:15:18 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
|
|
|
pipenv install --dev prospector --skip-lock
|
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
2020-09-26 18:17:42 +01:00
|
|
|
script: pipenv run prospector
|
2020-05-28 18:15:18 +01:00
|
|
|
- job: bandit
|
|
|
|
pool:
|
|
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-05-28 18:15:18 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-05-28 18:15:18 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
2020-12-05 21:08:42 +00:00
|
|
|
script: pipenv run bandit -r authentik tests lifecycle
|
2020-05-28 18:15:18 +01:00
|
|
|
- job: pyright
|
|
|
|
pool:
|
|
|
|
vmImage: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- task: UseNode@1
|
2020-07-03 08:39:23 +01:00
|
|
|
inputs:
|
|
|
|
version: '12.x'
|
2020-05-28 18:15:18 +01:00
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-05-28 18:15:18 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
2020-10-16 21:29:59 +01:00
|
|
|
script: npm install -g pyright@1.1.79
|
2020-05-28 18:15:18 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-05-28 18:15:18 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
2020-09-26 18:08:37 +01:00
|
|
|
script: pipenv run pyright e2e lifecycle
|
2020-05-28 18:29:28 +01:00
|
|
|
- stage: Test
|
|
|
|
jobs:
|
|
|
|
- job: migrations
|
|
|
|
pool:
|
|
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-05-28 18:29:28 +01:00
|
|
|
- task: DockerCompose@0
|
|
|
|
displayName: Run services
|
|
|
|
inputs:
|
2020-07-14 21:55:30 +01:00
|
|
|
dockerComposeFile: 'scripts/ci.docker-compose.yml'
|
2020-05-28 18:29:28 +01:00
|
|
|
action: 'Run services'
|
|
|
|
buildImages: false
|
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-05-28 18:29:28 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: pipenv run ./manage.py migrate
|
2020-09-21 16:55:57 +01:00
|
|
|
- job: migrations_from_previous_release
|
|
|
|
pool:
|
|
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
2020-11-15 19:41:35 +00:00
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
|
|
|
versionSpec: '3.8'
|
2020-09-21 16:55:57 +01:00
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-09-21 16:55:57 +01:00
|
|
|
- task: DockerCompose@0
|
|
|
|
displayName: Run services
|
|
|
|
inputs:
|
|
|
|
dockerComposeFile: 'scripts/ci.docker-compose.yml'
|
|
|
|
action: 'Run services'
|
|
|
|
buildImages: false
|
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: Prepare Last tagged release
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-12-05 21:08:42 +00:00
|
|
|
# Copy current, latest config to local
|
|
|
|
cp authentik/lib/default.yml local.env.yml
|
2020-09-21 16:55:57 +01:00
|
|
|
git checkout $(git describe --abbrev=0 --match 'version/*')
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-09-21 16:55:57 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: Migrate to last tagged release
|
|
|
|
inputs:
|
2020-12-05 21:08:42 +00:00
|
|
|
script:
|
|
|
|
pipenv run ./manage.py migrate
|
2020-09-21 16:55:57 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: Install current branch
|
|
|
|
inputs:
|
|
|
|
script: |
|
|
|
|
set -x
|
|
|
|
git checkout ${{ variables.branchName }}
|
|
|
|
pipenv sync --dev
|
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: Migrate to current branch
|
|
|
|
inputs:
|
2020-12-05 21:08:42 +00:00
|
|
|
script: |
|
|
|
|
pipenv run python -m lifecycle.migrate
|
|
|
|
pipenv run ./manage.py migrate
|
2020-07-10 16:25:19 +01:00
|
|
|
- job: coverage_unittest
|
2020-07-10 16:12:37 +01:00
|
|
|
pool:
|
|
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-07-10 16:12:37 +01:00
|
|
|
- task: DockerCompose@0
|
|
|
|
displayName: Run services
|
|
|
|
inputs:
|
2020-07-14 21:55:30 +01:00
|
|
|
dockerComposeFile: 'scripts/ci.docker-compose.yml'
|
2020-07-10 16:12:37 +01:00
|
|
|
action: 'Run services'
|
|
|
|
buildImages: false
|
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-07-10 16:12:37 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: Run full test suite
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-19 13:25:53 +00:00
|
|
|
pipenv run make coverage
|
2020-09-26 13:55:50 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-07-10 16:12:37 +01:00
|
|
|
mkdir output-unittest
|
|
|
|
mv unittest.xml output-unittest/unittest.xml
|
|
|
|
mv .coverage output-unittest/coverage
|
|
|
|
- task: PublishPipelineArtifact@1
|
|
|
|
inputs:
|
2020-07-10 16:43:16 +01:00
|
|
|
targetPath: 'output-unittest/'
|
|
|
|
artifact: 'coverage-unittest'
|
2020-07-10 16:12:37 +01:00
|
|
|
publishLocation: 'pipeline'
|
2020-11-19 13:25:53 +00:00
|
|
|
- job: coverage_integration
|
2020-05-28 18:29:28 +01:00
|
|
|
pool:
|
2020-11-19 13:25:53 +00:00
|
|
|
vmImage: 'ubuntu-latest'
|
2020-05-28 18:29:28 +01:00
|
|
|
steps:
|
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-05-28 18:29:28 +01:00
|
|
|
- task: DockerCompose@0
|
|
|
|
displayName: Run services
|
|
|
|
inputs:
|
2020-07-14 21:55:30 +01:00
|
|
|
dockerComposeFile: 'scripts/ci.docker-compose.yml'
|
2020-05-28 18:29:28 +01:00
|
|
|
action: 'Run services'
|
|
|
|
buildImages: false
|
2020-11-19 13:25:53 +00:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
2020-10-14 19:21:36 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: Install K3d and prepare
|
2020-10-14 19:28:24 +01:00
|
|
|
inputs:
|
2020-10-14 19:21:36 +01:00
|
|
|
script: |
|
|
|
|
wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash
|
|
|
|
k3d cluster create
|
|
|
|
k3d kubeconfig write -o ~/.kube/config --overwrite
|
2020-11-19 13:25:53 +00:00
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: Run full test suite
|
|
|
|
inputs:
|
|
|
|
script: |
|
|
|
|
pipenv run make test-integration
|
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
|
|
|
mkdir output-integration
|
|
|
|
mv unittest.xml output-integration/unittest.xml
|
|
|
|
mv .coverage output-integration/coverage
|
|
|
|
- task: PublishPipelineArtifact@1
|
|
|
|
inputs:
|
|
|
|
targetPath: 'output-integration/'
|
|
|
|
artifact: 'coverage-integration'
|
|
|
|
publishLocation: 'pipeline'
|
|
|
|
- job: coverage_e2e
|
|
|
|
pool:
|
|
|
|
name: coventry
|
|
|
|
steps:
|
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
|
|
|
versionSpec: '3.9'
|
|
|
|
- task: DockerCompose@0
|
|
|
|
displayName: Run services
|
|
|
|
inputs:
|
|
|
|
dockerComposeFile: 'scripts/ci.docker-compose.yml'
|
|
|
|
action: 'Run services'
|
|
|
|
buildImages: false
|
2020-05-28 18:29:28 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-05-28 18:29:28 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
2020-11-22 23:38:25 +00:00
|
|
|
pipenv install --dev --python python3.9
|
2020-07-03 08:54:25 +01:00
|
|
|
- task: DockerCompose@0
|
|
|
|
displayName: Run ChromeDriver
|
2020-05-28 18:29:28 +01:00
|
|
|
inputs:
|
2020-11-19 13:25:53 +00:00
|
|
|
dockerComposeFile: 'tests/e2e/ci.docker-compose.yml'
|
2020-07-03 08:54:25 +01:00
|
|
|
action: 'Run a specific service'
|
|
|
|
serviceName: 'chrome'
|
2020-07-03 08:25:13 +01:00
|
|
|
- task: CmdLine@2
|
2020-07-03 08:54:25 +01:00
|
|
|
displayName: Build static files for e2e
|
2020-07-03 08:25:13 +01:00
|
|
|
inputs:
|
|
|
|
script: |
|
2020-11-28 18:43:42 +00:00
|
|
|
cd web
|
2020-10-09 10:33:02 +01:00
|
|
|
npm i
|
|
|
|
npm run build
|
2020-07-03 08:25:13 +01:00
|
|
|
- task: CmdLine@2
|
2020-07-03 08:54:25 +01:00
|
|
|
displayName: Run full test suite
|
2020-07-14 20:36:40 +01:00
|
|
|
inputs:
|
2020-09-16 08:08:10 +01:00
|
|
|
script: |
|
2020-11-19 13:25:53 +00:00
|
|
|
pipenv run make test-e2e
|
2020-09-16 08:08:10 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
condition: always()
|
|
|
|
displayName: Cleanup
|
|
|
|
inputs:
|
|
|
|
script: |
|
|
|
|
docker stop $(docker ps -aq)
|
2020-10-18 14:14:00 +01:00
|
|
|
docker container prune -f
|
2020-07-14 20:36:40 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: Prepare unittests and coverage for upload
|
2020-07-03 08:25:13 +01:00
|
|
|
inputs:
|
2020-07-10 16:12:37 +01:00
|
|
|
script: |
|
|
|
|
mkdir output-e2e
|
|
|
|
mv unittest.xml output-e2e/unittest.xml
|
|
|
|
mv .coverage output-e2e/coverage
|
|
|
|
- task: PublishPipelineArtifact@1
|
2020-07-03 08:54:25 +01:00
|
|
|
condition: failed()
|
|
|
|
displayName: Upload screenshots if selenium tests fail
|
2020-07-03 08:25:13 +01:00
|
|
|
inputs:
|
2020-07-10 16:12:37 +01:00
|
|
|
targetPath: 'selenium_screenshots/'
|
|
|
|
artifact: 'selenium screenshots'
|
|
|
|
publishLocation: 'pipeline'
|
|
|
|
- task: PublishPipelineArtifact@1
|
|
|
|
inputs:
|
2020-07-10 16:43:16 +01:00
|
|
|
targetPath: 'output-e2e/'
|
|
|
|
artifact: 'coverage-e2e'
|
2020-07-10 16:12:37 +01:00
|
|
|
publishLocation: 'pipeline'
|
2020-07-10 16:25:19 +01:00
|
|
|
- stage: test_combine
|
2020-07-10 16:12:37 +01:00
|
|
|
jobs:
|
|
|
|
- job: test_coverage_combine
|
|
|
|
pool:
|
|
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
|
|
|
- task: DownloadPipelineArtifact@2
|
|
|
|
inputs:
|
|
|
|
buildType: 'current'
|
|
|
|
artifactName: 'coverage-e2e'
|
2020-07-10 17:39:16 +01:00
|
|
|
path: "coverage-e2e/"
|
2020-11-19 13:25:53 +00:00
|
|
|
- task: DownloadPipelineArtifact@2
|
|
|
|
inputs:
|
|
|
|
buildType: 'current'
|
|
|
|
artifactName: 'coverage-integration'
|
|
|
|
path: "coverage-integration/"
|
2020-07-10 16:12:37 +01:00
|
|
|
- task: DownloadPipelineArtifact@2
|
|
|
|
inputs:
|
|
|
|
buildType: 'current'
|
|
|
|
artifactName: 'coverage-unittest'
|
2020-07-10 17:39:16 +01:00
|
|
|
path: "coverage-unittest/"
|
2020-07-10 16:12:37 +01:00
|
|
|
- task: UsePythonVersion@0
|
|
|
|
inputs:
|
2020-11-15 14:49:02 +00:00
|
|
|
versionSpec: '3.9'
|
2020-05-28 18:29:28 +01:00
|
|
|
- task: CmdLine@2
|
|
|
|
inputs:
|
2020-07-03 08:54:25 +01:00
|
|
|
script: |
|
2020-11-15 00:05:20 +00:00
|
|
|
sudo apt install -y libxmlsec1-dev pkg-config
|
2020-07-10 16:12:37 +01:00
|
|
|
sudo pip install -U wheel pipenv
|
|
|
|
pipenv install --dev
|
2020-11-19 13:25:53 +00:00
|
|
|
pipenv run coverage combine coverage-e2e/coverage coverage-unittest/coverage coverage-integration/coverage
|
2020-07-03 08:54:25 +01:00
|
|
|
pipenv run coverage xml
|
|
|
|
pipenv run coverage html
|
|
|
|
- task: PublishCodeCoverageResults@1
|
|
|
|
inputs:
|
2020-07-10 18:11:36 +01:00
|
|
|
codeCoverageTool: 'Cobertura'
|
2020-07-03 08:54:25 +01:00
|
|
|
summaryFileLocation: 'coverage.xml'
|
2020-07-10 18:11:36 +01:00
|
|
|
pathToSources: '$(System.DefaultWorkingDirectory)'
|
2020-07-03 08:54:25 +01:00
|
|
|
- task: PublishTestResults@2
|
|
|
|
condition: succeededOrFailed()
|
|
|
|
inputs:
|
2020-07-10 18:11:36 +01:00
|
|
|
testResultsFormat: 'JUnit'
|
|
|
|
testResultsFiles: |
|
|
|
|
coverage-e2e/unittest.xml
|
2020-11-19 13:25:53 +00:00
|
|
|
coverage-integration/unittest.xml
|
2020-07-10 18:11:36 +01:00
|
|
|
coverage-unittest/unittest.xml
|
|
|
|
mergeTestResults: true
|
2020-05-28 18:29:28 +01:00
|
|
|
- task: CmdLine@2
|
2020-05-29 08:18:17 +01:00
|
|
|
env:
|
|
|
|
CODECOV_TOKEN: $(CODECOV_TOKEN)
|
2020-05-28 18:29:28 +01:00
|
|
|
inputs:
|
|
|
|
script: bash <(curl -s https://codecov.io/bash)
|
2020-05-28 18:44:25 +01:00
|
|
|
- stage: Build
|
|
|
|
jobs:
|
2020-05-28 18:46:10 +01:00
|
|
|
- job: build_server
|
2020-05-28 18:44:25 +01:00
|
|
|
pool:
|
|
|
|
vmImage: 'ubuntu-latest'
|
2020-05-28 20:00:30 +01:00
|
|
|
steps:
|
2021-01-11 15:18:44 +00:00
|
|
|
- task: Bash@3
|
|
|
|
inputs:
|
|
|
|
targetType: 'inline'
|
|
|
|
script: |
|
|
|
|
set -x
|
|
|
|
echo '##vso[task.setvariable variable=branchName]$(echo "$(System.PullRequest.SourceBranch)" | sed "s/\//-/g")'
|
2020-05-28 20:00:30 +01:00
|
|
|
- task: Docker@2
|
|
|
|
inputs:
|
|
|
|
containerRegistry: 'dockerhub'
|
2020-12-05 21:08:42 +00:00
|
|
|
repository: 'beryju/authentik'
|
2020-05-28 20:00:30 +01:00
|
|
|
command: 'buildAndPush'
|
|
|
|
Dockerfile: 'Dockerfile'
|
2020-09-21 16:55:57 +01:00
|
|
|
tags: "gh-${{ variables.branchName }}"
|