hw4: finalize selenoid and ansible workflow with citrus tests

This commit is contained in:
2026-02-27 01:38:06 +03:00
parent c06e9a89f1
commit 7ddea2e997
36 changed files with 1171 additions and 122 deletions

View File

@@ -0,0 +1,37 @@
- name: Create GGR directory structure
ansible.builtin.file:
path: "{{ ggr_dir }}/{{ item }}"
state: directory
mode: "0755"
loop:
- quota
- nginx
- name: Render GGR quota file
ansible.builtin.template:
src: quota.xml.j2
dest: "{{ ggr_dir }}/quota/{{ ggr_quota_name }}.xml"
mode: "0644"
- name: Render nginx config
ansible.builtin.template:
src: nginx.conf.j2
dest: "{{ ggr_dir }}/nginx/default.conf"
mode: "0644"
- name: Render docker compose for GGR gateway
ansible.builtin.template:
src: docker-compose.ggr.yml.j2
dest: "{{ ggr_dir }}/{{ ggr_compose_file }}"
mode: "0644"
- name: Stop previous GGR gateway stack and remove orphans
ansible.builtin.command:
cmd: docker compose -f {{ ggr_compose_file }} down --remove-orphans
chdir: "{{ ggr_dir }}"
changed_when: false
- name: Start GGR gateway stack
ansible.builtin.command:
cmd: docker compose -f {{ ggr_compose_file }} up -d --force-recreate
chdir: "{{ ggr_dir }}"

View File

@@ -0,0 +1,46 @@
services:
ggr:
image: "{{ ggr_image }}"
container_name: ggr
restart: unless-stopped
ports:
- "{{ ggr_gateway_port }}:4444"
volumes:
- "./quota:/etc/grid-router/quota:ro"
command:
- "-listen"
- ":4444"
- "-quotaDir"
- "/etc/grid-router/quota"
- "-guests-allowed"
ggr-ui:
image: "{{ ggr_ui_image }}"
container_name: ggr-ui
restart: unless-stopped
ports:
- "{{ ggr_ui_public_port }}:8888"
volumes:
- "./quota:/etc/grid-router/quota:ro"
command:
- "-listen"
- ":8888"
- "-quota-dir"
- "/etc/grid-router/quota"
nginx:
image: "{{ nginx_image }}"
container_name: grid-nginx
restart: unless-stopped
depends_on:
- ggr
- ggr-ui
ports:
- "{{ ggr_nginx_public_port }}:80"
volumes:
- "./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro"
networks:
default:
name: "{{ selenoid_container_network }}"
external: true

View File

@@ -0,0 +1,53 @@
server {
listen 80;
server_name _;
location /ws/ {
proxy_pass http://selenoid:4444/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /vnc/ {
proxy_pass http://selenoid:4444/vnc/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /wd/hub/ {
proxy_pass http://ggr:4444/wd/hub/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /ggr/ {
proxy_pass http://ggr-ui:8888/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass http://selenoid-ui:8080/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<qa:browsers xmlns:qa="urn:config.gridrouter.qatools.ru">
<browser name="chrome" defaultVersion="{{ selenoid_chrome_versions | first }}">
{% for version in selenoid_chrome_versions %}
<version number="{{ version }}">
<region name="default">
<host name="{{ ggr_selenoid_host_override | default(ansible_host | default(inventory_hostname)) }}" port="{{ selenoid_host_port }}" count="{{ selenoid_limit }}"/>
</region>
</version>
{% endfor %}
</browser>
<browser name="firefox" defaultVersion="{{ selenoid_firefox_versions | first }}">
{% for version in selenoid_firefox_versions %}
<version number="{{ version }}">
<region name="default">
<host name="{{ ggr_selenoid_host_override | default(ansible_host | default(inventory_hostname)) }}" port="{{ selenoid_host_port }}" count="{{ selenoid_limit }}"/>
</region>
</version>
{% endfor %}
</browser>
</qa:browsers>