mirror of
https://github.com/SeleniumHQ/selenium.git
synced 2026-03-27 23:21:18 +00:00
* automatically save screenshot and page source in case of test failure * show a blank page with a test name before every test just in case, it might help with debugging of flaky tests.
277 lines
9.1 KiB
YAML
277 lines
9.1 KiB
YAML
name: CI - Rust
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
release:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
branch:
|
|
required: false
|
|
type: string
|
|
default: trunk
|
|
secrets:
|
|
SELENIUM_CI_TOKEN:
|
|
required: true
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
build:
|
|
name: Build
|
|
uses: ./.github/workflows/bazel.yml
|
|
with:
|
|
name: Build
|
|
run: bazel build //rust:selenium-manager
|
|
|
|
tests:
|
|
name: Tests
|
|
needs: build
|
|
uses: ./.github/workflows/bazel.yml
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: macos
|
|
- os: ubuntu
|
|
- os: windows
|
|
with:
|
|
name: Tests (${{ matrix.os }})
|
|
os: ${{ matrix.os }}
|
|
run: bazel test --test_env=RUST_BACKTRACE=full --test_env=RUST_TEST_NOCAPTURE=1 --flaky_test_attempts=3 //rust/...
|
|
|
|
windows-stable:
|
|
name: "Windows Stable"
|
|
runs-on: windows-latest
|
|
needs: tests
|
|
if: github.event_name != 'schedule'
|
|
env:
|
|
RUSTFLAGS: '-Ctarget-feature=+crt-static'
|
|
steps:
|
|
- name: "Checkout project"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.branch }}
|
|
- name: "Update Rust"
|
|
run: |
|
|
rustup update
|
|
rustup toolchain install stable-i686-pc-windows-msvc
|
|
rustup default stable-i686-pc-windows-msvc
|
|
rustc -vV
|
|
- name: "Build release binary"
|
|
run: cargo build --release
|
|
working-directory: rust
|
|
- name: "Rename binary"
|
|
run: mv rust/target/release/selenium-manager.exe selenium-manager-windows.exe
|
|
- name: "Upload release binary"
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: selenium-manager-windows
|
|
path: selenium-manager-windows.exe
|
|
retention-days: 6
|
|
|
|
windows-debug:
|
|
name: "Windows Debug"
|
|
runs-on: windows-latest
|
|
needs: tests
|
|
if: github.event_name != 'schedule'
|
|
env:
|
|
RUSTFLAGS: '-Ctarget-feature=+crt-static'
|
|
steps:
|
|
- name: "Checkout project"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.branch }}
|
|
- name: "Update Rust"
|
|
run: |
|
|
rustup update
|
|
rustup toolchain install stable-i686-pc-windows-msvc
|
|
rustup default stable-i686-pc-windows-msvc
|
|
rustc -vV
|
|
- name: "Build release binary"
|
|
run: cargo build --profile dev
|
|
working-directory: rust
|
|
- name: "Rename binary"
|
|
run: mv rust/target/debug/selenium-manager.exe selenium-manager-windows-debug.exe
|
|
- name: "Upload release binary"
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: selenium-manager-windows-debug
|
|
path: selenium-manager-windows-debug.exe
|
|
retention-days: 6
|
|
|
|
linux-stable:
|
|
name: "Linux Stable"
|
|
runs-on: ubuntu-latest
|
|
needs: tests
|
|
if: github.event_name != 'schedule'
|
|
steps:
|
|
- name: "Checkout project"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.branch }}
|
|
- name: "Update Rust"
|
|
run: |
|
|
rustup update
|
|
rustc -vV
|
|
- name: "Install cross"
|
|
run: |
|
|
cargo install cross --git https://github.com/cross-rs/cross
|
|
- name: "Build release binary"
|
|
run: cross build --target x86_64-unknown-linux-musl --release
|
|
working-directory: rust
|
|
- name: "Rename binary"
|
|
run: mv rust/target/x86_64-unknown-linux-musl/release/selenium-manager selenium-manager-linux
|
|
- name: "Upload release binary"
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: selenium-manager-linux
|
|
path: selenium-manager-linux
|
|
retention-days: 6
|
|
|
|
linux-debug:
|
|
name: "Linux Debug"
|
|
runs-on: ubuntu-latest
|
|
needs: tests
|
|
if: github.event_name != 'schedule'
|
|
steps:
|
|
- name: "Checkout project"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.branch }}
|
|
- name: "Update Rust"
|
|
run: |
|
|
rustup update
|
|
rustc -vV
|
|
- name: "Install cross"
|
|
run: |
|
|
cargo install cross --git https://github.com/cross-rs/cross
|
|
- name: "Build release binary"
|
|
run: |
|
|
cross build --target x86_64-unknown-linux-musl --profile dev
|
|
cd target/x86_64-unknown-linux-musl/debug
|
|
tar -cvf ../../../../selenium-manager-linux-debug.tar selenium-manager
|
|
working-directory: rust
|
|
- name: "Upload release binary"
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: selenium-manager-linux-debug
|
|
path: selenium-manager-linux-debug.tar
|
|
retention-days: 6
|
|
|
|
macos-stable:
|
|
name: "MacOS Stable"
|
|
runs-on: macos-latest
|
|
needs: tests
|
|
if: github.event_name != 'schedule'
|
|
env:
|
|
RUSTFLAGS: '-Ctarget-feature=+crt-static'
|
|
steps:
|
|
- name: "Checkout project"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.branch }}
|
|
- name: "Update Rust"
|
|
run: |
|
|
rustup update
|
|
rustup target add x86_64-apple-darwin
|
|
rustup target add aarch64-apple-darwin
|
|
rustc -vV
|
|
- name: "Build release binary"
|
|
run: |
|
|
cargo build --target x86_64-apple-darwin --release
|
|
cargo build --target aarch64-apple-darwin --release
|
|
lipo -create -output target/selenium-manager-macos \
|
|
target/aarch64-apple-darwin/release/selenium-manager \
|
|
target/x86_64-apple-darwin/release/selenium-manager
|
|
working-directory: rust
|
|
- name: "Upload release binary"
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: selenium-manager-macos
|
|
path: rust/target/selenium-manager-macos
|
|
retention-days: 6
|
|
|
|
macos-debug:
|
|
name: "MacOS Debug"
|
|
runs-on: macos-latest
|
|
needs: tests
|
|
if: github.event_name != 'schedule'
|
|
env:
|
|
RUSTFLAGS: '-Ctarget-feature=+crt-static'
|
|
steps:
|
|
- name: "Checkout project"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.branch }}
|
|
- name: "Update Rust"
|
|
run: |
|
|
rustup update
|
|
rustup target add x86_64-apple-darwin
|
|
rustup target add aarch64-apple-darwin
|
|
rustc -vV
|
|
- name: "Build release binary"
|
|
run: |
|
|
cargo build --target x86_64-apple-darwin --profile dev
|
|
cargo build --target aarch64-apple-darwin --profile dev
|
|
lipo -create -output target/selenium-manager \
|
|
target/aarch64-apple-darwin/debug/selenium-manager \
|
|
target/x86_64-apple-darwin/debug/selenium-manager
|
|
cd target
|
|
tar -cvf ../../selenium-manager-macos-debug.tar selenium-manager
|
|
working-directory: rust
|
|
- name: "Upload release binary"
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: selenium-manager-macos-debug
|
|
path: selenium-manager-macos-debug.tar
|
|
retention-days: 6
|
|
|
|
release:
|
|
name: "Release Binaries"
|
|
runs-on: ubuntu-latest
|
|
needs: [ macos-stable, linux-stable, windows-stable, macos-debug, linux-debug, windows-debug ]
|
|
if: github.event_name != 'schedule' && github.event.repository.fork == false && (github.ref == 'refs/heads/trunk' || inputs.release)
|
|
steps:
|
|
- name: "Checkout selenium_manager_artifacts"
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.SELENIUM_CI_TOKEN }}
|
|
repository: SeleniumHQ/selenium_manager_artifacts
|
|
- name: "Download Artifacts"
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
path: artifacts
|
|
- name: "Prepare and Commit"
|
|
run: |
|
|
linux_sha=$(shasum -a 256 artifacts/selenium-manager-linux/selenium-manager-linux | awk '{print $1}')
|
|
macos_sha=$(shasum -a 256 artifacts/selenium-manager-macos/selenium-manager-macos | awk '{print $1}')
|
|
windows_sha=$(shasum -a 256 artifacts/selenium-manager-windows/selenium-manager-windows.exe | awk '{print $1}')
|
|
echo "{\"macos\": \"$macos_sha\", \"windows\": \"$windows_sha\", \"linux\": \"$linux_sha\"}" > latest.json
|
|
git config --local user.email "selenium-ci@users.noreply.github.com"
|
|
git config --local user.name "Selenium CI Bot"
|
|
git add latest.json
|
|
git commit -m "Update hash values for latest binaries"
|
|
short_hash=$(git rev-parse --short HEAD)
|
|
echo "TAG_NAME=selenium-manager-$short_hash" >> "$GITHUB_ENV"
|
|
git tag "selenium-manager-$short_hash"
|
|
git push && git push --tags
|
|
- name: "Release"
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
token: ${{ secrets.SELENIUM_CI_TOKEN }}
|
|
repository: SeleniumHQ/selenium_manager_artifacts
|
|
tag_name: ${{ env.TAG_NAME }}
|
|
draft: false
|
|
prerelease: false
|
|
files: |
|
|
artifacts/selenium-manager-linux/selenium-manager-linux
|
|
artifacts/selenium-manager-macos/selenium-manager-macos
|
|
artifacts/selenium-manager-windows/selenium-manager-windows.exe
|
|
artifacts/selenium-manager-linux-debug/selenium-manager-linux-debug.tar
|
|
artifacts/selenium-manager-macos-debug/selenium-manager-macos-debug.tar
|
|
artifacts/selenium-manager-windows-debug/selenium-manager-windows-debug.exe
|