codegenerator/zuul.d/rust.yaml
Artem Goncharov b19ca1d4d5 Start building response types in the SDK
Introduce openstack_types crate with certain types that might be
helpful.

In the current form those cannot be reused from cli or tui since it is
necessary to tweak StructableTable to be able to treat different
rendering of cli and tui versus the raw structs.

Change-Id: I23674e0e9119f75739139e015f44d1100d6d84e2
2025-04-08 10:27:25 +02:00

110 lines
4.5 KiB
YAML

---
- job:
name: codegenerator-rust-base
parent: unittests
description: |
Base job for generation of the Rust code
attempts: 1
timeout: 1800
pre-run:
- playbooks/codegenerator/pre.yaml
post-run:
- playbooks/rust/post.yaml
vars:
codegenerator_service_metadata_target_map:
- service: "block-storage"
metadata: "metadata/block-storage_metadata.yaml"
targets: ["rust-sdk", "rust-cli", "rust-tui", "rust-types"]
- service: "compute"
metadata: "metadata/compute_metadata.yaml"
targets: ["rust-sdk", "rust-cli", "rust-tui", "rust-types"]
- service: "container-infrastructure-management"
metadata: "metadata/container-infrastructure-management_metadata.yaml"
targets: ["rust-sdk", "rust-cli", "rust-types"]
- service: "dns"
metadata: "metadata/dns_metadata.yaml"
targets: ["rust-sdk", "rust-cli", "rust-tui", "rust-types"]
- service: "identity"
metadata: "metadata/identity_metadata.yaml"
targets: ["rust-sdk", "rust-cli", "rust-tui", "rust-types"]
- service: "image"
metadata: "metadata/image_metadata.yaml"
targets: ["rust-sdk", "rust-cli", "rust-tui", "rust-types"]
- service: "load-balancer"
metadata: "metadata/load-balancer_metadata.yaml"
targets: ["rust-sdk", "rust-cli", "rust-tui", "rust-types"]
- service: "network"
metadata: "metadata/network_metadata.yaml"
targets: ["rust-sdk", "rust-cli", "rust-tui", "rust-types"]
- service: "object-store"
metadata: "metadata/object-store_metadata.yaml"
targets: ["rust-sdk", "rust-types"]
- service: "placement"
metadata: "metadata/placement_metadata.yaml"
targets: ["rust-sdk", "rust-cli", "rust-types"]
# - service: "shared-file-system"
# metadata: "metadata/shared-file-system_metadata.yaml"
# targets: ["rust-sdk"]
- job:
name: codegenerator-rust-all
parent: codegenerator-rust-base
# It takes a while to optimize and compile the project
timeout: 5400
description: |
Generate Rust SDK/CLI
dependencies:
- name: codegenerator-openapi-block-storage-tips-with-api-ref
soft: true
- name: codegenerator-openapi-compute-tips-with-api-ref
soft: true
- name: codegenerator-openapi-container-infrastructure-management-tips-with-api-ref
soft: true
- name: codegenerator-openapi-dns-tips-with-api-ref
soft: true
- name: codegenerator-openapi-identity-tips-with-api-ref
soft: true
- name: codegenerator-openapi-image-tips-with-api-ref
soft: true
- name: codegenerator-openapi-load-balancing-tips-with-api-ref
soft: true
- name: codegenerator-openapi-network-tips-with-api-ref
soft: true
- name: codegenerator-openapi-object-store-static
soft: true
- name: codegenerator-openapi-placement-tips-with-api-ref
soft: true
- name: codegenerator-openapi-shared-file-system-tips-with-api-ref
soft: true
pre-run: playbooks/openapi/fetch.yaml
run: playbooks/rust/all.yaml
vars:
codegenerator_base_dir: "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}"
openapi_dest: "{{ codegenerator_base_dir }}/wrk/openapi_specs"
patch_path: "{{ ansible_user_dir }}/{{ zuul.change }}.patch"
rust_sdk_git_repo: "https://github.com/gtema/openstack"
rust_project_dir: "{{ ansible_user_dir }}/openstack"
- job:
name: codegenerator-propose-rust-openstack-change
description: |
Propose changes to the Rust OpenStack project with the code newly
generated in this change.
This job is applying the git patch created by the
`codegenerator-rust-all` job. It accesses target repository using SSH
and a public key of the project (`curl
https://zuul.opendev.org/api/tenant/openstack/project-ssh-key/openstack/codegenerator.pub`)
being added as a deploy key in GitHub repository with read/write access.
Pull Request itself is not opened, since it requires additionally API
token what would require hardcoding secret (and GitHub does everything
possible not to have long lasting tokens).
post-review: true
run: playbooks/rust/propose-github.yaml
nodeset:
nodes: []
vars:
rust_sdk_git_repo: "git@github.com:gtema/openstack.git"
rust_project_dir: "{{ ansible_user_dir }}/openstack"
download_artifact_job: "codegenerator-rust-all"