Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/stackhpc-update-kolla.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
codename: Epoxy
uses: ./.github/workflows/update-dependencies.yml
with:
openstack_version: ${{ matrix.version }}
branch: ${{ matrix.version }}
openstack_codename: ${{ matrix.codename }}
permissions:
contents: write
Expand Down
223 changes: 159 additions & 64 deletions .github/workflows/update-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,92 +3,187 @@ name: Update dependencies
on:
workflow_call:
inputs:
openstack_version:
description: OpenStack version
branch:
description: Branch to update. Must exist in all repositories. e.g. stackhpc/2025.1
type: string
required: true
openstack_codename:
description: OpenStack codename
description: OpenStack codename e.g. Epoxy
type: string
required: true
workflow_dispatch:
inputs:
branch:
description: Branch to update. Must exist in all repositories. e.g. stackhpc/2025.1
type: string
required: true
openstack_codename:
description: OpenStack codename e.g. Epoxy
type: string
required: true

jobs:
propose_github_release_updates:
propose-dependency-updates:
if: github.repository == 'stackhpc/stackhpc-kayobe-config'
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- key: kolla
path: src/kayobe-config/etc/kayobe/stackhpc.yml
repository: stackhpc/kolla
search_regex: 'stackhpc_kolla_source_version\:.*$'
prefix: 'stackhpc_kolla_source_version\: '

- key: kolla-ansible
path: src/kayobe-config/etc/kayobe/stackhpc.yml
repository: stackhpc/kolla-ansible
search_regex: 'stackhpc_kolla_ansible_source_version\:.*$'
prefix: 'stackhpc_kolla_ansible_source_version\: '

- key: kayobe
path: src/kayobe-config/requirements.txt
repository: stackhpc/kayobe
search_regex: 'kayobe@stackhpc\/.*$'
prefix: 'kayobe@'
runs-on: ubuntu-24.04
permissions:
contents: write
pull-requests: write
name: ${{ matrix.key }}
name: Propose dependency updates
outputs:
kolla-tag: ${{ steps.latest_kolla_tag.outputs.latest_tag || steps.current_kolla_version.outputs.version }}
kolla-ansible-tag: ${{ steps.latest_kolla_ansible_tag.outputs.latest_tag || steps.current_kolla_ansible_version.outputs.version }}
kayobe-tag: ${{ steps.latest_kayobe_tag.outputs.latest_tag || steps.current_kayobe_version.outputs.version }}
steps:
- name: Checkout
- name: Checkout Kayobe-config
uses: actions/checkout@v4
with:
ref: ${{ inputs.openstack_version }}
path: ${{ github.workspace }}/src/kayobe-config
ref: ${{ inputs.branch }}
path: src/kayobe-config

- name: Set sanitised branch name
id: branch_name
run: |
sanitised_name=$(echo "update-dependencies-${{ inputs.branch }}" | tr '/' '-')
echo "name=${sanitised_name}" >> $GITHUB_OUTPUT

- name: Set up branch and Git config
run: |
git checkout -b ${{ steps.branch_name.outputs.name }}
git config user.name "stackhpc-ci"
git config user.email "22933334+stackhpc-ci@users.noreply.github.com"
working-directory: src/kayobe-config

- name: Initialise PR Body
run: |
echo "This PR was created automatically to update dependencies for the ${{ inputs.branch }} release." > pr_body.md
echo "" >> pr_body.md
echo "### Changes" >> pr_body.md

- name: Checkout Kolla repository
uses: actions/checkout@v4
with:
repository: stackhpc/kolla
ref: ${{ inputs.branch }}
fetch-tags: true
path: src/kolla

- name: Get latest Kolla tag
id: latest_kolla_tag
run: echo "latest_tag=$(git describe --tags --abbrev=0 --match stackhpc/\*)" >> $GITHUB_OUTPUT
working-directory: ${{ github.workspace }}/src/kolla

- name: Get current Kolla version
id: current_kolla_version
run: |
VERSION=$(awk -F': ' '/stackhpc_kolla_source_version:/ {print $2}' src/kayobe-config/etc/kayobe/stackhpc.yml | xargs)
echo "version=${VERSION}" >> $GITHUB_OUTPUT

- name: Checkout the dependency repo
- name: Update and commit Kolla version if needed
if: steps.latest_kolla_tag.outputs.latest_tag != steps.current_kolla_version.outputs.version
run: |
sed -i "s/stackhpc_kolla_source_version\:.*$/stackhpc_kolla_source_version\: $(echo $TAG | sed 's/\//\\\//g')/g" etc/kayobe/stackhpc.yml
echo "- **Kolla** bumped from \`${{ steps.current_kolla_version.outputs.version }}\` to \`${{ steps.latest_kolla_tag.outputs.latest_tag }}\`" >> ../../pr_body.md
echo " - Changelog: https://github.com/stackhpc/kolla/releases/tag/${{ steps.latest_kolla_tag.outputs.latest_tag }}" >> ../../pr_body.md
git add etc/kayobe/stackhpc.yml
git commit -m "(automated) Bump kolla to ${{ steps.latest_kolla_tag.outputs.latest_tag }}"
env:
TAG: ${{ steps.latest_kolla_tag.outputs.latest_tag }}
working-directory: src/kayobe-config

- name: Checkout Kolla Ansible repository
uses: actions/checkout@v4
with:
repository: ${{ matrix.repository }}
ref: ${{ inputs.openstack_version }}
repository: stackhpc/kolla-ansible
ref: ${{ inputs.branch }}
fetch-tags: true
path: ${{ github.workspace }}/src/${{ matrix.key }}
path: src/kolla-ansible

- name: Get latest tag
id: latest_tag
- name: Get latest Kolla Ansible tag
id: latest_kolla_ansible_tag
run: echo "latest_tag=$(git describe --tags --abbrev=0 --match stackhpc/\*)" >> $GITHUB_OUTPUT
working-directory: ${{ github.workspace }}/src/kolla-ansible

- name: Get current Kolla Ansible version
id: current_kolla_ansible_version
run: |
TAG=$(git describe --tags --abbrev=0 --match stackhpc/\*)
echo latest_tag=${TAG} >> $GITHUB_OUTPUT
working-directory: ${{ github.workspace }}/src/${{ matrix.key }}
VERSION=$(awk -F': ' '/stackhpc_kolla_ansible_source_version:/ {print $2}' src/kayobe-config/etc/kayobe/stackhpc.yml | xargs)
echo "version=${VERSION}" >> $GITHUB_OUTPUT

- name: Update dependency key
- name: Update and commit Kolla Ansible version if needed
if: steps.latest_kolla_ansible_tag.outputs.latest_tag != steps.current_kolla_ansible_version.outputs.version
run: |
TAG_OVERRIDE=$(echo $TAG | sed 's/\//\\\//g')
sed -i "s/$SEARCH/$PREFIX$TAG_OVERRIDE/g" $REQUIREMENTS
sed -i "s/stackhpc_kolla_ansible_source_version\:.*$/stackhpc_kolla_ansible_source_version\: $(echo $TAG | sed 's/\//\\\//g')/g" etc/kayobe/stackhpc.yml
echo "- **Kolla-Ansible** bumped from \`${{ steps.current_kolla_ansible_version.outputs.version }}\` to \`${{ steps.latest_kolla_ansible_tag.outputs.latest_tag }}\`" >> ../../pr_body.md
echo " - Changelog: https://github.com/stackhpc/kolla-ansible/releases/tag/${{ steps.latest_kolla_ansible_tag.outputs.latest_tag }}" >> ../../pr_body.md
git add etc/kayobe/stackhpc.yml
git commit -m "(automated) Bump kolla-ansible to ${{ steps.latest_kolla_ansible_tag.outputs.latest_tag }}"
env:
PREFIX: ${{ matrix.prefix }}
TAG: ${{ steps.latest_tag.outputs.latest_tag }}
REQUIREMENTS: ${{ github.workspace }}/${{ matrix.path }}
SEARCH: ${{ matrix.search_regex }}
TAG: ${{ steps.latest_kolla_ansible_tag.outputs.latest_tag }}
working-directory: src/kayobe-config

- name: Propose changes via PR if required
uses: peter-evans/create-pull-request@v7
- name: Checkout Kayobe repository
uses: actions/checkout@v4
with:
path: ${{ github.workspace }}/src/kayobe-config
commit-message: >-
Bump ${{ matrix.key }} to ${{ steps.latest_tag.outputs.latest_tag }}
author: stackhpc-ci <22933334+stackhpc-ci@users.noreply.github.com>
branch: update-dependency/${{ matrix.key }}/${{ inputs.openstack_version }}
delete-branch: true
title: >-
Bump ${{ matrix.key }} to ${{ steps.latest_tag.outputs.latest_tag }}
body: >
This PR was created automatically to update ${{ inputs.openstack_version }}
${{ matrix.key }} to ${{ steps.latest_tag.outputs.latest_tag }}.

GitHub Release Changelog:
https://github.com/stackhpc/${{ matrix.key }}/releases/tag/${{ steps.latest_tag.outputs.latest_tag }}
labels: |
automated
${{ inputs.openstack_codename }}
repository: stackhpc/kayobe
ref: ${{ inputs.branch }}
fetch-tags: true
path: src/kayobe

- name: Get latest Kayobe tag
id: latest_kayobe_tag
run: echo "latest_tag=$(git describe --tags --abbrev=0 --match stackhpc/\*)" >> $GITHUB_OUTPUT
working-directory: ${{ github.workspace }}/src/kayobe

- name: Get current Kayobe version
id: current_kayobe_version
run: |
VERSION=$(grep 'kayobe@stackhpc/' src/kayobe-config/requirements.txt | sed 's/.*@//' | xargs)
echo "version=${VERSION}" >> $GITHUB_OUTPUT

- name: Update and commit Kayobe version if needed
if: steps.latest_kayobe_tag.outputs.latest_tag != steps.current_kayobe_version.outputs.version
run: |
sed -i "s|kayobe@stackhpc/.*$|kayobe@$(echo $TAG | sed 's|/|\\/|g')|g" requirements.txt
echo "- **Kayobe** bumped from \`${{ steps.current_kayobe_version.outputs.version }}\` to \`${{ steps.latest_kayobe_tag.outputs.latest_tag }}\`" >> ../../pr_body.md
echo " - Changelog: https://github.com/stackhpc/kayobe/releases/tag/${{ steps.latest_kayobe_tag.outputs.latest_tag }}" >> ../../pr_body.md
git add requirements.txt
git commit -m "(automated) Bump kayobe to ${{ steps.latest_kayobe_tag.outputs.latest_tag }}"
env:
TAG: ${{ steps.latest_kayobe_tag.outputs.latest_tag }}
working-directory: src/kayobe-config

- name: Check for new commits
id: check_commits
run: |
count=$(git rev-list --count ${{ inputs.branch }}..HEAD)
if [ "$count" -gt 0 ]; then
echo "has_commits=true" >> $GITHUB_OUTPUT
else
echo "has_commits=false" >> $GITHUB_OUTPUT
fi
working-directory: src/kayobe-config

- name: Push commits
if: steps.check_commits.outputs.has_commits == 'true'
run: git push --force origin ${{ steps.branch_name.outputs.name }}
working-directory: src/kayobe-config

- name: Create or Update Pull Request
if: steps.check_commits.outputs.has_commits == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
working-directory: src/kayobe-config
run: |
EXISTING_PR=$(gh pr list --head "${{ steps.branch_name.outputs.name }}" --json number -q '.[0].number')
if [ -n "$EXISTING_PR" ]; then
gh pr close $EXISTING_PR
fi
gh pr create \
--base "${{ inputs.branch }}" \
--head "${{ steps.branch_name.outputs.name }}" \
--title "(automated) Bump dependencies for OpenStack ${{ inputs.branch }}" \
--body-file ../../pr_body.md \
--label "automated" \
--label "${{ inputs.openstack_codename }}"

Loading