From e7862e2eea87f89b42c454f6929b69c5fbba595f Mon Sep 17 00:00:00 2001 From: Tsiry Sandratraina Date: Sun, 20 Aug 2023 07:19:38 +0000 Subject: [PATCH] feat: add yaml generators for circleci, aws, azure and gitlab --- deno.lock | 57 +++++++++++++++++++++++++++++++---- fixtures/.gitlab-ci.yml | 28 +++++++++++++---- fixtures/azure-pipelines.yml | 22 ++++++++++++++ fixtures/buildspec.yml | 19 ++++++++++++ fixtures/codecov-workflow.yml | 2 +- fixtures/config.yml | 26 ++++++++++++++++ import_map.json | 5 ++- src/aws/config.ts | 24 +++++++++++++++ src/aws/config_test.ts | 9 ++++++ src/aws/init.ts | 3 ++ src/azure/config.ts | 41 +++++++++++++++++++++++++ src/azure/config_test.ts | 9 ++++++ src/azure/init.ts | 3 ++ src/circleci/config.ts | 37 +++++++++++++++++++++++ src/circleci/config_test.ts | 9 ++++++ src/circleci/init.ts | 3 ++ src/gitlab/config.ts | 35 +++++++++++++++------ 17 files changed, 309 insertions(+), 23 deletions(-) create mode 100644 fixtures/azure-pipelines.yml create mode 100644 fixtures/buildspec.yml create mode 100644 fixtures/config.yml create mode 100644 src/aws/config.ts create mode 100644 src/aws/config_test.ts create mode 100644 src/aws/init.ts create mode 100644 src/azure/config.ts create mode 100644 src/azure/config_test.ts create mode 100644 src/azure/init.ts create mode 100644 src/circleci/config.ts create mode 100644 src/circleci/config_test.ts create mode 100644 src/circleci/init.ts diff --git a/deno.lock b/deno.lock index c5e3f9a..dfe8fdc 100644 --- a/deno.lock +++ b/deno.lock @@ -1,13 +1,58 @@ { "version": "2", "remote": { - "https://deno.land/x/fluent_github_actions@v0.1.2/mod.ts": "dc62b622791da77bc27f68e33cba618983a0770a9a12dcc9e0f9a61161bb90e5", - "https://deno.land/x/fluent_github_actions@v0.1.2/src/event.ts": "c31430af085682cb4ad522c655a8a0800a3ab8b8aec7c979d60c909051d853b0", - "https://deno.land/x/fluent_github_actions@v0.1.2/src/job_spec.ts": "ee7af83e75285b4776ff4f9e14764187737178b4abc6c277da1c32491c41dfca", - "https://deno.land/x/fluent_github_actions@v0.1.2/src/step_spec.ts": "3207071b5dee8487f36fe4ea1881e8fd3b77c472c965c20a14093a3c919af9af", - "https://deno.land/x/fluent_github_actions@v0.1.2/src/workflow.ts": "488556e230fdeeb3a5b0d0bf548c570606aa356b0a7f667ea1d031d3263eb566", - "https://deno.land/x/fluent_github_actions@v0.1.2/src/workflow_spec.ts": "3ca9e565dc1dedd0531e0b852d50b9a3853a1ad35f2010760e0326590b80fa43", + "https://deno.land/std@0.191.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e", + "https://deno.land/std@0.191.0/testing/_diff.ts": "1a3c044aedf77647d6cac86b798c6417603361b66b54c53331b312caeb447aea", + "https://deno.land/std@0.191.0/testing/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7", + "https://deno.land/std@0.191.0/testing/asserts.ts": "e16d98b4d73ffc4ed498d717307a12500ae4f2cbe668f1a215632d19fcffc22f", + "https://deno.land/x/fluent_aws_codepipeline@v0.2.3/mod.ts": "79cc758901d20a3573d7e3cc2db9f0a5fe56833f4d9befcedc072b94d542eec7", + "https://deno.land/x/fluent_aws_codepipeline@v0.2.3/src/buildspec.ts": "fb07cbbf9473586cea66c0c508412080c2d4ba4e7f4ea0985661afeed445710b", + "https://deno.land/x/fluent_aws_codepipeline@v0.2.3/src/spec.ts": "c0ce4c6e2685e23a3abdeb9fc18012253199dae355b06189d8248b052301a63e", + "https://deno.land/x/fluent_azure_pipelines@v0.1.5/mod.ts": "6f3c62419b96251dd1b5d8d6a172c0a8724a73b7feec786e540f51f0c8a0f0fd", + "https://deno.land/x/fluent_azure_pipelines@v0.1.5/src/config.ts": "4b31558ce226ec0afe85d7ec8691950ab20c53637dea3cad6ad8b40b3986a242", + "https://deno.land/x/fluent_azure_pipelines@v0.1.5/src/spec.ts": "cab6e4a6afb0f16e6c406cfab87264a963734720c468532c4f778228d1f1758d", + "https://deno.land/x/fluent_circleci@v0.2.4/mod.ts": "e8cb9f5b325dbf6c1c25dc90f448047ea6a6df1a31fd2774a5830f843d6bd54e", + "https://deno.land/x/fluent_circleci@v0.2.4/src/config.ts": "d7e9902b4c2fddfa61ff6a509f3a09adee161fae9f93029dcbc8ec7a7bbd990b", + "https://deno.land/x/fluent_circleci@v0.2.4/src/job.ts": "002d6fa7603cc0333a42032b7859fc8325153da6ccfb3e1ad05aa50671e1e048", + "https://deno.land/x/fluent_circleci@v0.2.4/src/spec.ts": "d0e62aa54a686c5115bad922b22de05fd527aa2dac0813930f6c9b859fdf70cd", + "https://deno.land/x/fluent_github_actions@v0.2.1/mod.ts": "dc62b622791da77bc27f68e33cba618983a0770a9a12dcc9e0f9a61161bb90e5", + "https://deno.land/x/fluent_github_actions@v0.2.1/src/event.ts": "d44d42356a04aea7ba64ff9e9a12090f477605c27a940bbf80aba612e4e96d1e", + "https://deno.land/x/fluent_github_actions@v0.2.1/src/job_spec.ts": "93aa5b8b79cd8baaf875901322c4c38c27d4458439a831cb0ad86401b207a3dc", + "https://deno.land/x/fluent_github_actions@v0.2.1/src/step_spec.ts": "b399949d1fd9c45873cdda70d82c92e3d9d96ba9a1d5749f3010a1f242b20e35", + "https://deno.land/x/fluent_github_actions@v0.2.1/src/workflow.ts": "c9e3b7b3a59f7edff958eae8f27a8542f2a24889ea27c8aa016d0c0b0ca416c6", + "https://deno.land/x/fluent_github_actions@v0.2.1/src/workflow_spec.ts": "b5c696dc70ee3f777a565197c6a3a379d87d026e12d59942fef5b9dc72124c3a", + "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts": "3becefe569f5c9814dffa1b534794a42b948481753a5903fa1b48d5337206ced", + "https://deno.land/x/fluent_gitlab_ci@v0.3.2/src/environment.ts": "f12ee4fb50e5100fccec29dc1d35aa430bfe8373e84286a8ab9f7b8e178f14e3", + "https://deno.land/x/fluent_gitlab_ci@v0.3.2/src/gitlabci.ts": "85d2335622c2def4a9554a9d8b8de4e62156f5d76d59a553e157bab4e6b6591f", + "https://deno.land/x/fluent_gitlab_ci@v0.3.2/src/gitlabci_spec.ts": "b60f40ecf26d243db2391aee70fdf71b133de3faaf789052020f58f98cf1b500", + "https://deno.land/x/fluent_gitlab_ci@v0.3.2/src/index.ts": "b5e374a24e3bca1d6fead0861f2c1b1e09e087a17e59297263f681ee71c972fe", + "https://deno.land/x/fluent_gitlab_ci@v0.3.2/src/job.ts": "a1ddf8d37ca33239de9d2c61f98835e585f6671748b37af8d647ebba5e1a9974", + "https://deno.land/x/zod@v3.22.1/ZodError.ts": "4de18ff525e75a0315f2c12066b77b5c2ae18c7c15ef7df7e165d63536fdf2ea", + "https://deno.land/x/zod@v3.22.1/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", + "https://deno.land/x/zod@v3.22.1/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", + "https://deno.land/x/zod@v3.22.1/helpers/enumUtil.ts": "54efc393cc9860e687d8b81ff52e980def00fa67377ad0bf8b3104f8a5bf698c", + "https://deno.land/x/zod@v3.22.1/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7", + "https://deno.land/x/zod@v3.22.1/helpers/parseUtil.ts": "f791e6e65a0340d85ad37d26cd7a3ba67126cd9957eac2b7163162155283abb1", + "https://deno.land/x/zod@v3.22.1/helpers/partialUtil.ts": "998c2fe79795257d4d1cf10361e74492f3b7d852f61057c7c08ac0a46488b7e7", + "https://deno.land/x/zod@v3.22.1/helpers/typeAliases.ts": "0fda31a063c6736fc3cf9090dd94865c811dfff4f3cb8707b932bf937c6f2c3e", + "https://deno.land/x/zod@v3.22.1/helpers/util.ts": "8baf19b19b2fca8424380367b90364b32503b6b71780269a6e3e67700bb02774", + "https://deno.land/x/zod@v3.22.1/index.ts": "d27aabd973613985574bc31f39e45cb5d856aa122ef094a9f38a463b8ef1a268", + "https://deno.land/x/zod@v3.22.1/locales/en.ts": "a7a25cd23563ccb5e0eed214d9b31846305ddbcdb9c5c8f508b108943366ab4c", + "https://deno.land/x/zod@v3.22.1/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4", + "https://deno.land/x/zod@v3.22.1/types.ts": "4edc1823385f446532c8c9f676d84550c6dc54b17135e34508576647d9612d0e", + "https://esm.sh/v131/yaml@2.3.1": "1fe2490feb3d9c6d2c71c64dbdbed90acd4164b00628b3c68a311b6731ca38b5", "https://esm.sh/v131/yaml@2.3.1/denonext/yaml.mjs": "71f677b4bfc69271af9d98db5194e354f9a1863955e208e26d32a9ef78bd89f5", "https://esm.sh/yaml@v2.3.1": "1fe2490feb3d9c6d2c71c64dbdbed90acd4164b00628b3c68a311b6731ca38b5" + }, + "npm": { + "specifiers": { + "@types/node": "@types/node@18.16.19" + }, + "packages": { + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", + "dependencies": {} + } + } } } diff --git a/fixtures/.gitlab-ci.yml b/fixtures/.gitlab-ci.yml index 196a803..f8775f5 100644 --- a/fixtures/.gitlab-ci.yml +++ b/fixtures/.gitlab-ci.yml @@ -1,12 +1,28 @@ # Do not edit this file directly. It is generated by Fluent GitLab CI -codecov: +.docker: + image: denoland/deno:alpine + services: + - docker:${DOCKER_VERSION}-dind + variables: + DOCKER_HOST: tcp://docker:2376 + DOCKER_TLS_VERIFY: "1" + DOCKER_TLS_CERTDIR: /certs + DOCKER_CERT_PATH: /certs/client + DOCKER_DRIVER: overlay2 + DOCKER_VERSION: 20.10.16 + +.dagger: + extends: .docker before_script: - - | - deno install -A -r https://cli.fluentci.io -n fluentci - curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh - sudo mv bin/dagger /usr/local/bin - dagger version + - apk add docker-cli curl unzip + - deno install -A -r https://cli.fluentci.io -n fluentci + - curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh + - mv bin/dagger /usr/local/bin + - dagger version + +codecov: + extends: .dagger script: - dagger run fluentci codecov_pipeline diff --git a/fixtures/azure-pipelines.yml b/fixtures/azure-pipelines.yml new file mode 100644 index 0000000..4e479ba --- /dev/null +++ b/fixtures/azure-pipelines.yml @@ -0,0 +1,22 @@ +# Do not edit this file directly. It is generated by https://deno.land/x/fluent_azure_pipelines + +trigger: + - master +pool: + name: Default + vmImage: ubuntu-latest +steps: + - script: | + curl -fsSL https://deno.land/x/install/install.sh | sh + export DENO_INSTALL="$HOME/.deno" + export PATH="$DENO_INSTALL/bin:$PATH" + displayName: Install Deno + - script: deno install -A -r https://cli.fluentci.io -n fluentci + displayName: Setup Fluent CI CLI + - script: | + curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh + sudo mv bin/dagger /usr/local/bin + dagger version + displayName: Setup Dagger + - script: dagger run fluentci codecov_pipeline + displayName: Upload Coverage diff --git a/fixtures/buildspec.yml b/fixtures/buildspec.yml new file mode 100644 index 0000000..c4c8b92 --- /dev/null +++ b/fixtures/buildspec.yml @@ -0,0 +1,19 @@ +# Do not edit this file directly. It is generated by https://deno.land/x/fluent_aws_codepipeline + +version: 0.2 +phases: + install: + commands: + - curl -fsSL https://deno.land/x/install/install.sh | sh + - export DENO_INSTALL="$HOME/.deno" + - export PATH="$DENO_INSTALL/bin:$PATH" + - deno install -A -r https://cli.fluentci.io -n fluentci + - curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh + - mv bin/dagger /usr/local/bin + - dagger version + build: + commands: + - dagger run fluentci codecov_pipeline + post_build: + commands: + - echo Build completed on `date` diff --git a/fixtures/codecov-workflow.yml b/fixtures/codecov-workflow.yml index 498b2d9..a7354ef 100644 --- a/fixtures/codecov-workflow.yml +++ b/fixtures/codecov-workflow.yml @@ -1,4 +1,4 @@ -# Do not edit this file directly. It is generated by Fluent Github Actions +# Do not edit this file directly. It is generated by https://deno.land/x/fluent_github_actions name: Codecov on: diff --git a/fixtures/config.yml b/fixtures/config.yml new file mode 100644 index 0000000..4ce8dd1 --- /dev/null +++ b/fixtures/config.yml @@ -0,0 +1,26 @@ +# Do not edit this file directly. It is generated by https://deno.land/x/fluent_circleci + +version: 2.1 +jobs: + codecov: + steps: + - checkout + - run: sudo apt-get update && sudo apt-get install -y curl unzip + - run: | + curl -fsSL https://deno.land/x/install/install.sh | sh + export DENO_INSTALL="$HOME/.deno" + export PATH="$DENO_INSTALL/bin:$PATH" + - run: deno install -A -r https://cli.fluentci.io -n fluentci + - run: | + curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh + sudo mv bin/dagger /usr/local/bin + dagger version + - run: + name: Upload Coverage + command: dagger run fluentci codecov_pipeline + machine: + image: ubuntu-2004:2023.07.1 +workflows: + dagger: + jobs: + - codecov diff --git a/import_map.json b/import_map.json index 03e10b9..9a9fdb0 100644 --- a/import_map.json +++ b/import_map.json @@ -2,7 +2,10 @@ "imports": { "@dagger.io/dagger": "https://esm.sh/v128/*@dagger.io/dagger@0.8.1", "fluent_gitlab_ci": "https://deno.land/x/fluent_gitlab_ci@v0.3.2/mod.ts", - "fluent_github_actions": "https://deno.land/x/fluent_github_actions@v0.1.2/mod.ts", + "fluent_github_actions": "https://deno.land/x/fluent_github_actions@v0.2.1/mod.ts", + "fluent_circleci": "https://deno.land/x/fluent_circleci@v0.2.4/mod.ts", + "fluent_azure_pipelines": "https://deno.land/x/fluent_azure_pipelines@v0.1.5/mod.ts", + "fluent_aws_codepipeline": "https://deno.land/x/fluent_aws_codepipeline@v0.2.3/mod.ts", "url": "node:url", "readline": "node:readline", "process": "node:process", diff --git a/src/aws/config.ts b/src/aws/config.ts new file mode 100644 index 0000000..4f5ca0c --- /dev/null +++ b/src/aws/config.ts @@ -0,0 +1,24 @@ +import { BuildSpec } from "fluent_aws_codepipeline"; + +export function generateYaml(): BuildSpec { + const buildspec = new BuildSpec(); + buildspec + .phase("install", { + commands: [ + "curl -fsSL https://deno.land/x/install/install.sh | sh", + 'export DENO_INSTALL="$HOME/.deno"', + 'export PATH="$DENO_INSTALL/bin:$PATH"', + "deno install -A -r https://cli.fluentci.io -n fluentci", + "curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh", + "mv bin/dagger /usr/local/bin", + "dagger version", + ], + }) + .phase("build", { + commands: ["dagger run fluentci codecov_pipeline"], + }) + .phase("post_build", { + commands: ["echo Build completed on `date`"], + }); + return buildspec; +} diff --git a/src/aws/config_test.ts b/src/aws/config_test.ts new file mode 100644 index 0000000..97bed68 --- /dev/null +++ b/src/aws/config_test.ts @@ -0,0 +1,9 @@ +import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts"; +import { generateYaml } from "./config.ts"; + +Deno.test(function generateAWSCodePipelineTest() { + const buildspec = generateYaml(); + const actual = buildspec.toString(); + const expected = Deno.readTextFileSync("./fixtures/buildspec.yml"); + assertEquals(actual, expected); +}); diff --git a/src/aws/init.ts b/src/aws/init.ts new file mode 100644 index 0000000..83944b7 --- /dev/null +++ b/src/aws/init.ts @@ -0,0 +1,3 @@ +import { generateYaml } from "./config.ts"; + +generateYaml().save("buildspec.yml"); diff --git a/src/azure/config.ts b/src/azure/config.ts new file mode 100644 index 0000000..88fabb5 --- /dev/null +++ b/src/azure/config.ts @@ -0,0 +1,41 @@ +import { AzurePipeline } from "fluent_azure_pipelines"; + +export function generateYaml(): AzurePipeline { + const azurePipeline = new AzurePipeline(); + + const installDeno = `\ + curl -fsSL https://deno.land/x/install/install.sh | sh + export DENO_INSTALL="$HOME/.deno" + export PATH="$DENO_INSTALL/bin:$PATH" +`; + + const setupDagger = `\ + curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh + sudo mv bin/dagger /usr/local/bin + dagger version +`; + + azurePipeline + .trigger(["master"]) + .pool({ + name: "Default", + vmImage: "ubuntu-latest", + }) + .step({ + script: installDeno, + displayName: "Install Deno", + }) + .step({ + script: "deno install -A -r https://cli.fluentci.io -n fluentci", + displayName: "Setup Fluent CI CLI", + }) + .step({ + script: setupDagger, + displayName: "Setup Dagger", + }) + .step({ + script: "dagger run fluentci codecov_pipeline", + displayName: "Upload Coverage", + }); + return azurePipeline; +} diff --git a/src/azure/config_test.ts b/src/azure/config_test.ts new file mode 100644 index 0000000..0311f55 --- /dev/null +++ b/src/azure/config_test.ts @@ -0,0 +1,9 @@ +import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts"; +import { generateYaml } from "./config.ts"; + +Deno.test(function generateAzurePipelinesTest() { + const azurepipelines = generateYaml(); + const actual = azurepipelines.toString(); + const expected = Deno.readTextFileSync("./fixtures/azure-pipelines.yml"); + assertEquals(actual, expected); +}); diff --git a/src/azure/init.ts b/src/azure/init.ts new file mode 100644 index 0000000..2e71b2e --- /dev/null +++ b/src/azure/init.ts @@ -0,0 +1,3 @@ +import { generateYaml } from "./config.ts"; + +generateYaml().save("azure-pipeline.yml"); diff --git a/src/circleci/config.ts b/src/circleci/config.ts new file mode 100644 index 0000000..49b5c8c --- /dev/null +++ b/src/circleci/config.ts @@ -0,0 +1,37 @@ +import { CircleCI, Job } from "fluent_circleci"; + +export function generateYaml(): CircleCI { + const circleci = new CircleCI(); + + const codecov = new Job().machine({ image: "ubuntu-2004:2023.07.1" }).steps([ + "checkout", + { + run: "sudo apt-get update && sudo apt-get install -y curl unzip", + }, + { + run: `\ +curl -fsSL https://deno.land/x/install/install.sh | sh +export DENO_INSTALL="$HOME/.deno" +export PATH="$DENO_INSTALL/bin:$PATH"`, + }, + { + run: "deno install -A -r https://cli.fluentci.io -n fluentci", + }, + { + run: `\ +curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh +sudo mv bin/dagger /usr/local/bin +dagger version`, + }, + { + run: { + name: "Upload Coverage", + command: "dagger run fluentci codecov_pipeline", + }, + }, + ]); + + circleci.jobs({ codecov }).workflow("dagger", ["codecov"]); + + return circleci; +} diff --git a/src/circleci/config_test.ts b/src/circleci/config_test.ts new file mode 100644 index 0000000..283a9c3 --- /dev/null +++ b/src/circleci/config_test.ts @@ -0,0 +1,9 @@ +import { assertEquals } from "https://deno.land/std@0.191.0/testing/asserts.ts"; +import { generateYaml } from "./config.ts"; + +Deno.test(function generateCircleCITest() { + const circleci = generateYaml(); + const actual = circleci.toString(); + const expected = Deno.readTextFileSync("./fixtures/config.yml"); + assertEquals(actual, expected); +}); diff --git a/src/circleci/init.ts b/src/circleci/init.ts new file mode 100644 index 0000000..1f71248 --- /dev/null +++ b/src/circleci/init.ts @@ -0,0 +1,3 @@ +import { generateYaml } from "./config.ts"; + +generateYaml().save(".circleci/config.yml"); diff --git a/src/gitlab/config.ts b/src/gitlab/config.ts index 98ac90a..a76f475 100644 --- a/src/gitlab/config.ts +++ b/src/gitlab/config.ts @@ -1,17 +1,34 @@ import { GitlabCI, Job } from "fluent_gitlab_ci"; export function generateYaml(): GitlabCI { - const setupDagger = ` -deno install -A -r https://cli.fluentci.io -n fluentci -curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh -sudo mv bin/dagger /usr/local/bin -dagger version`; + const docker = new Job() + .image("denoland/deno:alpine") + .services(["docker:${DOCKER_VERSION}-dind"]) + .variables({ + DOCKER_HOST: "tcp://docker:2376", + DOCKER_TLS_VERIFY: "1", + DOCKER_TLS_CERTDIR: "/certs", + DOCKER_CERT_PATH: "/certs/client", + DOCKER_DRIVER: "overlay2", + DOCKER_VERSION: "20.10.16", + }); + + const dagger = new Job().extends(".docker").beforeScript( + ` + apk add docker-cli curl unzip + deno install -A -r https://cli.fluentci.io -n fluentci + curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.8.1 sh + mv bin/dagger /usr/local/bin + dagger version + ` + ); const codecov = new Job() - .beforeScript(setupDagger, { - multiline: true, - }) + .extends(".dagger") .script("dagger run fluentci codecov_pipeline"); - return new GitlabCI().addJob("codecov", codecov); + return new GitlabCI() + .addJob(".docker", docker) + .addJob(".dagger", dagger) + .addJob("codecov", codecov); }