0
I’m trying to achieve 2 things:
- I’d like to have a consistent naming convention for jobs in circle ci to enforce github rules before merging to release or production branches.
- Im trying to have it all in 1 workflow, to avoid code repitition.
Ive made a file that looks something like:
version: 2.1
orbs:
node: circleci/node@5.0.1
parameters:
backend-service-job:
type: boolean
default: false
frontend-service-job:
type: boolean
default: false
commands:
run-install:
parameters:
service_name:
type: string
default: admin
steps:
- checkout
- run:
name: Installing dependencies
command: |
cd << parameters.service_name >>
npm install
run-install-tests:
parameters:
service_name:
type: string
default: admin
steps:
- checkout
- run:
name: "Installing dependencies"
command: |
cd << parameters.service_name >>
npm install
- run:
name: Running Tests
command: |
cd << parameters.service_name >>
npm run test
build-frontend-push-docker:
parameters:
service_name:
type: string
default: admin
web_url:
type: string
default: admin
sourcemap:
type: boolean
default: false
steps:
- checkout
- setup_remote_docker:
version: 19.03.13
- run:
name: "Setup Cloud SDK"
command: |
gcloud setup ...
- run:
name: Docker build << parameters.service_name >>
command: |
cd << parameters.service_name >>
docker build -t ....
- run:
name: Push << parameters.service_name >> image to gcr
command: |
docker push ...
build-backend-push-docker:
parameters:
service_name:
type: string
default: admin
steps:
- checkout
- setup_remote_docker:
version: 19.03.13
- run:
name: "Setup Cloud SDK"
command: |
gcloud setup....
- run:
name: Docker build << parameters.service_name >>
command: |
docker build -t ....
- run:
name: Push << parameters.service_name >> image to gcr
command: docker push ...
jobs:
run-install-tests:
docker:
- image: circleci/node:14.4
parameters:
service_name:
type: string
default: admin
steps:
- run-install-tests:
service_name: << parameters.service_name >>
install:
docker:
- image: circleci/node:14.4
parameters:
service_name:
type: string
default: admin
steps:
- run-install:
service_name: << parameters.service_name >>
build-frontend-push-docker:
docker:
- image: google/cloud-sdk
parameters: # parameters are at the job level
service_name:
type: string
default: admin
web_url:
type: string
default: admin
sourcemap:
type: boolean
default: false
steps:
- build-frontend-push-docker:
service_name: << parameters.service_name >>
web_url: << parameters.web_url >>
sourcemap: << parameters.sourcemap >>
build-backend-push-docker:
docker:
- image: google/cloud-sdk
parameters: # parameters are at the job level
service_name:
type: string
default: admin
steps:
- build-backend-push-docker:
service_name: << parameters.service_name >>
workflows:
version: 2
backend:
when: << pipeline.parameters.backend-service-job >>
jobs:
- install:
service_name: 'backend'
- build-backend-push-docker:
service_name: 'backend'
requires:
- install
go-runner:
when: << pipeline.parameters.frontend-service-job >>
jobs:
- run-install-tests:
service_name: 'frontend'
- build-frontend-push-docker:
service_name: 'frontend'
web_url: "go-runner.com"
sourcemap: true
requires:
- run-install-tests
go-runner-2:
when: << pipeline.parameters.frontend-service-job >>
jobs:
- run-install-tests:
service_name: 'frontend'
- build-frontend-push-docker:
service_name: 'frontend'
web_url: "go-runner-2.com"
sourcemap: true
requires:
- run-install-tests
In github i can see the persistance for following jobs, for example
- run-install-tests
- install
- build-backend-push-docker
They always stay the same, which is ideal state,
The only thing that keeps changing is the docker-frontend-push-docker-NUMBER
and now we are back to my first 2 quesstions.
- How can i make sure that
docker-frontend-push-docker
name stays consistent and doesnt change? - Is it possible to put all in 1 workflow, rather than
go-runner
andgo-runner-2
and so on?
would appreciate any input