Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI: Use ARC runners for aio jobs, move CI to Leafcloud #917

Merged
merged 10 commits into from
Feb 9, 2024
12 changes: 6 additions & 6 deletions .github/workflows/overcloud-host-image-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ jobs:
if: inputs.ubuntu-jammy && steps.build_ubuntu_jammy.outcome == 'success'

- name: Upload updated images artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: Updated images list
path: /tmp/updated_images.txt
Expand All @@ -374,7 +374,7 @@ jobs:
steps.build_ubuntu_jammy.outcome == 'success'

- name: Upload CentOS build logs if build failed
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: CentOS build logs
path: |
Expand All @@ -384,7 +384,7 @@ jobs:
if: steps.build_centos_stream_8.outcome == 'failure'

- name: Upload Rocky 8 build logs if build failed
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: Rocky 8 build logs
path: |
Expand All @@ -394,7 +394,7 @@ jobs:
if: steps.build_rocky_8.outcome == 'failure'

- name: Upload Rocky 9 build logs if build failed
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: Rocky 9 build logs
path: |
Expand All @@ -404,7 +404,7 @@ jobs:
if: steps.build_rocky_9.outcome == 'failure'

- name: Upload Ubuntu Focal 20.04 build logs if build failed
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: Ubuntu Focal 20.04 build logs
path: |
Expand All @@ -414,7 +414,7 @@ jobs:
if: steps.build_ubuntu_focal.outcome == 'failure'

- name: Upload Ubuntu Jammy 22.04 build logs if build failed
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: Ubuntu Jammy 22.04 build logs
path: |
Expand Down
35 changes: 22 additions & 13 deletions .github/workflows/stackhpc-all-in-one.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,19 @@ on:
vm_interface:
description: Default network interface name
type: string
default: enp3s0
default: ens3
vm_flavor:
description: Flavor for the all-in-one VM
type: string
default: general.v1.medium
default: en1.large
vm_network:
description: Network for the all-in-one VM
type: string
default: stackhpc-release
default: stackhpc-ci
vm_subnet:
description: Subnet for the all-in-one VM
type: string
default: stackhpc-release-subnet
default: stackhpc-ci
OS_CLOUD:
description: Name of cloud in clouds.yaml
type: string
Expand All @@ -70,17 +70,26 @@ jobs:
all-in-one:
name: All in one
if: inputs.if
runs-on: [self-hosted, stackhpc-kayobe-config-aio]
runs-on: arc-skc-aio-runner
permissions: {}
env:
KAYOBE_ENVIRONMENT: ci-aio
KAYOBE_VAULT_PASSWORD: ${{ secrets.KAYOBE_VAULT_PASSWORD }}
KAYOBE_IMAGE: ${{ inputs.kayobe_image }}
steps:
- name: Install Package
uses: ConorMacBride/install-package@main
with:
apt: build-essential git unzip nodejs python3 python3-pip python3-wheel python-is-python3

- uses: actions/checkout@v4
with:
submodules: true

- name: Make sure dockerd is running and test Docker.
run: |
docker run --rm hello-world

- name: Output image tag
id: image_tag
run: |
Expand Down Expand Up @@ -209,11 +218,11 @@ jobs:
# The same tag may be reused (e.g. pr-123), so ensure we have the latest image.
- name: Pull latest Kayobe image
run: |
sudo docker image pull $KAYOBE_IMAGE
docker image pull $KAYOBE_IMAGE

- name: Run growroot
run: |
sudo -E docker run -t --rm \
docker run -t --rm \
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
$KAYOBE_IMAGE \
Expand All @@ -223,7 +232,7 @@ jobs:

- name: Host configure
run: |
sudo -E docker run -t --rm \
docker run -t --rm \
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
$KAYOBE_IMAGE \
Expand All @@ -233,7 +242,7 @@ jobs:

- name: Service deploy
run: |
sudo -E docker run -t --rm \
docker run -t --rm \
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
$KAYOBE_IMAGE \
Expand All @@ -243,7 +252,7 @@ jobs:

- name: Configure aio resources
run: |
sudo -E docker run -t --rm \
docker run -t --rm \
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
$KAYOBE_IMAGE \
Expand All @@ -254,7 +263,7 @@ jobs:
- name: Tempest tests
run: |
mkdir -p tempest-artifacts
sudo -E docker run -t --rm \
docker run -t --rm \
-v $(pwd):/stack/kayobe-automation-env/src/kayobe-config \
-v $(pwd)/tempest-artifacts:/stack/tempest-artifacts \
-e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY \
Expand All @@ -264,7 +273,7 @@ jobs:
KAYOBE_AUTOMATION_SSH_PRIVATE_KEY: ${{ steps.ssh_key.outputs.ssh_key }}

- name: Upload test result artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: tempest-results-${{ inputs.os_distribution }}-${{ inputs.os_release }}-${{ inputs.neutron_plugin }}
path: tempest-artifacts/*
Expand All @@ -284,5 +293,5 @@ jobs:

- name: Prune Docker images over 1 week old
# May fail if another prune is running
run: sudo docker image prune --all --force --filter until=168h || true
run: docker image prune --all --force --filter until=168h || true
if: always()
12 changes: 8 additions & 4 deletions .github/workflows/stackhpc-build-kayobe-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,20 @@ jobs:
submodules: true

- name: Log in to the Container registry
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
with:
driver-opts: |
image=moby/buildkit:master
Expand All @@ -78,14 +78,18 @@ jobs:
https_proxy: ${{ inputs.https_proxy }}
no_proxy: ${{ inputs.no_proxy }}

# Setting KAYOBE_USER_UID and KAYOBE_USER_GID to 1001 to match docker's defaults
# so that docker can run as a privileged user within the Kayobe image.
- name: Build and push Docker image
uses: docker/build-push-action@v3
uses: docker/build-push-action@v4
with:
file: ./.automation/docker/kayobe/Dockerfile
context: .
build-args: |
http_proxy=${{ inputs.http_proxy }}
https_proxy=${{ inputs.https_proxy }}
KAYOBE_USER_UID=1001
KAYOBE_USER_GID=1001
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
2 changes: 1 addition & 1 deletion .github/workflows/stackhpc-container-image-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ jobs:
run: if [ $(wc -l < ${{ matrix.distro }}-container-images) -le 1 ]; then exit 1; fi

- name: Upload container images artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.distro }} container images
path: ${{ matrix.distro }}-container-images
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/stackhpc-pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
uses: actions/checkout@v4

- name: Check changed files
uses: dorny/paths-filter@v2
uses: dorny/paths-filter@v3
id: changes
with:
# Filters are defined in this file.
Expand All @@ -51,7 +51,7 @@ jobs:
with:
fetch-depth: 0
- name: Setup Python ${{ matrix.python-version }} 🐍
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Tox 📦
Expand Down Expand Up @@ -85,7 +85,7 @@ jobs:
with:
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
neutron_plugin: ovs
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
Expand All @@ -99,7 +99,7 @@ jobs:
with:
kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }}
neutron_plugin: ovn
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
Expand All @@ -115,7 +115,7 @@ jobs:
os_distribution: rocky
os_release: "8"
neutron_plugin: ovs
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
Expand All @@ -131,7 +131,7 @@ jobs:
os_distribution: rocky
os_release: "8"
neutron_plugin: ovn
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
Expand All @@ -148,7 +148,7 @@ jobs:
os_release: focal
ssh_username: ubuntu
neutron_plugin: ovs
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
Expand All @@ -165,7 +165,7 @@ jobs:
os_release: focal
ssh_username: ubuntu
neutron_plugin: ovn
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
Expand All @@ -182,7 +182,7 @@ jobs:
os_release: jammy
ssh_username: ubuntu
neutron_plugin: ovs
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
Expand All @@ -199,7 +199,7 @@ jobs:
os_release: jammy
ssh_username: ubuntu
neutron_plugin: ovn
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
Expand All @@ -216,7 +216,7 @@ jobs:
os_release: "9"
ssh_username: cloud-user
neutron_plugin: ovs
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
Expand All @@ -233,7 +233,7 @@ jobs:
os_release: "9"
ssh_username: cloud-user
neutron_plugin: ovn
OS_CLOUD: sms-lab-release
OS_CLOUD: openstack
if: ${{ needs.check-changes.outputs.aio == 'true' }}
secrets: inherit
if: ${{ ! failure() && github.repository == 'stackhpc/stackhpc-kayobe-config' }}
16 changes: 16 additions & 0 deletions etc/kayobe/apt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,22 @@ apt_repositories: "{{ stackhpc_apt_repositories if 'overcloud' in group_names el
# repository mirrors are deployed.
apt_disable_sources_list: "{{ 'overcloud' in group_names }}"

# Apt auth configuration for accessing the package repository mirror.
stackhpc_apt_auth:
- machine: "{{ stackhpc_repo_mirror_url }}"
login: "{{ stackhpc_repo_mirror_username }}"
password: "{{ stackhpc_repo_mirror_password }}"
filename: "kayobe.conf"

# List of Apt auth configurations. Each item is a dict with the following keys:
# * machine: 'machine' entry in the auth file
# * login: 'login' entry in the auth file
# * password: 'password' entry in the auth file
# * filename: Name of a file in which to store the auth configuration. The
# extension should be '.conf'.
# Default is an empty list.
apt_auth: "{{ stackhpc_apt_auth if 'overcloud' in group_names and stackhpc_repo_mirror_username is truthy else [] }}"

###############################################################################
# Dummy variable to allow Ansible to accept this file.
workaround_ansible_issue_8743: yes
Loading
Loading