diff --git a/.github/workflows/github-docker-registry-push.yml b/.github/workflows/github-docker-registry-push.yml index 8e015f0a..b4a33c91 100644 --- a/.github/workflows/github-docker-registry-push.yml +++ b/.github/workflows/github-docker-registry-push.yml @@ -91,8 +91,8 @@ jobs: uses: docker/login-action@v3 with: registry: ghcr.io - username: ${{ env.GHCR_USERNAME }} - password: ${{ env.GHCR_TOKEN }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - name: Extract branch name # This step extracts the branch name diff --git a/dockerfiles/maven/Dockerfile b/dockerfiles/maven/Dockerfile index 94cbba41..6ae67b60 100644 --- a/dockerfiles/maven/Dockerfile +++ b/dockerfiles/maven/Dockerfile @@ -1,4 +1,4 @@ -FROM jenkins/ssh-agent:6.4.0 as ssh-agent +FROM jenkins/ssh-agent:6.5.0 as ssh-agent # ca-certificates because curl uses certificates from ca-certificates RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl && apt-get clean && \ diff --git a/dockerfiles/plugins.txt b/dockerfiles/plugins.txt index 13b0653b..fe1caf61 100644 --- a/dockerfiles/plugins.txt +++ b/dockerfiles/plugins.txt @@ -7,7 +7,7 @@ branch-api:2.1200.v4b_a_3da_2eb_db_4 build-timeout:1.33 caffeine-api:3.1.8-133.v17b_1ff2e0599 checks-api:2.2.1 -cloudbees-folder:6.959.v4ed5cc9e2dd4 +cloudbees-folder:6.963.v6edc0fc71472 commons-lang3-api:3.17.0-84.vb_b_938040b_078 commons-text-api:1.12.0-129.v99a_50df237f7 configuration-as-code:1903.v004d55388f30 @@ -33,7 +33,7 @@ javax-mail-api:1.6.2-10 jaxb:2.3.9-1 jjwt-api:0.11.5-112.ve82dfb_224b_a_d jquery3-api:3.7.1-2 -junit:1309.v0078b_fecd6ed +junit:1311.v39e1716e4eb_e locale:549.v824602fe3393 mailer:489.vd4b_25144138f matrix-auth:3.2.3 diff --git a/extract-profiles.sh b/extract-profiles.sh new file mode 100755 index 00000000..5e09eaa8 --- /dev/null +++ b/extract-profiles.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -e + +original_file="docker-compose.yaml" + +# Function to add a service and its dependencies to the included_services list +add_service_and_dependencies() { + local service=$1 + # Mark the service as included + included_services["$service"]=1 + # Check if the service has dependencies + if yq e ".services.${service}.depends_on" "$original_file" -e > /dev/null; then + # Read dependencies of the service + local dependencies=($(yq e ".services.${service}.depends_on | keys" "$original_file" -o json | jq -r '.[]')) + # Recursively add dependencies + for dependency in "${dependencies[@]}"; do + if [[ -z "${included_services["$dependency"]}" ]]; then + add_service_and_dependencies "$dependency" + fi + done + fi +} + +# Step 1: Collect all dependencies +declare -A all_dependencies +services=$(yq e '.services | keys' "$original_file" -o json | jq -r '.[]') +for service in $services; do + dependencies=$(yq e ".services.$service.depends_on | keys" "$original_file" -o json | jq -r '.[]') + for dependency in $dependencies; do + all_dependencies["$dependency"]=1 + done +done + +# Step 2: Process each profile and include dependencies +for profile in $(yq e '.services[].profiles[]?' "$original_file" | sort -u); do + echo "Processing profile: $profile" + # Initialize an associative array to track included services + declare -A included_services + # Find and include services matching the profile + matching_services=$(yq e ".services | with_entries(select(.value.profiles[]? == \"$profile\")) | keys" "$original_file" -o json | jq -r '.[]') + for service in $matching_services; do + add_service_and_dependencies "$service" + done + # Correctly format the list of included services for yq query + included_services_keys=$(printf "'%s'," "${!included_services[@]}") + included_services_keys="[${included_services_keys%,}]" # Remove trailing comma and wrap in brackets + + # Generate the docker-compose file for the profile + echo "Generating docker-compose-$profile.yaml" + yq e ".services | with_entries(select(.key as \$k | .key == \"$included_services_list\"))" "$original_file" > "docker-compose-$profile.yaml" +done