Skip to content

Bump js-yaml from 4.3.0 to 5.2.3 in /tests/functional #9607

Bump js-yaml from 4.3.0 to 5.2.3 in /tests/functional

Bump js-yaml from 4.3.0 to 5.2.3 in /tests/functional #9607

Workflow file for this run

---
name: build-iso-and-end2end-test
concurrency:
group: "zenko-tests-${{ github.ref_name }}"
cancel-in-progress: true
on:
push:
branches-ignore:
- 'development/**'
- 'q/*'
env:
# kind-env
CI_PASS_ON_TEST_FAILURE: 'true'
WORKER_COUNT: '2'
OPERATOR_REPO: git@github.com:scality/zenko-operator.git
OPERATOR_IMAGE: ""
KIND_NODE_IMAGE: "kindest/node:v1.33.4@sha256:25a6018e48dfcaee478f4a59af81157a437f15e6e140bf103f85a2e7cd0cbbf2"
VOLUME_ROOT: /artifacts
OIDC_REALM: "zenko"
OIDC_CLIENT_ID: "zenko-ui"
OIDC_USERNAME: 'storage_manager'
OIDC_PASSWORD: '123'
OIDC_FIRST_NAME: 'hello'
OIDC_LAST_NAME: 'world'
HTTP_PROXY: ""
HTTPS_PROXY: ""
BACKBEAT_BUCKET_CHECK_TIMEOUT_S: ""
BACKBEAT_LCC_CRON_RULE: ""
# e2e-env
VAULT_TEST_IMAGE_NAME: ""
VAULT_TEST_IMAGE_TAG: ""
# http-env
OIDC_ENDPOINT: 'http://keycloak.zenko.local'
OIDC_HOST: 'keycloak.zenko.local'
ENABLE_KEYCLOAK_HTTPS: 'false'
KEYCLOAK_VERSION: '18.4.4'
PROMETHEUS_NAME: "prometheus"
# mock-env
AZURE_ACCOUNT_NAME: devstoreaccount1
AZURE_BACKEND_ENDPOINT: https://devstoreaccount1.blob.azure-mock.zenko.local
AZURE_BACKEND_QUEUE_ENDPOINT: https://devstoreaccount1.queue.azure-mock.zenko.local
AZURE_SECRET_KEY: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
AWS_ENDPOINT: https://aws-mock.zenko.local
AWS_ACCESS_KEY: accessKey1
AWS_SECRET_KEY: verySecretKey1
VERIFY_CERTIFICATES: "false"
# secrets-env
AWS_BACKEND_SOURCE_LOCATION: awsbackend
AWS_BACKEND_DESTINATION_LOCATION: awsbackendmismatch
AWS_BACKEND_DESTINATION_FAIL_LOCATION: awsbackendfail
AWS_BACKEND_DESTINATION_REPLICATION_FAIL_CTST_LOCATION: awsbackendreplicationctstfail
GCP_BACKEND_DESTINATION_LOCATION: gcpbackendmismatch
AZURE_BACKEND_DESTINATION_LOCATION: azurebackendmismatch
COLD_BACKEND_DESTINATION_LOCATION: e2e-cold
AZURE_ARCHIVE_BACKEND_DESTINATION_LOCATION: e2e-azure-archive
MIRIA_BACKEND_DESTINATION_LOCATION: e2e-miria-archive
LOCATION_QUOTA_BACKEND: quotabackend
AWS_BUCKET_NAME: ci-zenko-aws-target-bucket
AWS_CRR_BUCKET_NAME: ci-zenko-aws-crr-target-bucket
AWS_FAIL_BUCKET_NAME: ci-zenko-aws-fail-target-bucket
AWS_REPLICATION_FAIL_CTST_BUCKET_NAME: ci-zenko-aws-replication-fail-ctst-bucket
AZURE_CRR_BUCKET_NAME: ci-zenko-azure-crr-target-bucket
AZURE_ARCHIVE_BUCKET_NAME: ci-zenko-azure-archive-target-bucket
AZURE_ARCHIVE_BUCKET_NAME_2: ci-zenko-azure-archive-target-bucket-2
AZURE_ARCHIVE_QUEUE_NAME: ci-zenko-azure-archive-target-queue
GCP_CRR_BUCKET_NAME: ci-zenko-gcp-crr-target-bucket
GCP_CRR_MPU_BUCKET_NAME: ci-zenko-gcp-crr-mpu-bucket
GCP_ACCESS_KEY: ${{ secrets.AWS_GCP_BACKEND_ACCESS_KEY }}
GCP_SECRET_KEY: ${{ secrets.AWS_GCP_BACKEND_SECRET_KEY }}
GCP_BACKEND_SERVICE_KEY: ${{ secrets.GCP_BACKEND_SERVICE_KEY }}
GCP_BACKEND_SERVICE_EMAIL: ${{ secrets.GCP_BACKEND_SERVICE_EMAIL }}
DEPLOY_CRR_LOCATIONS: "true"
CRR_SOURCE_LOCATION_NAME: crr-source-location
CRR_DESTINATION_LOCATION_NAME: crr-destination-location
CRR_SOURCE_ACCOUNT_NAME: crr-source-account
CRR_DESTINATION_ACCOUNT_NAME: crr-destination-account
CRR_LOCATION_A_NAME: crr-location-a
CRR_LOCATION_B_NAME: crr-location-b
CRR_LOCATION_C_NAME: crr-location-c
CRR_ACCOUNT_A_NAME: crr-account-a
CRR_ACCOUNT_B_NAME: crr-account-b
CRR_ACCOUNT_C_NAME: crr-account-c
CRR_ROLE_NAME: crr-role
# Enable this for Ring tests
ENABLE_RING_TESTS: "false"
RING_S3C_ACCESS_KEY: accessKey1
RING_S3C_SECRET_KEY: verySecretKey1
RING_S3C_ENDPOINT: http://s3c.local:8000
RING_S3C_BACKEND_SOURCE_LOCATION: rings3cbackendingestion
RING_S3C_INGESTION_SRC_BUCKET_NAME: ingestion-test-src-bucket
RING_S3C_BACKEND_SOURCE_NON_VERSIONED_LOCATION: rings3cbackendingestionnonversioned
RING_S3C_INGESTION_SRC_NON_VERSIONED_BUCKET_NAME: ingestion-test-src-non-versioned-bucket
RING_S3C_INGESTION_NON_VERSIONED_OBJECT_COUNT_PER_TYPE: 2
# CTST end2end tests
NOTIF_DEST_NAME: "destination1"
NOTIF_DEST_TOPIC: "destination-topic-1"
NOTIF_ALT_DEST_NAME: "destination2"
NOTIF_ALT_DEST_TOPIC: "destination-topic-2"
NOTIF_PLAIN_DEST_NAME: "destination3"
NOTIF_AUTH_DEST_TOPIC: "destination-topic-3"
NOTIF_AUTH_DEST_USERNAME: "admin"
NOTIF_AUTH_DEST_PASSWORD: "admin-secret"
NOTIF_SCRAM_DEST_NAME: "destination4"
NOTIF_SCRAM_DEST_TOPIC: "destination-topic-4"
NOTIF_SCRAM_DEST_USERNAME: "admin"
NOTIF_SCRAM_DEST_PASSWORD: "admin-secret"
SUBDOMAIN: "zenko.local"
DR_SUBDOMAIN: "dr.zenko.local"
ZENKO_ENABLE_SOSAPI: false
EXPIRE_ONE_DAY_EARLIER: true
TRANSITION_ONE_DAY_EARLIER: true
TIME_PROGRESSION_FACTOR: 1
# DEBUG WAIT
TMATE_SERVER_HOST: ${{ secrets.TMATE_SERVER_HOST }}
TMATE_SERVER_PORT: ${{ secrets.TMATE_SERVER_PORT }}
TMATE_SERVER_RSA_FINGERPRINT: ${{ secrets.TMATE_SERVER_RSA_FINGERPRINT }}
TMATE_SERVER_ED25519_FINGERPRINT: ${{ secrets.TMATE_SERVER_ED25519_FINGERPRINT }}
# Mocha reporter configuration
MOCHA_FILE: ${{ github.workspace }}/_reports/test-results-[hash].xml
jobs:
check-dashboards:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
# check_versions.sh counts dashboard revisions via `git rev-list`,
# so it needs the full history rather than a shallow clone.
fetch-depth: 0
- name: Setup python
uses: actions/setup-python@v6
with:
python-version: 3.14
cache: pip
cache-dependency-path: monitoring/requirements.txt
- name: Setup venv
run: |
python -m venv .venv
echo "$PWD/.venv/bin" >> $GITHUB_PATH
- name: Install dependencies
working-directory: monitoring
run: pip install -r requirements.txt
- name: Generate dashboards
working-directory: monitoring
run: |
for dashboard in */*.dashboard.py; do (
echo "Generating dashboard for $dashboard"
cd "$(dirname $dashboard)"
rev=$(jq '.version' < dashboard.json)
tmpfile=$(mktemp)
./$(basename $dashboard) -o $tmpfile
jq --arg rev "$rev" '.version = ($rev | tonumber)' < $tmpfile > dashboard.json
) done
- name: Check all dashboard files are up-to-date
run: |
if [ -n "$(git status --porcelain)" ]; then
echo "::error title=Dashboard files are out-of-date::Please run generate-dashboard and commit the changes"
git status
git diff
exit 1
fi
echo "All dashboard files are up-to-date."
- name: Verify monitoring dashboard versions
run: bash ./.github/scripts/check_versions.sh
check-alerts:
uses: ./.github/workflows/alerts.yaml
secrets: inherit
check-scripts:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install pytest
run: pip install pytest
- name: Run scripts tests
run: pytest tests/scripts/
check-workflows:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup node
uses: actions/setup-node@v6
with:
node-version: '24'
cache: yarn
cache-dependency-path: tests/workflows/yarn.lock
- name: Install dependencies
run: yarn --cwd tests/workflows install --frozen-lockfile
- name: Run workflows tests
run: ACT_LOG=true yarn --cwd tests/workflows test
- name: Collect logs
run: |
mkdir -p /tmp/artifacts/data/${{ github.job }}/act-logs/
mv tests/workflows/act-*.log /tmp/artifacts/data/check-workflows/act-logs/
tar zcvf /tmp/artifacts/${{ github.sha }}-${{ github.job }}-act-logs.tgz /tmp/artifacts/data/${{ github.job }}/act-logs;
if: always()
- name: Upload artifacts
uses: scality/action-artifacts@v4
with:
method: upload
url: https://artifacts.scality.net
user: ${{ secrets.ARTIFACTS_USER }}
password: ${{ secrets.ARTIFACTS_PASSWORD }}
source: /tmp/artifacts
if: always()
build-doc:
runs-on: ubuntu-24.04
permissions:
contents: read
packages: write
env:
ARTIFACTS_USER: "${{ secrets.ARTIFACTS_USER }}"
ARTIFACTS_PASSWORD: "${{ secrets.ARTIFACTS_PASSWORD }}"
ROOT_DOCUMENTATION_BUILDDIR: "docs/docsource/build"
DOCUMENTATION_BUILDDIR: "build"
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Login to Registry
uses: docker/login-action@v4
with:
username: "${{ github.repository_owner }}"
password: "${{ github.token }}"
registry: ghcr.io
- name: Compute docs builder image tag
env:
REPO: ${{ github.repository }}
run: |
echo "DOCS_DOCKERFILE_HASH=$(git rev-parse HEAD:docs/Dockerfile)" >> $GITHUB_ENV
echo "DOCS_IMAGE=ghcr.io/${REPO,,}/docs-builder" >> $GITHUB_ENV
- name: Build and push docs builder image
uses: docker/build-push-action@v7
with:
push: true
context: ./docs
tags: ${{ env.DOCS_IMAGE }}:${{ env.DOCS_DOCKERFILE_HASH }}
cache-from: type=registry,ref=${{ env.DOCS_IMAGE }}:${{ env.DOCS_DOCKERFILE_HASH }}
cache-to: type=inline
- name: Build docs
run: |
mkdir -p ${{ env.ROOT_DOCUMENTATION_BUILDDIR }}
docker run --rm \
-v ${{ github.workspace }}:/work \
-w /work/docs \
${{ env.DOCS_IMAGE }}:${{ env.DOCS_DOCKERFILE_HASH }} \
tox --workdir /tmp/tox -e docs -- html BUILDDIR=${{ env.DOCUMENTATION_BUILDDIR }}
- name: Create tar file for documentation
run: |
sudo chown -R "$(id -u):$(id -g)" ${{ env.ROOT_DOCUMENTATION_BUILDDIR }}
tar --create --gzip --directory ./${{ env.ROOT_DOCUMENTATION_BUILDDIR }} --file ./${{ env.ROOT_DOCUMENTATION_BUILDDIR }}/zenko-documentation.tar.gz doctrees html
- name: Upload documentation
uses: scality/action-artifacts@v4
with:
method: upload
url: https://artifacts.scality.net
user: ${{ secrets.ARTIFACTS_USER }}
password: ${{ secrets.ARTIFACTS_PASSWORD }}
source: ${{ env.ROOT_DOCUMENTATION_BUILDDIR }}
build-iso:
runs-on: ubuntu-24.04
needs: [build-kafka, build-mongodb, check-dashboards]
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install tooling
uses: ./.github/actions/install-end2end-dependencies
- name: Install ISO build dependencies
shell: bash
run: |-
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
genisoimage \
isomd5sum \
skopeo
- name: Login to Registry
uses: docker/login-action@v4
with:
username: "${{ github.repository_owner }}"
password: "${{ github.token }}"
registry: ghcr.io
- name: Login to Docker Hub
uses: docker/login-action@v4
with:
username: "${{ secrets.DOCKERHUB_LOGIN }}"
password: "${{ secrets.DOCKERHUB_PASSWORD }}"
- name: Get token to access ZKOP
uses: actions/create-github-app-token@v3
id: app-token
with:
app-id: ${{ vars.ACTIONS_APP_ID }}
private-key: ${{ secrets.ACTIONS_APP_PRIVATE_KEY }}
owner: ${{ github.repository_owner }}
repositories: |
zenko-operator
- name: Configure GIT
run: git config --global url."https://git:${{ env.GIT_ACCESS_TOKEN }}@github.com/".insteadOf "https://github.com/"
env:
GIT_ACCESS_TOKEN: ${{ steps.app-token.outputs.token }}
- name: Build ISO
run: PATH="/usr/local/bin:$PATH" bash -x ./build.sh
working-directory: ./solution
- name: Build base ISO
run: PATH="/usr/local/bin:$PATH" bash -x ./build.sh
working-directory: ./solution-base
- name: Upload ISO
uses: scality/action-artifacts@v4
with:
method: upload
url: https://artifacts.scality.net
user: ${{ secrets.ARTIFACTS_USER }}
password: ${{ secrets.ARTIFACTS_PASSWORD }}
source: "solution/_build"
- name: Upload base ISO
uses: scality/action-artifacts@v4
with:
method: upload
url: https://artifacts.scality.net
user: ${{ secrets.ARTIFACTS_USER }}
password: ${{ secrets.ARTIFACTS_PASSWORD }}
source: "solution-base/_build"
build-kafka:
uses: ./.github/workflows/build-kafka.yaml
secrets: inherit
build-mongodb:
uses: ./.github/workflows/build-mongodb.yaml
secrets: inherit
lint-functional-tests:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup Node environment
uses: ./.github/actions/setup-node-env
with:
app-id: ${{ vars.ACTIONS_APP_ID }}
private-key: ${{ secrets.ACTIONS_APP_PRIVATE_KEY }}
repositories: cli-testing
- name: Build cucumber typescript
working-directory: tests/functional
run: yarn build:cucumber
- name: Lint all tests
working-directory: tests/functional
run: yarn lint
- name: Check for unused step definitions
working-directory: tests/functional
run: yarn unused-steps
end2end-pra:
needs: [build-kafka, build-mongodb]
runs-on: ubuntu-24.04-16core
env:
DEPLOY_CRR_LOCATIONS: "false"
steps:
- name: Checkout
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install dependencies
uses: ./.github/actions/install-end2end-dependencies
- name: Wait for Docker daemon to be ready
uses: ./.github/actions/wait-docker-ready
- name: Login to Registry
uses: docker/login-action@v4
with:
username: "${{ github.repository_owner }}"
password: "${{ github.token }}"
registry: ghcr.io
- name: Setup Node environment
id: setup-access
uses: ./.github/actions/setup-node-env
with:
app-id: ${{ vars.ACTIONS_APP_ID }}
private-key: ${{ secrets.ACTIONS_APP_PRIVATE_KEY }}
repositories: |
cli-testing
zenko-operator
- name: Deploy Zenko
uses: ./.github/actions/deploy
env:
GIT_ACCESS_TOKEN: ${{ steps.setup-access.outputs.token }}
- name: Prepare PRA environment
run: bash prepare-pra.sh
working-directory: ./.github/scripts/end2end
- name: Deploy second Zenko for PRA
run: bash deploy-zenko.sh end2end-pra default './configs/zenko.yaml'
working-directory: ./.github/scripts/end2end
- name: Add Keycloak pra user and assign StorageManager role
shell: bash
run: bash keycloak-helper.sh add-user default end2end-pra
env:
OIDC_USERNAME: 'zenko-end2end-pra'
OIDC_EMAIL: 'e2e-pra@zenko.local'
working-directory: ./.github/scripts/end2end
- name: Configure E2E PRA test environment
run: bash configure-e2e.sh end2end-pra default
working-directory: ./.github/scripts/end2end
env:
OIDC_USERNAME: 'zenko-end2end-pra'
- name: Configure E2E CTST test environment
run: bash configure-e2e-ctst.sh
working-directory: ./.github/scripts/end2end
- name: Run CTST end to end tests
run: bash .github/scripts/end2end/run-e2e-ctst.sh "@PRA"
- name: Debug wait
uses: ./.github/actions/debug-wait
timeout-minutes: 60
if: failure() && runner.debug == '1'
- name: Archive and publish artifacts
uses: ./.github/actions/archive-artifacts
with:
user: ${{ secrets.ARTIFACTS_USER }}
password: ${{ secrets.ARTIFACTS_PASSWORD }}
trunk_token: ${{ secrets.TRUNK_TOKEN }}
junit-paths: ${{ github.workspace }}/tests/functional/ctst/reports/*.xml
if: always()
end2end-2-shards-http:
needs: [build-kafka, build-mongodb]
runs-on:
- ubuntu-24.04-8core
env:
MONGODB_SHARD_COUNT: 2
steps:
- name: Checkout
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install dependencies
uses: ./.github/actions/install-end2end-dependencies
- name: Wait for Docker daemon to be ready
uses: ./.github/actions/wait-docker-ready
- name: Login to Registry
uses: docker/login-action@v4
with:
username: "${{ github.repository_owner }}"
password: "${{ github.token }}"
registry: ghcr.io
- name: Setup Node environment
id: setup-access
uses: ./.github/actions/setup-node-env
with:
app-id: ${{ vars.ACTIONS_APP_ID }}
private-key: ${{ secrets.ACTIONS_APP_PRIVATE_KEY }}
repositories: |
cli-testing
zenko-operator
- name: Deploy Zenko
uses: ./.github/actions/deploy
env:
GIT_ACCESS_TOKEN: ${{ steps.setup-access.outputs.token }}
- name: Set up e2e environment
run: source .github/scripts/end2end/setup-e2e-env.sh
env:
SKIP_CTST: '1'
- name: Run init CI test
working-directory: tests/functional
run: yarn run test:operator
- name: Run iam policies tests
working-directory: tests/functional
run: yarn run test:iam_policies
- name: Run cloudserver tests
working-directory: tests/functional
run: yarn run test:object_api
- name: Run smoke tests
working-directory: tests/functional
run: yarn run test:smoke
- name: Enable HTTPS
run: bash enable-https.sh
working-directory: ./.github/scripts/end2end
- name: Run smoke tests (HTTPS)
working-directory: tests/functional
run: yarn run test:smoke
- name: Debug wait
uses: ./.github/actions/debug-wait
timeout-minutes: 60
if: failure() && runner.debug == '1'
- name: Archive and publish artifacts
uses: ./.github/actions/archive-artifacts
with:
user: ${{ secrets.ARTIFACTS_USER }}
password: ${{ secrets.ARTIFACTS_PASSWORD }}
trunk_token: ${{ secrets.TRUNK_TOKEN }}
if: always()
end2end-sharded:
needs: [build-kafka, build-mongodb]
runs-on:
- ubuntu-24.04-8core
env:
ENABLE_RING_TESTS: "true"
steps:
- name: Checkout
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install dependencies
uses: ./.github/actions/install-end2end-dependencies
- name: Wait for Docker daemon to be ready
uses: ./.github/actions/wait-docker-ready
- name: Login to Registry
uses: docker/login-action@v4
with:
username: "${{ github.repository_owner }}"
password: "${{ github.token }}"
registry: ghcr.io
- name: Setup Node environment
id: setup-access
uses: ./.github/actions/setup-node-env
with:
app-id: ${{ vars.ACTIONS_APP_ID }}
private-key: ${{ secrets.ACTIONS_APP_PRIVATE_KEY }}
repositories: |
cli-testing
zenko-operator
metadata
- name: Deploy Zenko
uses: ./.github/actions/deploy
env:
GIT_ACCESS_TOKEN: ${{ steps.setup-access.outputs.token }}
with:
deploy_metadata: ${{ env.ENABLE_RING_TESTS }}
- name: Set up e2e environment
run: source .github/scripts/end2end/setup-e2e-env.sh
env:
SKIP_CTST: '1'
- name: Run backbeat end to end tests
working-directory: tests/functional
run: |
bash mocha/gcp_shim.sh
yarn run test:all_extensions
- name: Debug wait
uses: ./.github/actions/debug-wait
timeout-minutes: 60
if: failure() && runner.debug == '1'
- name: Archive and publish artifacts
uses: ./.github/actions/archive-artifacts
with:
user: ${{ secrets.ARTIFACTS_USER }}
password: ${{ secrets.ARTIFACTS_PASSWORD }}
trunk_token: ${{ secrets.TRUNK_TOKEN }}
if: always()
ctst-end2end-sharded:
needs: [build-kafka, build-mongodb]
runs-on:
- ubuntu-24.04-8core
steps:
- name: Checkout
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Install dependencies
uses: ./.github/actions/install-end2end-dependencies
- name: Wait for Docker daemon to be ready
uses: ./.github/actions/wait-docker-ready
- name: Kubectl tool installer
uses: Azure/setup-kubectl@v5
- name: Login to Registry
uses: docker/login-action@v4
with:
username: "${{ github.repository_owner }}"
password: "${{ github.token }}"
registry: ghcr.io
- name: Setup Node environment
id: setup-access
uses: ./.github/actions/setup-node-env
with:
app-id: ${{ vars.ACTIONS_APP_ID }}
private-key: ${{ secrets.ACTIONS_APP_PRIVATE_KEY }}
repositories: |
cli-testing
zenko-operator
- name: Deploy Zenko
uses: ./.github/actions/deploy
env:
GIT_ACCESS_TOKEN: ${{ steps.setup-access.outputs.token }}
ZENKO_ENABLE_SOSAPI: true
TIME_PROGRESSION_FACTOR: 86400
TRANSITION_ONE_DAY_EARLIER: false
EXPIRE_ONE_DAY_EARLIER: false
- name: Configure E2E CTST test environment
run: bash configure-e2e-ctst.sh
working-directory: ./.github/scripts/end2end
- name: Run CTST end to end tests
run: bash .github/scripts/end2end/run-e2e-ctst.sh "@PreMerge and not @PRA"
timeout-minutes: 190
- name: Debug wait
uses: ./.github/actions/debug-wait
timeout-minutes: 60
if: failure() && runner.debug == '1'
- name: Archive and publish artifacts
uses: ./.github/actions/archive-artifacts
with:
user: ${{ secrets.ARTIFACTS_USER }}
password: ${{ secrets.ARTIFACTS_PASSWORD }}
trunk_token: ${{ secrets.TRUNK_TOKEN }}
junit-paths: ${{ github.workspace }}/tests/functional/ctst/reports/*.xml
if: always()
create-deployments:
runs-on: ubuntu-24.04
outputs:
environment: ${{ steps.env.outputs.environment }}
target-branch: ${{ steps.env.outputs.target_branch }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
filter: blob:none
- name: Determine target environment
id: env
env:
REF_NAME: ${{ github.ref_name }}
run: |
base_ref=$(./.github/scripts/resolve-base-branch.sh)
if [[ -n "$base_ref" ]]; then
environment="zenko/$REF_NAME@${base_ref#development/}"
echo "environment=$environment" >> "$GITHUB_OUTPUT"
echo "target_branch=$base_ref" >> "$GITHUB_OUTPUT"
echo "Target environment: $environment"
else
echo "No development branch ancestor found, skipping deployments"
fi
- name: Create transient deployments
if: steps.env.outputs.environment != ''
uses: ./.github/actions/create-component-deployments
with:
app-id: ${{ vars.ACTIONS_APP_ID }}
app-private-key: ${{ secrets.ACTIONS_APP_PRIVATE_KEY }}
target-branch: ${{ steps.env.outputs.target_branch }}
environment: ${{ steps.env.outputs.environment }}
status: in_progress
transient: 'true'
log-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
description: Zenko CI running
update-deployments:
runs-on: ubuntu-24.04
needs:
- create-deployments
- build-iso
- build-kafka
- end2end-2-shards-http
- end2end-sharded
- end2end-pra
- ctst-end2end-sharded
if: always() && needs.create-deployments.outputs.environment != ''
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
filter: blob:none
- name: Determine CI result
id: result
env:
NEEDS_JSON: ${{ toJSON(needs) }}
run: |
status=$(jq -r '
del(.["create-deployments"]) |
to_entries |
if any(select(.key | test("build")) | .value.result | IN("failure","cancelled")) then
"error"
elif any(.value.result | IN("failure","cancelled")) then
"failure"
else
"success"
end
' <<<"$NEEDS_JSON")
echo "status=$status" >> "$GITHUB_OUTPUT"
echo "CI result: $status"
- name: Update deployment statuses
uses: ./.github/actions/create-component-deployments
with:
app-id: ${{ vars.ACTIONS_APP_ID }}
app-private-key: ${{ secrets.ACTIONS_APP_PRIVATE_KEY }}
target-branch: ${{ needs.create-deployments.outputs.target-branch }}
environment: ${{ needs.create-deployments.outputs.environment }}
status: ${{ steps.result.outputs.status }}
transient: 'true'
log-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
description: >-
Zenko CI ${{
steps.result.outputs.status == 'success' && 'passed' ||
steps.result.outputs.status == 'error' && 'build failed' ||
'tests failed' }}
write-final-status:
runs-on: ubuntu-24.04
needs:
- check-alerts
- check-dashboards
- check-scripts
- check-workflows
- build-doc
- build-iso
- build-kafka
- build-mongodb
- lint-functional-tests
- end2end-2-shards-http
- end2end-sharded
- end2end-pra
- ctst-end2end-sharded
steps:
- name: Upload final status
uses: scality/actions/upload_final_status@1.9.0
with:
ARTIFACTS_USER: ${{ secrets.ARTIFACTS_USER }}
ARTIFACTS_PASSWORD: ${{ secrets.ARTIFACTS_PASSWORD }}
JOBS_RESULTS: ${{ join(needs.*.result) }}
if: always()