Operations > Environments shows incorrect Deployment date for Manual deploy jobs
Summary
In the page Operations > Environments, the date shown in the overview and when listing deployments per environments is expected to be the time the deployment happened.
According to the documentation: "The exact time the last deployment was performed" (See: https://docs.gitlab.com/ce/ci/environments.html#viewing-the-current-status-of-an-environment)
Instead, it shows the date the deployment job was created, not when it ran. For a manual job, this time can be very different.
This makes it harder for us to track when a deployment happened.
The current work-around is to always run the deployment step twice. Because the second time a new job is created and then the creation time and execution time are the same.
Steps to reproduce
Create a gitlab-ci.yml with:
- two stages:
- build
- job: "build"
- deploy
- job: "deploy_to_" (one job per environment)
- Build must always run
- The deploy jobs are only available in case of a tag (only: tags)
- The deploy jobs are ran manually (when the deploy must happen)
- build
- Create a tag for the project
- Result:
- a pipeline is created with two stages: build and deploy
- The build job is executed automatically
- The deploy stage has jobs per environment, but they haven't run yet
- Run the deploy step for one environment - e.g. "TEST" (note the time when it was run)
- Go to Operations > Environment to view the deployment
- Operations > Environment shows one deploy for the "TEST" environment
What is the current bug behavior?
- The "Updated" date for that environment is the time the deploy job was created
- The "Created" column, when looking at all deployments of a single environment is the time the deploy job was created
What is the expected correct behavior?
- The "Updated" for that environment is the time the deploy job was executed
- The "Created" column, when looking at all deployments of a single environment is the time the deploy job was executed
The documentation states the page will show "The exact time the last deployment was performed", I assume the deployment is only performed when the job actually runs, not when it is created.
Relevant logs and/or screenshots
We use the following gitlab-ci:
variables:
PROJECT_NAME: "my-project"
before_script:
- echo "starting build for $env:PROJECT_NAME"
- echo "Restoring NuGet Packages..."
- nuget restore DotNet
stages:
- build
- deploy
build:
tags:
- vs2017
stage: build
script:
- '& "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe" /property:Configuration=Release DotNet/MySolution.sln'
artifacts:
paths:
- DotNet/LastBuild
name: '"$env:CI_PROJECT_NAME"_"$env:CI_COMMIT_REF_NAME"_"$env:CI_COMMIT_SHA"'
deploy_to_internal_test:
tags:
- vs2017
stage: deploy
environment:
name: INTERNAL_TEST
script:
- 'Write-Host "Tag marked as deployed to INTERNAL_TEST"'
only:
- tags
when: manual
deploy_to_test:
tags:
- vs2017
stage: deploy
environment:
name: TEST
script:
- 'Write-Host "Tag marked as deployed to TEST"'
only:
- tags
when: manual
deploy_to_production:
tags:
- vs2017
stage: deploy
environment:
name: PRODUCTION
script:
- 'Write-Host "Tag marked as deployed to PRODUCTION"'
only:
- tags
when: manual
Output of checks
This bug happens on GitLab EE.
Results of GitLab environment info
GitLab Enterprise Edition 11.5.3-ee
Results of GitLab application Check
GitLab Enterprise Edition 11.5.3-ee
Possible fixes
I'm going to guess this is the line of code causing the issue, or that it's at least involved:
Additionally, but much less important: the time is shown in UTC instead of local time, unlike elsewhere in GitLab.