Files
webapitest/.drone.yml
2026-03-14 10:31:41 +02:00

142 lines
3.0 KiB
YAML

---
kind: pipeline
type: docker
name: build
trigger:
event:
exclude:
- promote
clone:
disable: true
steps:
- name: checkout
image: alpine/git
commands:
- git clone https://gitea.khongisa.co.za/MngomaLab/webapitest.git .
- git checkout ${DRONE_COMMIT}
- name: dotnet build
image: mcr.microsoft.com/dotnet/sdk:10.0
commands:
- dotnet build --configuration Release
- name: dotnet test
image: mcr.microsoft.com/dotnet/sdk:10.0
commands:
- dotnet test --configuration Release
---
x-docker-auth: &docker-auth
DOCKER_AUTH_CONFIG: |
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "a2h3ZXppOlBHM0FRM0VPMFg="
}
}
}
kind: pipeline
type: docker
name: package
depends_on:
- build
trigger:
event:
exclude:
- promote
clone:
disable: true
steps:
- name: checkout
image: alpine/git
commands:
- git clone https://gitea.khongisa.co.za/MngomaLab/webapitest.git .
- git checkout ${DRONE_COMMIT}
- name: dotnet publish
image: mcr.microsoft.com/dotnet/sdk:10.0
commands:
- dotnet publish --configuration Release
- name: build and push
image: gcr.io/kaniko-project/executor:debug
environment:
<<: *docker-auth
commands:
- mkdir -p /kaniko/.docker
- echo "$DOCKER_AUTH_CONFIG" > /kaniko/.docker/config.json
- /kaniko/executor
--verbosity=debug
--context=.
--dockerfile=Dockerfile
--destination=index.docker.io/khwezi/webapitest:latest
--destination=index.docker.io/khwezi/webapitest:${DRONE_BUILD_NUMBER}
- name: volnerability scan
image: aquasec/trivy
commands:
- trivy image --exit-code 1 --timeout 15m --severity CRITICAL khwezi/webapitest:${DRONE_BUILD_NUMBER}
---
kind: pipeline
type: docker
name: deploy
depends_on:
- package
trigger:
event:
exclude:
- promote
clone:
disable: true
steps:
- name: uat
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_user
password:
from_secret: ssh_password
script:
- docker pull khwezi/webapitest:latest
- docker stop webapi || true
- docker rm webapi || true
- docker run -d --name webapi --restart unless-stopped -e ASPNETCORE_ENVIRONMENT=Development -p 4000:8081 khwezi/webapitest:latest
---
kind: pipeline
type: docker
name: golive
depends_on:
- deploy
clone:
disable: true
steps:
- name: prod
image: appleboy/drone-ssh
environment:
PLUGIN_USER:
from_secret: ssh_prod_user
PLUGIN_PASSWORD:
from_secret: ssh_prod_password
PLUGIN_HOST: 192.168.1.48
settings:
script:
- docker stop webapi || true
- docker rm webapi || true
- docker run -d --name webapi --restart unless-stopped -e ASPNETCORE_ENVIRONMENT=Production -p 4001:8081 khwezi/webapitest:latest
when:
event:
- promote
target:
- prod