Concourse Lab Creation

Suporte ao HackTricks

Ambiente de Teste

Executando o Concourse

Com Docker-Compose

Este arquivo docker-compose simplifica a instalação para fazer alguns testes com o concourse:

wget https://raw.githubusercontent.com/starkandwayne/concourse-tutorial/master/docker-compose.yml
docker-compose up -d

Você pode baixar a linha de comando fly para o seu SO na web em 127.0.0.1:8080

Com Kubernetes (Recomendado)

Você pode implantar facilmente o concourse em Kubernetes (no minikube, por exemplo) usando o helm-chart: concourse-chart.

brew install helm
helm repo add concourse https://concourse-charts.storage.googleapis.com/
helm install concourse-release concourse/concourse
# concourse-release will be the prefix name for the concourse elements in k8s
# After the installation you will find the indications to connect to it in the console

# If you need to delete it
helm delete concourse-release

Após gerar o ambiente concourse, você pode gerar um segredo e dar acesso ao SA executando no concourse web para acessar os segredos do K8s:

echo 'apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-secrets
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]

---

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-secrets-concourse
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: read-secrets
subjects:
- kind: ServiceAccount
name: concourse-release-web
namespace: default

---

apiVersion: v1
kind: Secret
metadata:
name: super
namespace: concourse-release-main
type: Opaque
data:
secret: MWYyZDFlMmU2N2Rm

' | kubectl apply -f -

Criar Pipeline

Um pipeline é composto por uma lista de Jobs que contém uma lista ordenada de Steps.

Steps

Vários tipos diferentes de steps podem ser usados:

Cada step em um job plan é executado em seu próprio container. Você pode executar qualquer coisa que desejar dentro do container (ou seja, executar meus testes, executar este script bash, construir esta imagem, etc.). Portanto, se você tiver um job com cinco steps, o Concourse criará cinco containers, um para cada step.

Portanto, é possível indicar o tipo de container que cada step precisa ser executado.

Exemplo de Pipeline Simples

jobs:
- name: simple
plan:
- task: simple-task
privileged: true
config:
# Tells Concourse which type of worker this task should run on
platform: linux
image_resource:
type: registry-image
source:
repository: busybox # images are pulled from docker hub by default
run:
path: sh
args:
- -cx
- |
sleep 1000
echo "$SUPER_SECRET"
params:
SUPER_SECRET: ((super.secret))
fly -t tutorial set-pipeline -p pipe-name -c hello-world.yml
# pipelines are paused when first created
fly -t tutorial unpause-pipeline -p pipe-name
# trigger the job and watch it run to completion
fly -t tutorial trigger-job --job pipe-name/simple --watch
# From another console
fly -t tutorial intercept --job pipe-name/simple

Verifique 127.0.0.1:8080 para ver o fluxo do pipeline.

Script Bash com pipeline de saída/entrada

É possível salvar os resultados de uma tarefa em um arquivo e indicar que é uma saída e, em seguida, indicar a entrada da próxima tarefa como a saída da tarefa anterior. O que o concourse faz é montar o diretório da tarefa anterior na nova tarefa onde você pode acessar os arquivos criados pela tarefa anterior.

Gatilhos

Você não precisa acionar os trabalhos manualmente toda vez que precisar executá-los, você também pode programá-los para serem executados toda vez:

Verifique um exemplo de pipeline YAML que é acionado em novos commits para master em https://concourse-ci.org/tutorial-resources.html

Support HackTricks

Last updated