Skip to content

Commit 1d3d30a

Browse files
committed
Merge branch 'stackhpc/2024.1' into cross-arch-builds-2024.1
2 parents 6fd5f2a + 38876d7 commit 1d3d30a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1808
-48
lines changed

.automation.conf/config.sh

+9-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@
33

44
# See: https://github.com/stackhpc/docker-rally/blob/master/bin/rally-verify-wrapper.sh for a full list of tempest parameters that can be overriden.
55
# You can override tempest parameters like so:
6-
export TEMPEST_CONCURRENCY=2
6+
7+
# The Tempest concurrency determines how many tests can be running at once.
8+
# Higher values run tests faster but risk running out of resources and failing tests
9+
# On production systems, Tempest concurrency can usually be set to a high number e.g. 16-64. It is often limited by the number of available floating IPs.
10+
# On virtualised test environments, compute and networking speeds often limit the concurrency to 1-16 before tests begin to fail due to timeouts.
11+
export TEMPEST_CONCURRENCY=16
12+
13+
714
# Specify single test whilst experimenting
815
#export TEMPEST_PATTERN="${TEMPEST_PATTERN:-tempest.api.compute.servers.test_create_server.ServersTestJSON.test_host_name_is_same_as_server_name}"
916

@@ -21,9 +28,7 @@ if [ ! -z ${KAYOBE_ENVIRONMENT:+x} ]; then
2128
fi
2229

2330
if [[ "$KAYOBE_ENVIRONMENT" =~ "ci-multinode" ]]; then
24-
# SMSLab is currently running with 1G switches. This causes tests using volumes and images to fail if
25-
# the concurrency is set too high.
26-
export TEMPEST_CONCURRENCY=1
31+
export TEMPEST_CONCURRENCY=4
2732
# Uncomment this to perform a full tempest test
2833
# export KAYOBE_AUTOMATION_TEMPEST_LOADLIST=tempest-full
2934
# export KAYOBE_AUTOMATION_TEMPEST_SKIPLIST=ci-multinode-tempest-full

.github/workflows/stackhpc-all-in-one.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ jobs:
8888
- name: Install Package
8989
uses: ConorMacBride/install-package@main
9090
with:
91-
apt: git unzip nodejs
91+
apt: git unzip nodejs openssh-client
9292

9393
# If testing upgrade, checkout previous release, otherwise checkout current branch
9494
- name: Checkout ${{ inputs.upgrade && 'previous release' || 'current' }} config
@@ -223,6 +223,7 @@ jobs:
223223
admin_bootproto: dhcp
224224
admin_ips:
225225
controller0: "{{ access_ip_v4.value }}"
226+
admin_zone: admin
226227
EOF
227228
228229
- name: Write Terraform network interface config
@@ -443,7 +444,7 @@ jobs:
443444
-v $(pwd)/tempest-artifacts:/stack/tempest-artifacts \
444445
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
445446
$KAYOBE_IMAGE \
446-
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/tempest.sh -e ansible_user=stack -e rally_no_sensitive_log=false
447+
/stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/tempest.sh -e ansible_user=stack
447448
env:
448449
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY: ${{ steps.ssh_key.outputs.ssh_key }}
449450

.github/workflows/stackhpc-build-kayobe-image.yml

+22
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,25 @@ jobs:
9898
push: true
9999
tags: ${{ steps.meta.outputs.tags }}
100100
labels: ${{ steps.meta.outputs.labels }}
101+
102+
- name: Send message to Slack via Workflow Builder
103+
uses: slackapi/[email protected]
104+
with:
105+
payload: |
106+
{
107+
"channel-id": "${{ env.SLACK_CHANNEL_ID }}",
108+
"inputs": "${{ env.INPUTS }}",
109+
"message": "${{ env.MESSAGE }}",
110+
"results-url": "${{ env.RESULTS_URL }}",
111+
"workflow-url": "${{ env.WORKFLOW_URL }}"
112+
}
113+
env:
114+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
115+
# #release-train-alerts
116+
SLACK_CHANNEL_ID: C03B28HRP53
117+
INPUTS: >-
118+
branch: ${{ github.ref_name }}
119+
MESSAGE: "SKC Build Kayobe Image workflow failed :sob:"
120+
RESULTS_URL: "N/A"
121+
WORKFLOW_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
122+
if: failure() && github.event_name == 'push'

.github/workflows/stackhpc-ci-cleanup.yml

+21
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,24 @@ jobs:
7575
OS_CLOUD: openstack
7676
OS_APPLICATION_CREDENTIAL_ID: ${{ secrets.OS_APPLICATION_CREDENTIAL_ID }}
7777
OS_APPLICATION_CREDENTIAL_SECRET: ${{ secrets.OS_APPLICATION_CREDENTIAL_SECRET }}
78+
79+
- name: Send message to Slack via Workflow Builder
80+
uses: slackapi/[email protected]
81+
with:
82+
payload: |
83+
{
84+
"channel-id": "${{ env.SLACK_CHANNEL_ID }}",
85+
"inputs": "${{ env.INPUTS }}",
86+
"message": "${{ env.MESSAGE }}",
87+
"results-url": "${{ env.RESULTS_URL }}",
88+
"workflow-url": "${{ env.WORKFLOW_URL }}"
89+
}
90+
env:
91+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
92+
# #release-train-alerts
93+
SLACK_CHANNEL_ID: C03B28HRP53
94+
INPUTS: "N/A"
95+
MESSAGE: "SKC CI Cleanup workflow failed :sob:"
96+
RESULTS_URL: "N/A"
97+
WORKFLOW_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
98+
if: failure()

.github/workflows/stackhpc-container-image-build.yml

+120-13
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,21 @@ jobs:
7171
# Dynamically define job matrix.
7272
# We need a separate matrix entry for each distribution, when the relevant input is true.
7373
# https://stackoverflow.com/questions/65384420/how-do-i-make-a-github-action-matrix-element-conditional
74+
# For now include only RL9 in aarch64
7475
- name: Generate build matrix
7576
id: set-matrix
7677
run: |
77-
echo -n "matrix={\"distro\": [" >> $GITHUB_OUTPUT
78+
echo -n "matrix={\"include\": [" >> $GITHUB_OUTPUT
7879
comma=""
79-
if [[ ${{ inputs.rocky-linux-9 }} == 'true' ]]; then
80-
echo -n "$comma\"rocky\"" >> $GITHUB_OUTPUT
80+
if [[ '${{ inputs.rocky-linux-9 }}' == 'true' ]]; then
81+
echo -n "$comma{\"distro\": \"rocky\", \"arch\": \"amd64\"}" >> $GITHUB_OUTPUT
8182
comma=", "
83+
echo -n "$comma{\"distro\": \"rocky\", \"arch\": \"aarch64\"}" >> $GITHUB_OUTPUT
8284
fi
83-
if [[ ${{ inputs.ubuntu-jammy }} == 'true' ]]; then
84-
echo -n "$comma\"ubuntu\"" >> $GITHUB_OUTPUT
85-
comma=", "
85+
if [[ '${{ inputs.ubuntu-jammy }}' == 'true' ]]; then
86+
echo -n "$comma{\"distro\": \"ubuntu\", \"arch\": \"amd64\"}" >> $GITHUB_OUTPUT
8687
fi
87-
echo "], \"arch\": [\"amd64\", \"aarch64\"]}" >> $GITHUB_OUTPUT
88+
echo "]}" >> $GITHUB_OUTPUT
8889
8990
- name: Display container datetime tag
9091
run: |
@@ -99,10 +100,6 @@ jobs:
99100
strategy:
100101
fail-fast: false
101102
matrix: ${{ fromJson(needs.generate-tag.outputs.matrix) }}
102-
# Exclude ubuntu aarch64 builds for now
103-
exclude:
104-
- distro: ubuntu
105-
arch: aarch64
106103
needs:
107104
- generate-tag
108105
steps:
@@ -192,7 +189,7 @@ jobs:
192189
args="$args -e kolla_base_arch=${{ matrix.arch }}"
193190
fi
194191
args="$args -e kolla_base_distro=${{ matrix.distro }}"
195-
args="$args -e kolla_tag=${{ steps.write-kolla-tag.outputs.kolla-tag }}
192+
args="$args -e kolla_tag=${{ steps.write-kolla-tag.outputs.kolla-tag }}"
196193
args="$args -e stackhpc_repo_mirror_auth_proxy_enabled=true"
197194
source venvs/kayobe/bin/activate &&
198195
source src/kayobe-config/kayobe-env --environment ci-builder &&
@@ -232,7 +229,7 @@ jobs:
232229

233230
- name: Copy seed container image build logs to output directory
234231
run: sudo mv /var/log/kolla-build.log image-build-logs/kolla-build-seed.log
235-
if: inputs.seed
232+
if: inputs.seed && matrix.arch == 'amd64'
236233

237234
- name: Get built container images
238235
run: docker image ls --filter "reference=ark.stackhpc.com/stackhpc-dev/*:${{ steps.write-kolla-tag.outputs.kolla-tag }}*" > ${{ matrix.distro }}-container-images
@@ -320,6 +317,116 @@ jobs:
320317
run: if [ $(wc -l < image-build-logs/image-scan-output/critical-images.txt) -gt 0 ]; then cat image-build-logs/image-scan-output/critical-images.txt && exit 1; fi
321318
if: ${{ !inputs.push-dirty && !cancelled() }}
322319

320+
create-manifests:
321+
# Only for Rocky Linux for now
322+
name: Create Docker Manifests
323+
if: github.repository == 'stackhpc/stackhpc-kayobe-config' && inputs.push
324+
runs-on: arc-skc-container-image-builder-runner
325+
permissions: {}
326+
needs:
327+
- container-image-build
328+
steps:
329+
- name: Install package dependencies
330+
run: |
331+
sudo apt update
332+
sudo apt install -y git unzip python3-wheel python3-pip python3-venv curl jq wget openssh-server openssh-client
333+
334+
- name: Install gh
335+
run: |
336+
sudo mkdir -p -m 755 /etc/apt/keyrings && wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null
337+
sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
338+
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
339+
sudo apt update
340+
sudo apt install gh -y
341+
342+
- name: Checkout Kayobe Config
343+
uses: actions/checkout@v4
344+
with:
345+
path: src/kayobe-config
346+
347+
- name: Install Kayobe
348+
run: |
349+
mkdir -p venvs &&
350+
pushd venvs &&
351+
python3 -m venv kayobe &&
352+
source kayobe/bin/activate &&
353+
pip install -U pip &&
354+
pip install -r ../src/kayobe-config/requirements.txt
355+
356+
# Required for Pulp auth proxy deployment and Docker registry login.
357+
# Normally installed during host configure.
358+
- name: Install Docker Python SDK
359+
run: |
360+
sudo pip install docker
361+
362+
- name: Configure localhost as a seed
363+
run: |
364+
cat > src/kayobe-config/etc/kayobe/environments/ci-builder/inventory/hosts << EOF
365+
# A 'seed' host used for building images.
366+
# Use localhost for container image builds.
367+
[seed]
368+
localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3
369+
EOF
370+
371+
# See etc/kayobe/ansible/roles/pulp_auth_proxy/README.md for details.
372+
# NOTE: We override pulp_auth_proxy_conf_path to a path shared by the
373+
# runner and dind containers.
374+
- name: Deploy an authenticating package repository mirror proxy
375+
run: |
376+
source venvs/kayobe/bin/activate &&
377+
source src/kayobe-config/kayobe-env --environment ci-builder &&
378+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/pulp-auth-proxy.yml -e pulp_auth_proxy_conf_path=/home/runner/_work/pulp_proxy
379+
env:
380+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
381+
382+
- name: Download artifacts
383+
uses: actions/download-artifact@v4
384+
385+
- name: Combine pushed images lists
386+
run: |
387+
find . -name 'push-attempt-images.txt' -exec cat {} + > all-pushed-images.txt
388+
389+
- name: Log in to Docker registry
390+
run: |
391+
source venvs/kayobe/bin/activate &&
392+
source src/kayobe-config/kayobe-env --environment ci-builder &&
393+
kayobe playbook run ${KAYOBE_CONFIG_PATH}/ansible/docker-registry-login.yml
394+
env:
395+
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
396+
397+
- name: Create and Push Docker Manifests
398+
run: |
399+
set -ex
400+
mkdir -p logs
401+
images=$(cat all-pushed-images.txt | sort | uniq)
402+
# Filter out Ubuntu images
403+
manifest_images=$(echo "$images" | grep 'rocky' | sed -E 's/-(amd64|aarch64)$//' | sort | uniq)
404+
for base_image in $manifest_images; do
405+
arch_images=""
406+
for arch in amd64 aarch64; do
407+
arch_image="${base_image}-${arch}"
408+
# Check if the image exists in the registry
409+
if docker manifest inspect "$arch_image" > /dev/null 2>&1; then
410+
arch_images="$arch_images $arch_image"
411+
fi
412+
done
413+
if [ -n "$arch_images" ]; then
414+
echo "Creating manifest for $base_image with images:$arch_images" | tee -a logs/manifest-creation.log
415+
docker manifest create "$base_image" $arch_images | tee -a logs/manifest-creation.log
416+
docker manifest push "$base_image" | tee -a logs/manifest-creation.log
417+
else
418+
echo "No images found for $base_image, skipping." | tee -a logs/manifest-creation.log
419+
fi
420+
done
421+
422+
- name: Upload manifest logs
423+
uses: actions/upload-artifact@v4
424+
with:
425+
name: manifest-logs
426+
path: |
427+
all-pushed-images.txt
428+
logs/manifest-creation.log
429+
323430
# NOTE(mgoddard): Trigger another CI workflow in the
324431
# stackhpc-release-train repository.
325432
- name: Trigger container image repository sync

.github/workflows/stackhpc-multinode-periodic.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
name: Multinode periodic
3636
needs:
3737
- generate-inputs
38-
uses: stackhpc/stackhpc-openstack-gh-workflows/.github/workflows/multinode.yml@1.1.0
38+
uses: stackhpc/stackhpc-openstack-gh-workflows/.github/workflows/multinode.yml@1.2.0
3939
with:
4040
multinode_name: mn-prdc-${{ github.run_id }}
4141
os_distribution: ${{ needs.generate-inputs.outputs.os_distribution }}

.github/workflows/stackhpc-multinode.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ name: Multinode
5252
jobs:
5353
multinode:
5454
name: Multinode
55-
uses: stackhpc/stackhpc-openstack-gh-workflows/.github/workflows/multinode.yml@1.1.0
55+
uses: stackhpc/stackhpc-openstack-gh-workflows/.github/workflows/multinode.yml@1.2.0
5656
with:
5757
multinode_name: ${{ inputs.multinode_name }}
5858
os_distribution: ${{ inputs.os_distribution }}

.github/workflows/stackhpc-promote.yml

+22
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,25 @@ jobs:
4343
- name: Display link to container image promotion workflows
4444
run: |
4545
echo "::notice Container image promote workflow: https://github.com/stackhpc/stackhpc-release-train/actions/workflows/container-promote.yml"
46+
47+
- name: Send message to Slack via Workflow Builder
48+
uses: slackapi/[email protected]
49+
with:
50+
payload: |
51+
{
52+
"channel-id": "${{ env.SLACK_CHANNEL_ID }}",
53+
"inputs": "${{ env.INPUTS }}",
54+
"message": "${{ env.MESSAGE }}",
55+
"results-url": "${{ env.RESULTS_URL }}",
56+
"workflow-url": "${{ env.WORKFLOW_URL }}"
57+
}
58+
env:
59+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
60+
# #release-train-alerts
61+
SLACK_CHANNEL_ID: C03B28HRP53
62+
INPUTS: >-
63+
branch: ${{ github.ref_name }}
64+
MESSAGE: "SKC promote workflow failed :sob:"
65+
RESULTS_URL: "N/A"
66+
WORKFLOW_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
67+
if: failure()

doc/source/configuration/cephadm.rst

+2
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,8 @@ should be used in the Kolla Manila configuration e.g.:
342342
343343
manila_cephfs_filesystem_name: manila-cephfs
344344
345+
.. _RGWs-With-Ceph:
346+
345347
RADOS Gateways
346348
--------------
347349

0 commit comments

Comments
 (0)