Skip to content

[cueweb/rest_gateway] Integrate CueWeb and Rest Gateway into GitHub CI/CD Pipeline #2676

[cueweb/rest_gateway] Integrate CueWeb and Rest Gateway into GitHub CI/CD Pipeline

[cueweb/rest_gateway] Integrate CueWeb and Rest Gateway into GitHub CI/CD Pipeline #2676

name: OpenCue Testing Pipeline
on:
push:
branches: [ master, cueweb ]
pull_request:
branches: [ master, cueweb ]
jobs:
test_python_2022:
name: Run Python Unit Tests (CY2022)
runs-on: ubuntu-latest
container: aswf/ci-opencue:2022
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
steps:
- uses: actions/checkout@v3
- name: Run Python Tests
run: ci/run_python_tests.sh --no-gui
test_cuebot_2022:
name: Build Cuebot and Run Unit Tests (CY2022)
runs-on: ubuntu-latest
container:
image: aswf/ci-opencue:2022
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
steps:
- uses: actions/checkout@v3
- name: Build with Gradle
run: |
chown -R aswfuser:aswfgroup .
su -c "cd cuebot && ./gradlew build --stacktrace --info" aswfuser
test_python_2023:
name: Run Python Unit Tests (CY2023)
runs-on: ubuntu-latest
container: aswf/ci-opencue:2023
steps:
- uses: actions/checkout@v3
- name: Run Python Tests
run: ci/run_python_tests.sh
test_cuebot_2023:
name: Build Cuebot and Run Unit Tests (CY2023)
runs-on: ubuntu-latest
container:
image: aswf/ci-opencue:2023
steps:
- uses: actions/checkout@v3
- name: Build with Gradle
run: |
chown -R aswfuser:aswfgroup .
su -c "cd cuebot && ./gradlew build --stacktrace --info" aswfuser
test_python_2024:
name: Run Python Unit Tests (CY2024)
runs-on: ubuntu-latest
container: aswf/ci-opencue:2024
steps:
- uses: actions/checkout@v3
- name: Run Python Tests
run: ci/run_python_tests.sh
test_cuebot_2024:
name: Build Cuebot and Run Unit Tests (CY2024)
runs-on: ubuntu-latest
container:
image: aswf/ci-opencue:2024
steps:
- uses: actions/checkout@v3
- name: Build with Gradle
run: |
chown -R aswfuser:aswfgroup .
su -c "cd cuebot && ./gradlew build --stacktrace --info" aswfuser
test_pyside6:
name: Run CueGUI Tests using PySide6
runs-on: ubuntu-latest
container: almalinux:9
steps:
- uses: actions/checkout@v3
- name: Run CueGUI Tests
run: ci/test_pyside6.sh
lint_python:
name: Lint Python Code
runs-on: ubuntu-latest
container: aswf/ci-opencue:2022
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
steps:
- uses: actions/checkout@v3
- name: Lint Python Code
run: ci/run_python_lint.sh
test_sphinx:
name: Test Documentation Build
runs-on: ubuntu-latest
container:
image: aswf/ci-opencue:2023
steps:
- uses: actions/checkout@v3
- name: Run Sphinx build
run: ci/build_sphinx_docs.sh
test_cueweb:
name: Run CueWeb Tests
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: 21.x
- name: install dependencies for cueweb
run: npm install
working-directory: ./cueweb
- name: Run tests in Docker container
run: npm test
working-directory: ./cueweb
test_rest_gateway:
name: Run Rest Gateway Tests
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: '1.21'
- name: Install Protobuf
run: |
sudo apt-get install -y protobuf-compiler
npm install -g protobuf-compiler
working-directory: ./rest_gateway/opencue_gateway
- name: Install dependencies
run: go mod init opencue_gateway && go mod tidy
working-directory: ./rest_gateway/opencue_gateway
- name: Install Go tools
run: |
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2
go install github.com/golang-jwt/jwt/v5
go install google.golang.org/protobuf/cmd/protoc-gen-go
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
working-directory: ./rest_gateway/opencue_gateway
- name: Copy proto files
run: |
cp -r ./proto /app/proto
- name: Copy gateway files
run: |
cp -r ./rest_gateway/opencue_gateway /app/opencue_gateway
- name: Generate go grpc code
run: |
mkdir -p gen/go && \
protoc -I ../proto/ \
--go_out ./gen/go/ \
--go_opt paths=source_relative \
--go-grpc_out ./gen/go/ \
--go-grpc_opt paths=source_relative \
../proto/*.proto
working-directory: ./rest_gateway/opencue_gateway
- name: Generate grpc-gateway handlers
run: |
protoc -I ../proto/ --grpc-gateway_out ./gen/go \
--grpc-gateway_opt paths=source_relative \
--grpc-gateway_opt generate_unbound_methods=true \
../proto/*.proto
working-directory: ./rest_gateway/opencue_gateway
- name: Run Go Unit Tests
run: go test -v
working-directory: ./rest_gateway/opencue_gateway
# test_rest_gateway:
# name: Run Rest Gateway Tests
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repository
# uses: actions/checkout@v2
# - name: Setup Go
# uses: actions/setup-go@v3
# with:
# go-version: '1.21'
# - name: Initialize go module and install dependencies
# run: |
# cd rest_gateway/opencue_gateway
# go mod init opencue_gateway && go mod tidy
# - name: Install protoc-gen-groc-gateway tool
# run: |
# go install \
# github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest \
# github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest \
# github.com/golang-jwt/jwt/v5@latest \
# google.golang.org/protobuf/cmd/protoc-gen-go@latest \
# google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
# - name: Run rest gateway tests
# run: |
# cd rest_gateway/opencue_gateway
# go test -v ./...
check_changed_files:
name: Check Changed Files
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get Changed Files
id: get_changed_files
uses: tj-actions/changed-files@v41
- name: Check for Version Change
run: ci/check_changed_files.py ${{ steps.get_changed_files.outputs.modified_files }} ${{ steps.get_changed_files.outputs.deleted_files }}
check_migration_files:
name: Check Database Migration Files
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check Migration Files
run: ci/check_database_migrations.py
check_for_version_bump:
name: Check for Version Bump
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get Changed Files
id: get_changed_files
uses: tj-actions/changed-files@v41
- name: Check for Version Change
run: ci/check_version_bump.py ${{ steps.get_changed_files.outputs.all_changed_and_modified_files }}