Skip to content

Adds the option to specify env for validate #1464

Adds the option to specify env for validate

Adds the option to specify env for validate #1464

Workflow file for this run

name: build
on:
push:
branches:
- master
pull_request:
branches:
- master
permissions:
contents: read
jobs:
tests:
name: UTs ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
id: go
- name: Test
run: go run build/make.go --test --verbose
lsp-tests:
needs: tests
name: lsp-tests ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
id: go
- name: Set up Nodejs
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
cache-dependency-path: 'build/npm/package-lock.json'
- name: Build
run: |
go run build/make.go --verbose
- name: Clone LSP tests
run: |
git clone https://github.com/getgauge/gauge-lsp-tests
cd gauge-lsp-tests
npm install
- name: Install Gauge (windows)
if: matrix.os == 'windows-latest'
run: |
go run build/make.go --install --verbose
echo "C:\\Program Files\\gauge\\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Install Gauge (linux)
if: matrix.os != 'windows-latest'
run: |
go run build/make.go --install --prefix=/tmp/gauge --verbose
echo "/tmp/gauge/bin" >> $GITHUB_PATH
- name: Add js_simple template
run: |
gauge template js_simple https://github.com/getgauge/template-js-simple/releases/latest/download/js_simple.zip
- name: Prep gauge-js
run: |
git clone https://github.com/getgauge/gauge-js.git
cd gauge-js
npm install
shell: bash
- name: Install gauge-js
run: |
cd gauge-js
npm run installPlugin
- name: Run lsp-tests
run: |
cd gauge-lsp-tests
gauge install
gauge run --tags="!knownIssue & (actions_on_project_load | actions_on_file_edit)" --env=js-wd
functional-tests:
needs: tests
name: FTs ${{ matrix.os }}
runs-on: ${{ matrix.os }}
env:
TAGS: js
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
id: go
- name: Setup java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'
- name: Build
run: go run build/make.go --verbose
- name: Install Gauge (windows)
if: matrix.os == 'windows-latest'
run: |
go run build/make.go --install --verbose
echo "C:\\Program Files\\gauge\\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Install Gauge (linux)
if: matrix.os != 'windows-latest'
run: |
go run build/make.go --install --prefix=/tmp/gauge --verbose
echo "/tmp/gauge/bin" >> $GITHUB_PATH
- name: Add js_simple template
run: |
gauge template js_simple https://github.com/getgauge/template-js-simple/releases/latest/download/js_simple.zip
- name: Clone gauge-java
run: |
git clone https://github.com/getgauge/gauge-java
- name: Install Gauge Java plugin from source
run: |
cd gauge-java
go run build/make.go && go run build/make.go --install
- name: Install Gauge Java maven package locally
run: |
cd gauge-java
mvn -q install -DskipTests -"Dgpg.skip" -D"maven.javadoc.skip=true"
- name: Prep gauge-js
run: |
git clone https://github.com/getgauge/gauge-js.git
cd gauge-js
npm install
shell: bash
- name: Install gauge-js
run: |
cd gauge-js
npm run installPlugin
- name: Prep html-report
run: |
git clone https://github.com/getgauge/html-report
cd html-report
go run build/make.go && go run build/make.go --install
shell: bash
- name: Prep FTs
run: |
git clone https://github.com/getgauge/gauge-tests
cd gauge-tests
gauge install
- name: Install gauge and Run FTs (windows)
if: matrix.os == 'windows-latest'
run: |
cd gauge-tests
.\gradlew.bat clean jsFT
shell: pwsh
- name: Install gauge and Run FTs (linux/osx)
if: matrix.os != 'windows-latest'
run: |
cd gauge-tests
./gradlew clean jsFT
- name: Upload logs
uses: actions/upload-artifact@v4
if: failure()
with:
name: ft-logs-${{ matrix.os }}
path: gauge-tests/logs
build:
name: Build ${{ matrix.os }} artifacts
runs-on: ${{ matrix.os }}
needs: [ functional-tests, lsp-tests ]
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
id: go
- name: Build distro for ${{ matrix.os }}
run: go run build/make.go && go run build/make.go --distro
- name: Upload artifacts for ${{ matrix.os }}
uses: actions/upload-artifact@v4
with:
name: gauge-artifact-for-${{ matrix.os }}
path: deploy
benchmark:
name: Benchmark ${{ matrix.project }} | PARALLEL= ${{ matrix.parallel }}
runs-on: ubuntu-latest
needs: [ functional-tests, lsp-tests ]
if: github.event_name == 'pull_request'
strategy:
matrix:
project: [java_simple, java_maven, java_gradle]
parallel: ['parallel', 'serial', 'multithreaded']
env:
BENCHMARK_OUT_DIR: "../out"
steps:
- uses: actions/checkout@v4
with:
path: gauge
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'gauge/go.mod'
cache-dependency-path: 'gauge/go.sum'
id: go
- name: Setup java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'
- name: Install Gauge
run: |
cd gauge
go run build/make.go && go run build/make.go --install --prefix=/tmp/gauge --verbose
echo "/tmp/gauge/bin" >> $GITHUB_PATH
- name: Install gauge-java
run: gauge install java
- name: Prep benchmark
uses: actions/checkout@v4
with:
repository: getgauge/gauge-benchmarks
path: gauge-benchmarks
ref: master
- name: Run benchmark ${{matrix.project}} | ${{matrix.parallel}}
id: benchmark_run
env:
PARALLEL: ${{ matrix.parallel != 'serial' }}
enable_multithreading: ${{ matrix.parallel == 'multithreaded' }}
run: |
mkdir -p gauge-benchmarks/out
cd gauge-benchmarks/${{ matrix.project }}
./run.sh
- name: Upload benchmark
uses: actions/upload-artifact@v4
with:
name: ${{matrix.project}}_${{matrix.parallel}}
path: gauge-benchmarks/out
post_result_as_artifact:
name: Aggregate and upload benchmark result as artifact.
runs-on: ubuntu-latest
needs: benchmark
if: github.event_name == 'pull_request'
steps:
- name: Prep benchmark
uses: actions/checkout@v4
with:
repository: getgauge/gauge-benchmarks
path: gauge-benchmarks
ref: master
- name: Download benchmark results
uses: actions/download-artifact@v4
with:
path: gauge-benchmarks/out/
- name: Generate Comment String
id: gen_comment_str
run: |
cd gauge-benchmarks
./generate_summary.sh > out/results.md
- name: Publish Benchmark Result
uses: actions/upload-artifact@v4
with:
name: benchmark
path: gauge-benchmarks/out/results.md