Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 1 | pipeline { |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 2 | agent none |
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 3 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 4 | options { |
5 | disableConcurrentBuilds(abortPrevious: true); | ||||
6 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 7 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 8 | // TODO: periodic multi-node jobs |
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 9 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 10 | environment { |
11 | EARTHLY_CI = 'true' | ||||
12 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 13 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 14 | stages { |
15 | stage('lint') { | ||||
16 | parallel { | ||||
17 | stage('ansible-lint') { | ||||
18 | agent { | ||||
19 | label 'earthly-2c-4g' | ||||
20 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 21 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 22 | steps { |
23 | sh 'earthly --output +lint.ansible-lint' | ||||
24 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 25 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 26 | post { |
27 | always { | ||||
28 | junit testResults: 'ansible-lint.xml', allowEmptyResults: true | ||||
29 | } | ||||
30 | } | ||||
31 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 32 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 33 | stage('markdownlint') { |
34 | agent { | ||||
35 | label 'earthly-2c-4g' | ||||
36 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 37 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 38 | steps { |
39 | sh 'earthly --output +lint.markdownlint' | ||||
40 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 41 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 42 | post { |
43 | always { | ||||
44 | junit testResults: 'junit.xml', allowEmptyResults: true | ||||
45 | } | ||||
46 | } | ||||
47 | } | ||||
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 48 | } |
49 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 50 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 51 | stage('unit') { |
Mohammed Naser | 4c8e0cb | 2024-02-21 11:51:34 -0500 | [diff] [blame] | 52 | agent { |
53 | label 'earthly-2c-4g' | ||||
54 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 55 | |
Mohammed Naser | 4c8e0cb | 2024-02-21 11:51:34 -0500 | [diff] [blame] | 56 | steps { |
57 | sh 'earthly --output +unit.go' | ||||
58 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 59 | |
Mohammed Naser | 4c8e0cb | 2024-02-21 11:51:34 -0500 | [diff] [blame] | 60 | post { |
61 | always { | ||||
62 | junit 'junit-go.xml' | ||||
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 63 | } |
64 | } | ||||
65 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 66 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 67 | stage('build') { |
68 | parallel { | ||||
69 | stage('collection') { | ||||
70 | agent { | ||||
71 | label 'earthly-2c-4g' | ||||
72 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 73 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 74 | steps { |
75 | sh 'earthly --output +build.collection' | ||||
76 | } | ||||
Mohammed Naser | fdd5cee | 2024-02-07 23:45:52 -0500 | [diff] [blame] | 77 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 78 | post { |
79 | success { | ||||
80 | archiveArtifacts artifacts: 'dist/**' | ||||
81 | } | ||||
82 | } | ||||
83 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 84 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 85 | stage('images') { |
86 | agent { | ||||
87 | label 'earthly' | ||||
88 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 89 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 90 | environment { |
Mohammed Naser | 66343ec | 2024-03-14 23:09:11 -0400 | [diff] [blame] | 91 | TEST_REGISTRY = "registry.atmosphere.dev/builds/${env.BRANCH_NAME.toLowerCase()}" |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 92 | PROD_REGISTRY = "ghcr.io/vexxhost/atmosphere" |
93 | REGISTRY = "${env.BRANCH_NAME == 'main' ? PROD_REGISTRY : TEST_REGISTRY}" | ||||
Mohammed Naser | 1dfea6b | 2024-02-09 01:04:26 -0500 | [diff] [blame] | 94 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 95 | EARTHLY_BUILD_ARGS = "REGISTRY=${REGISTRY}" |
96 | EARTHLY_PUSH = "true" | ||||
97 | } | ||||
Mohammed Naser | 1dfea6b | 2024-02-09 01:04:26 -0500 | [diff] [blame] | 98 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 99 | steps { |
100 | script { | ||||
101 | if (env.BRANCH_NAME == 'main') { | ||||
102 | docker.withRegistry('https://ghcr.io', 'github-packages-token') { | ||||
103 | sh 'earthly --push +images' | ||||
104 | } | ||||
105 | } else { | ||||
106 | docker.withRegistry('https://registry.atmosphere.dev', 'harbor-registry') { | ||||
107 | sh 'earthly --push +images' | ||||
108 | } | ||||
109 | } | ||||
110 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 111 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 112 | sh 'earthly --output +pin-images' |
113 | sh 'earthly +scan-images' | ||||
114 | stash name: 'src-with-pinned-images', includes: '**' | ||||
115 | } | ||||
116 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 117 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 118 | stage('docs') { |
119 | agent { | ||||
120 | label 'earthly-2c-4g' | ||||
121 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 122 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 123 | steps { |
124 | sh 'earthly +mkdocs-build' | ||||
125 | } | ||||
126 | } | ||||
127 | } | ||||
128 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 129 | |
Mohammed Naser | e7569e0 | 2024-02-20 14:33:37 -0500 | [diff] [blame] | 130 | // promote images |
131 | // release? | ||||
132 | // todo: manual pin commit to main (avoiding loop) | ||||
133 | } | ||||
Mohammed Naser | 1220717 | 2024-02-05 18:49:35 -0500 | [diff] [blame] | 134 | } |