Skip to content

Commit

Permalink
Add twig extends syntax to override Jenkinsfile
Browse files Browse the repository at this point in the history
Base blocks are able to be optionally overriden

Just an idea atm to get feedback. Perhaps the base file is small enough with notification template change without having to introduce it
  • Loading branch information
andytson-inviqa committed Nov 6, 2023
1 parent 6b2b173 commit 8b0cd78
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 27 deletions.
63 changes: 39 additions & 24 deletions application/overlay/Jenkinsfile.twig
Original file line number Diff line number Diff line change
@@ -1,28 +1,43 @@
{% set blocks = 'application/overlay/_twig/Jenkinsfile/' %}
def failureMessages = []
pipeline {
agent { label 'linux-amd64' }
environment {
COMPOSE_DOCKER_CLI_BUILD = {{ @('jenkins.docker.buildkit.enabled') ? '1' : '0' }}
DOCKER_BUILDKIT = {{ @('jenkins.docker.buildkit.enabled') ? '1' : '0' }}
{% if @('jenkins.credentials.my127ws_key') %}
MY127WS_KEY = credentials('{{ @('jenkins.credentials.my127ws_key') }}')
{% endif %}
MY127WS_ENV = "pipeline"
}
triggers { cron(env.BRANCH_NAME == '{{ @('git.default_branch') }}' ? 'H H(2-6) * * 1' : '') }
stages {
{% include blocks ~ 'stages.twig' %}
{% extends blocks ~ 'base.twig' %}

{#
{% block agent %}
agent {
docker {
label 'linux-amd64'
alwaysPull true
image 'quay.io/inviqa_images/workspace:latest'
args '--group-add docker --entrypoint "" --volume /var/run/docker.sock:/var/run/docker.sock --volume "$HOME/.my127:/root/.my127"'
}
}
post {
{% if @('jenkins.notifications.slack.channel') and @('jenkins.notifications.slack.token_credential_id') %}
failure {
{% include blocks ~ 'slack-notification.twig' %}
{% endblock %}
{% block stages %}
stage('Build, Test') {
when {
anyOf {
triggeredBy 'TimerTrigger'
allOf {
not { branch 'main' }
}
}
}
stages {
{% include blocks ~ 'stages-build-test.twig' %}
}
}
{% endif %}
always {
sh 'ws destroy'
cleanWs()
stage('Publish, Release') {
when {
not { triggeredBy 'TimerTrigger' }
anyOf {
branch 'develop'
branch 'main'
}
}
stages {
{% include blocks ~ 'stages-publish-release.twig' %}
}
}
}
}
{% endblock %}
#}
33 changes: 33 additions & 0 deletions application/overlay/_twig/Jenkinsfile/base.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{% set blocks = 'application/overlay/_twig/Jenkinsfile/' %}
def failureMessages = []
pipeline {
{% block agent %}
agent { label 'linux-amd64' }
{% endblock %}
environment {
{% block environment %}
COMPOSE_DOCKER_CLI_BUILD = {{ @('jenkins.docker.buildkit.enabled') ? '1' : '0' }}
DOCKER_BUILDKIT = {{ @('jenkins.docker.buildkit.enabled') ? '1' : '0' }}
{% if @('jenkins.credentials.my127ws_key') %}
MY127WS_KEY = credentials('{{ @('jenkins.credentials.my127ws_key') }}')
{% endif %}
MY127WS_ENV = "pipeline"
{% endblock %}
}
triggers { cron(env.BRANCH_NAME == '{{ @('git.default_branch') }}' ? 'H H(2-6) * * 1' : '') }
stages {
{% block stages %}
{% include blocks ~ 'stages-build-test.twig' %}
{% include blocks ~ 'stages-publish-release.twig' %}
{% endblock %}
}
post {
{% block post %}
{% include blocks ~ 'slack-notification.twig' %}
always {
sh 'ws destroy'
cleanWs()
}
{% endblock %}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,3 @@
{% include blocks ~ 'stages/build.twig' %}
{% include blocks ~ 'stages/test.twig' %}
{% endif %}

{% include blocks ~ 'stages/publish.twig' %}
{% include blocks ~ 'stages/deploy.twig' %}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{% include blocks ~ 'stages/publish.twig' %}
{% include blocks ~ 'stages/deploy.twig' %}

0 comments on commit 8b0cd78

Please sign in to comment.