Hello everyone, hope you have good day.
I want to test my drone configuration, I figured out that I can manually trigger the build process by pressing big blue button named “+ New Build”. But there’s a problem here, in my .drone.yml
file, I have setup a trigger to launch the build only IF the commit was tagged with *-release
suffix. Here is my .drone.yml
.
---
kind: pipeline
type: docker
name: publish
clone:
depth: 1
steps:
- name: "Populate env"
image: alpine:3.17.2
environment:
DB_PASSWORD:
from_secret: dbpass
CF_TOKEN:
from_secret: cftoken
CF_ZONE_ID:
from_secret: cfzone
S3_ACCESS_KEY:
from_secret: s3key
S3_SECRET_ACCESS_KEY:
from_secret: s3secret
SMTP_USERNAME:
from_secret: sesname
SMTP_PASS:
from_secret: sespass
commands:
- cp .env.example .env
- sed -i "/^DB_PASSWORD=/s/$/${DB_PASSWORD}/" .env
- sed -i "/^CLOUDFLARE_API_TOKEN=/s/$/${CF_TOKEN}/" .env
- sed -i "/^CLOUDFLARE_ZONE_ID=/s/$/${CF_ZONE_ID}/" .env
- sed -i "/^CONTABO_ACCESS_KEY_ID=/s/$/${S3_ACCESS_KEY}/" .env
- sed -i "/^CONTABO_SECRET_ACCESS_KEY=/s/$/${S3_SECRET_ACCESS_KEY}/" .env
- sed -i "/^MAIL_USERNAME=/s/$/${SMTP_USERNAME}/" .env
- sed -i "/^MAIL_PASSWORD=/s/$/${SMTP_PASS}/" .env
- name: frontend
image: node:19-alpine
commands:
- node -v
- npm -v
- yarn --version
- yarn config set cache-folder .yarn-cache
- yarn install
- name: backend
image: webdevops/php:8.1-alpine
commands:
- php -v
- composer -V
- composer update && composer install --prefer-dist
- php artisan key:generate && rm -rf ./hooks ./docker
- php artisan storage:link && composer dump-autoload --optimize
- php artisan route:clear
- php artisan config:clear
- php artisan cache:clear
- ./vendor/bin/phpunit
- name: upload
image: plugins/docker
settings:
registry: git.domain.net
repo: git.domain.net/jiper/system
dockerfile: docker/Dockerfile
context: .
tags:
- latest
purge: true
username:
from_secret: git_username
password:
from_secret: git_pass
trigger:
ref:
- refs/tags/*-release
event:
- [push, tag, custom]
I want to bypass this condition if the build originated from custom
event, the ideal would be to place OR
operator on trigger.
trigger:
ref:
- refs/tags/*-release
event:
- [push, tag]
OR
trigger:
event:
- custom
But upon reading the docs, it seems when putting multiple trigger, all of them must evaluate to true.
You can also combine multiple triggers. *Note that all triggers must evaluate to true when combining multiple triggers.
There’s actually a workaround to this problem, I can just add new pipeline with exact same content but this result to longer line and I feel there’s better workaround.
---
kind: pipeline
type: docker
name: publish
clone:
depth: 1
steps:
- name: "Populate env"
image: alpine:3.17.2
environment:
DB_PASSWORD:
from_secret: dbpass
CF_TOKEN:
from_secret: cftoken
CF_ZONE_ID:
from_secret: cfzone
S3_ACCESS_KEY:
from_secret: s3key
S3_SECRET_ACCESS_KEY:
from_secret: s3secret
SMTP_USERNAME:
from_secret: sesname
SMTP_PASS:
from_secret: sespass
commands:
- cp .env.example .env
- sed -i "/^DB_PASSWORD=/s/$/${DB_PASSWORD}/" .env
- sed -i "/^CLOUDFLARE_API_TOKEN=/s/$/${CF_TOKEN}/" .env
- sed -i "/^CLOUDFLARE_ZONE_ID=/s/$/${CF_ZONE_ID}/" .env
- sed -i "/^CONTABO_ACCESS_KEY_ID=/s/$/${S3_ACCESS_KEY}/" .env
- sed -i "/^CONTABO_SECRET_ACCESS_KEY=/s/$/${S3_SECRET_ACCESS_KEY}/" .env
- sed -i "/^MAIL_USERNAME=/s/$/${SMTP_USERNAME}/" .env
- sed -i "/^MAIL_PASSWORD=/s/$/${SMTP_PASS}/" .env
- name: frontend
image: node:19-alpine
commands:
- node -v
- npm -v
- yarn --version
- yarn config set cache-folder .yarn-cache
- yarn install
- name: backend
image: webdevops/php:8.1-alpine
commands:
- php -v
- composer -V
- composer update && composer install --prefer-dist
- php artisan key:generate && rm -rf ./hooks ./docker
- php artisan storage:link && composer dump-autoload --optimize
- php artisan route:clear
- php artisan config:clear
- php artisan cache:clear
- ./vendor/bin/phpunit
- name: upload
image: plugins/docker
settings:
registry: git.domain.net
repo: git.domain.net/jiper/system
dockerfile: docker/Dockerfile
context: .
tags:
- latest
purge: true
username:
from_secret: git_username
password:
from_secret: git_pass
trigger:
ref:
- refs/tags/*-release
event:
- [push, tag]
---
kind: pipeline
type: docker
name: publish-custom
clone:
depth: 1
steps:
- name: "Populate env"
image: alpine:3.17.2
environment:
DB_PASSWORD:
from_secret: dbpass
CF_TOKEN:
from_secret: cftoken
CF_ZONE_ID:
from_secret: cfzone
S3_ACCESS_KEY:
from_secret: s3key
S3_SECRET_ACCESS_KEY:
from_secret: s3secret
SMTP_USERNAME:
from_secret: sesname
SMTP_PASS:
from_secret: sespass
commands:
- cp .env.example .env
- sed -i "/^DB_PASSWORD=/s/$/${DB_PASSWORD}/" .env
- sed -i "/^CLOUDFLARE_API_TOKEN=/s/$/${CF_TOKEN}/" .env
- sed -i "/^CLOUDFLARE_ZONE_ID=/s/$/${CF_ZONE_ID}/" .env
- sed -i "/^CONTABO_ACCESS_KEY_ID=/s/$/${S3_ACCESS_KEY}/" .env
- sed -i "/^CONTABO_SECRET_ACCESS_KEY=/s/$/${S3_SECRET_ACCESS_KEY}/" .env
- sed -i "/^MAIL_USERNAME=/s/$/${SMTP_USERNAME}/" .env
- sed -i "/^MAIL_PASSWORD=/s/$/${SMTP_PASS}/" .env
- name: frontend
image: node:19-alpine
commands:
- node -v
- npm -v
- yarn --version
- yarn config set cache-folder .yarn-cache
- yarn install
- name: backend
image: webdevops/php:8.1-alpine
commands:
- php -v
- composer -V
- composer update && composer install --prefer-dist
- php artisan key:generate && rm -rf ./hooks ./docker
- php artisan storage:link && composer dump-autoload --optimize
- php artisan route:clear
- php artisan config:clear
- php artisan cache:clear
- ./vendor/bin/phpunit
- name: upload
image: plugins/docker
settings:
registry: git.domain.net
repo: git.domain.net/jiper/system
dockerfile: docker/Dockerfile
context: .
tags:
- latest
purge: true
username:
from_secret: git_username
password:
from_secret: git_pass
trigger:
event:
- custom
So my question is, is there anyway to bypass trigger condition ? I have search all over the docs and found no mention of this.