Skip to content

Instantly share code, notes, and snippets.

@mitsutaka
Last active September 11, 2019 00:42
Show Gist options
  • Save mitsutaka/4c4760fd6b7714ee580c2c904ec86941 to your computer and use it in GitHub Desktop.
Save mitsutaka/4c4760fd6b7714ee580c2c904ec86941 to your computer and use it in GitHub Desktop.
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: cicd-node-examples-
spec:
entrypoint: cicd
arguments:
parameters:
- name: revision
value: 6e179c188c453eeb0f5da17439dddf61f962e208
- name: repo
value: http://github.com/kintohub/node-examples.git
- name: image
value: mitsutaka/node-examples
volumeClaimTemplates:
- metadata:
name: workdir
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
templates:
- name: cicd
inputs:
parameters:
- name: revision
- name: repo
- name: image
steps:
- - name: build
template: docker-build-push
arguments:
parameters:
- name: revision
value: "{{inputs.parameters.revision}}"
- name: repo
value: "{{inputs.parameters.repo}}"
- name: image
value: "{{inputs.parameters.image}}"
- - name: k8s-deploy
template: k8s-deploy
arguments:
parameters:
- name: revision
value: "{{inputs.parameters.revision}}"
- name: image
value: "{{inputs.parameters.image}}"
- name: docker-build-push
inputs:
parameters:
- name: revision
- name: repo
- name: image
artifacts:
- name: code
path: /work/build
git:
repo: "{{inputs.parameters.repo}}"
revision: "{{inputs.parameters.revision}}"
container:
image: docker:17.10
command: [sh, -c]
args: ["until docker ps; do sleep 3; done;
docker build -t {{inputs.parameters.image}}:{{inputs.parameters.revision}} /work/build/ &&
docker login -u ${DOCKER_USER} -p ${DOCKER_PASSWORD} &&
docker push {{inputs.parameters.image}}:{{inputs.parameters.revision}}
"]
env:
- name: DOCKER_HOST
value: 127.0.0.1
# Please create docker-auth secrets in advance
# kubectl create secret generic docker-auth --from-literal=user=YOUR_USER --from-literal=password=YOUR_PASSWORD
- name: DOCKER_USER
valueFrom:
secretKeyRef:
name: docker-auth
key: user
- name: DOCKER_PASSWORD
valueFrom:
secretKeyRef:
name: docker-auth
key: password
volumeMounts:
- name: workdir
mountPath: /work
sidecars:
- name: dind
image: docker:17.10-dind
securityContext:
privileged: true
mirrorVolumeMounts: true
- name: k8s-deploy
inputs:
parameters:
- name: revision
- name: image
resource:
action: apply
manifest: |
apiVersion: apps/v1
kind: Deployment
metadata:
name: node-examples
labels:
app: node
spec:
replicas: 2
selector:
matchLabels:
app: node
template:
metadata:
labels:
app: node
spec:
containers:
- name: node
image: {{inputs.parameters.image}}:{{inputs.parameters.revision}}
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: node-examples
labels:
app: node
spec:
ports:
- port: 80
targetPort: 80
selector:
app: node
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment