Setup Testing #92
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test Suite | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
env: | |
GOPRIVATE: github.com/getlantern | |
jobs: | |
test-suite: | |
runs-on: ${{ matrix.os }} | |
# runs-on: ubuntu-latest-16-cores | |
strategy: | |
matrix: | |
os: [ubuntu-latest-16-cores, windows-latest] | |
concurrency: | |
group: test-ci-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
lfs: true | |
- name: Pull LFS objects | |
run: git lfs pull | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: "go.mod" | |
- name: Granting private modules access | |
run: git config --global url."https://${{ secrets.GH_TOKEN }}:[email protected]/".insteadOf "https://github.com/" | |
- name: GCloud Auth | |
uses: google-github-actions/auth@v2 | |
with: | |
credentials_json: ${{ secrets.GCP_CREDENTIALS }} | |
- name: 'Set up Cloud SDK' | |
uses: google-github-actions/setup-gcloud@v2 | |
- name: Setup protoc | |
uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install latest protoc-gen-go | |
run: go install github.com/golang/protobuf/protoc-gen-go@latest | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: 17 | |
cache: 'gradle' | |
- name: Install Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
channel: "stable" | |
- name: Activate dart plugins | |
run: | | |
dart pub global activate protoc_plugin | |
dart pub global activate patrol_cli | |
- name: Install dependencies | |
run: flutter pub get | |
- name: Generate app.env | |
env: | |
ANDROID_INTERSTITIAL_AD_ID: ${{ secrets.INTERSTITIAL_AD_UNIT_ID }} | |
IOS_INTERSTITIAL_AD_ID: ${{ secrets.INTERSTITIAL_AD_UNIT_ID_IOS }} | |
TAPSELL_VIDEO_INTERSTITIAL_ZONE_ID: ${{ secrets.TAPSELL_VIDEO_INTERSTITIAL_ZONE_ID }} | |
TAPSELL_INTERSTITIAL_ZONE_ID: ${{ secrets.TAPSELL_INTERSTITIAL_ZONE_ID }} | |
run: | | |
touch app.env | |
echo "Android_interstitialAd=$ANDROID_INTERSTITIAL_AD_ID" > app.env | |
echo "IOS_interstitialAd=$IOS_INTERSTITIAL_AD_ID" >> app.env | |
echo "VideoInterstitialZoneId=$TAPSELL_VIDEO_INTERSTITIAL_ZONE_ID" >> app.env | |
echo "InterstitialZoneId=$TAPSELL_INTERSTITIAL_ZONE_ID" >> app.env | |
- name: Setup Xcode | |
uses: maxim-lobanov/setup-xcode@v1 | |
if: runner.os == 'macOS' | |
with: | |
xcode-version: latest-stable | |
- name: Install Linux dependencies | |
if: runner.os == 'linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y network-manager dbus-x11 | |
sudo apt-get install -y libwebkit2gtk-4.1-dev | |
sudo apt-get install -y libunwind-dev libstdc++-12-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-d cmake | |
sudo apt-get install -y libgtk-3-0 libblkid1 liblzma5 | |
sudo apt-get install -y libpcap-dev libgtk-3-dev libayatana-appindicator3-dev ruby ruby-dev && sudo gem install bundler -v 2.2.26 | |
- name: Install the ninja build tool | |
if: runner.os == 'linux' | |
uses: seanmiddleditch/gha-setup-ninja@master | |
- name: Install WebView2 Runtime | |
if: matrix.platform == 'windows' | |
shell: pwsh | |
run: | | |
Invoke-WebRequest -Uri "https://go.microsoft.com/fwlink/p/?LinkId=2124703" -OutFile "MicrosoftEdgeWebView2Setup.exe" | |
Start-Process -FilePath ".\MicrosoftEdgeWebView2Setup.exe" -ArgumentList "/silent", "/install" -Wait | |
- name: Set up MinGW | |
if: matrix.platform == 'windows' | |
run: choco install mingw -y | |
- name: Build Libraries | |
run: | | |
make android ANDROID_ARCH=all | |
echo "Building macos libraries" | |
if [[ "$RUNNER_OS" == "macOS" ]]; then | |
make macos | |
elif [[ "$RUNNER_OS" == "Linux" ]]; then | |
make linux | |
elif [[ "$RUNNER_OS" == "Windows" ]]; then | |
make windows | |
fi | |
make ffigen | |
- name: Running workflow test for windows | |
run: make windowsDesktopTest | |
if: runner.os == 'windows' | |
timeout-minutes: 60 | |
- name: Running widget tests | |
run: make widget-tests | |
- name: Running workflow test for android on Firebase test labs | |
run: make ci-android-test | |
- name: Running workflow test for macos | |
run: make maOSWorkflowTest | |
if: runner.os == 'macOS' | |
timeout-minutes: 60 | |
- name: Running workflow test for linux | |
uses: coactions/setup-xvfb@v1 | |
if: runner.os == 'linux' | |
timeout-minutes: 60 | |
with: | |
run: | | |
sudo systemctl start dbus | |
sudo systemctl start NetworkManager | |
make linuxDesktopTest | |
# - name: Running workflow test for windows | |
# run: make windowsDesktopTest | |
# if: runner.os == 'windows' | |
# timeout-minutes: 60 |