Skip to content

ci: master build

ci: master build #1

name: Build easytrade on master
on:
push:
branches:
- "*"
- "!master"
# paths:
# - src/**
# - skaffold.yaml
env:
GAR_ADDRESS: europe-docker.pkg.dev
NAMESPACE: easytrade
SKAFFOLD_DEFAULT_REPO: europe-docker.pkg.dev/dynatrace-demoability/docker/easytrade
SKAFFOLD_VERSION: 2.13.2
jobs:
build-easytrade:
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Retrieve gar credentials
run: |
echo "${{ secrets.GAR_CREDENTIALS }}" | docker login -u _json_key_base64 --password-stdin "${{ env.GAR_ADDRESS }}"
- name: Set application version
uses: ./.github/actions/set-version
with:
version: 1.2.${{ github.run_number }}
- name: "Build easytrade and push it to Docker registry with commit tag"
uses: hiberbee/[email protected]
with:
command: build
push: true
skaffold-version: ${{ env.SKAFFOLD_VERSION }}
- name: "Build easytrade and push it to Docker registry with latest tag"
uses: hiberbee/[email protected]
with:
command: build
tag: latest
push: true
skaffold-version: ${{ env.SKAFFOLD_VERSION }}
deploy-easytrade:
runs-on: ubuntu-24.04
needs: build-easytrade
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Retrieve kubeconfig
run: |
mkdir ~/.kube
echo "${{ secrets.KUBECONFIG }}" > ~/.kube/config
- name: Checkout infrastructure repo
uses: actions/checkout@v4
with:
ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
repository: dynatrace/easytrade-infrastructure
path: easytrade-infrastructure
sparse-checkout: kubernetes-manifests
- name: Export short commit SHA
run: echo "COMMIT_SHA_SHORT=$(echo $GITHUB_SHA | cut -c 1-7)" >> $GITHUB_ENV
- name: Deploy easytrade
uses: hiberbee/[email protected]
with:
command: deploy
tag: ${{ env.COMMIT_SHA_SHORT }}
namespace: ${{ env.NAMESPACE }}
profile: aws-staging
run-tests:
runs-on: ubuntu-24.04
needs: deploy-easytrade
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Retrieve kubeconfig
run: |
mkdir ~/.kube
echo "${{ secrets.KUBECONFIG }}" > ~/.kube/config
- name: Enable test environment
run: |
kubectl -n ${{ env.NAMESPACE }} set env deployment/credit-card-order-service WORK_DELAY=10 WORK_RATE=10
kubectl -n ${{ env.NAMESPACE }} set env deployment/third-party-service COURIER_DELAY=10 COURIER_RATE=10 MANUFACTURE_DELAY=10 MANUFACTURE_RATE=10
- name: Wait 3 minutes
run: sleep 3m
- name: Order credit card
uses: ./.github/actions/order-credit-card
with:
namespace: ${{ env.NAMESPACE }}
- name: Wait 12 minutes
run: sleep 12m
- name: Check credit card order
uses: ./.github/actions/check-credit-card-order
with:
namespace: ${{ env.NAMESPACE }}
- name: Run validation
uses: ./.github/actions/run-validation
with:
client_id: ${{ secrets.OQR_CLIENT_ID }}
client_secret: ${{ secrets.OQR_CLIENT_SECRET }}
sso_url: ${{ secrets.SSO_URL }}
tenant_url: ${{ secrets.OQR_URL }}
- name: Disable test environment
run: |
kubectl -n ${{ env.NAMESPACE }} rollout undo deployment/credit-card-order-service deployment/third-party-service