apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: build-workflow- spec: entrypoint: main serviceAccountName: argo-workflows-user volumeClaimTemplates: - metadata: name: workspace spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 128Mi templates: # Main steps sequence - name: main steps: - - name: checkout template: checkout - - name: tests template: tests - - name: build-and-push-image template: build-and-push-image arguments: parameters: - name: git-sha value: "{{steps.checkout.outputs.parameters.git-sha}}" # GIT CHECKOUT - name: checkout container: image: alpine/git command: [sh,-c] workingDir: /workspace env: - name: REPO_URL value: https://gitea.marcin00.pl/pikram/user-microservice.git - name: REPO_BRANCH value: dev args: - | git clone --depth 1 --branch "${REPO_BRANCH}" --single-branch "${REPO_URL}" repo cd repo git rev-parse HEAD > /tmp/gitsha.txt volumeMounts: - name: workspace mountPath: /workspace outputs: parameters: - name: git-sha valueFrom: path: /tmp/gitsha.txt # PYTHON TESTS - name: tests script: image: python:3.11.7-alpine command: [sh] workingDir: /workspace/repo/api source: | python3 -m venv env source env/bin/activate pip install -r requirements.txt pytest python3 -m pytest --junit-xml=pytest_junit.xml volumeMounts: - name: workspace mountPath: /workspace # BUILD AND PUSH DOCKER IMAGE - name: build-and-push-image inputs: parameters: - name: git-sha podSpecPatch: | runtimeClassName: sysbox-runc metadata: annotations: io.kubernetes.cri-o.userns-mode: "auto:size=65536" container: image: marcin00.azurecr.io/azure-cli-docker:slim-bookworm command: [sh, -c] workingDir: /workspace/repo env: - name: DOCKER_IMAGE value: marcin00.azurecr.io/user-microservice:{{inputs.parameters.git-sha}} - name: CLIENT_ID value: c302726f-fafb-4143-94c1-67a70975574a # Client id tożsamości zarządzanej używanej przez klaster - name: ACR_NAME value: marcin00 args: - | dockerd & docker build -t $DOCKER_IMAGE --build-arg APP_VERSION={{inputs.parameters.git-sha}} --build-arg BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") . az login --identity --client-id ${CLIENT_ID} az acr login --name ${ACR_NAME} docker push ${DOCKER_IMAGE} volumeMounts: - name: workspace mountPath: /workspace