name: release on: [push, pull_request] env: CARGO_TERM_COLOR: always jobs: release-linux: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true profile: minimal - name: Environment run: | uname -a cargo --version - name: set Version run: | echo VERSION=$(grep '^version' packages/hurl/Cargo.toml | cut -f2 -d'"') >> $GITHUB_ENV - name: Build run: | ci/man.sh # Install libcurl dev so that hurl can be built dynamically with libcurl sudo apt update sudo apt install libcurl4-openssl-dev ci/release.sh ci/create_tarball.sh linux ci/deb.sh - name: Archive production artifacts uses: actions/upload-artifact@v2 with: name: release-linux-artifacts path: target/upload/* release-osx: runs-on: macos-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true profile: minimal - name: Environment run: | uname -a cargo --version - name: set Version run: | echo VERSION=$(grep '^version' packages/hurl/Cargo.toml | cut -f2 -d'"') >> $GITHUB_ENV - name: Build run: | ci/man.sh ci/release.sh ci/create_tarball.sh osx - name: Archive production artifacts uses: actions/upload-artifact@v2 with: name: release-osx-artifacts path: target/upload/* release-win64: runs-on: windows-latest env: VCPKGRS_DYNAMIC: 1 steps: - name: Checkout repository uses: actions/checkout@v2 - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true profile: minimal - name: Environment run: | $Properties = 'Caption', 'CSName', 'Version', 'BuildType', 'OSArchitecture' Get-CimInstance Win32_OperatingSystem | Select-Object $Properties | Format-Table -AutoSize cargo --version - name: Build run: | # vcpkg build prequisites (Get-Command vcpkg).Path Expand-Archive -PassThru -Force -LiteralPath .\ci\windows\vcpkg_installed.zip -DestinationPath C:\vcpkg\ Get-ChildItem C:\vcpkg\installed vcpkg integrate install refreshenv # fix known win build bugs (Get-Content .\packages\hurl\src\runner\hurl_file.rs).replace('```', '') | Set-Content .\packages\hurl\src\runner\hurl_file.rs # build release cargo build --release --verbose New-Item -ItemType Directory -Name .\target\win-package Get-ChildItem -Path '.\target\release' -Recurse -Include *.dll -File | Copy-Item -Destination '.\target\win-package' Get-ChildItem -Path '.\target\release' -Recurse -Include hurl*.exe -File | Copy-Item -Destination '.\target\win-package' ((.\target\win-package\hurl.exe --version) -Split " ")[1] > .\target\win-package\version.txt Get-ChildItem .\target\win-package Get-Content .\target\win-package\version.txt - name: Create Zip package and win64 installer run: | # create zip $hurl_package_version = Get-Content .\target\win-package\version.txt cd .\target\win-package Get-ChildItem -Path *.dll, *hurl.exe, *.txt | Compress-Archive -DestinationPath hurl-${hurl_package_version}-win64.zip Get-ChildItem .\*win64.zip cd ..\.. # create installer choco install --confirm --no-progress nsis refreshenv Get-Command Expand-Archive Expand-Archive -Path '.\ci\windows\EnVar_plugin.zip' -DestinationPath 'C:\Program Files (x86)\NSIS' -Verbose cd .\target\win-package makensis.exe /NOCD /V4 ..\..\ci\windows\hurl.nsi - name: Archive production artifacts uses: actions/upload-artifact@v2 with: name: release-win64-artifacts path: | .\target\win-package\hurl-*-installer.exe .\target\win-package\hurl-*-win64.zip benchsuite: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true profile: minimal - name: Environment run: | uname -a cargo --version - name: Build run: | # Install libcurl dev so that hurl can be built dynamically with libcurl sudo apt update sudo apt install libcurl4-openssl-dev ci/release.sh - name: Test Prequisites run: | pip3 install Flask cd bench python3 server.py >server.log 2>&1 & sleep 2 netstat -an | grep 8000 - name: Run Bench Suite run: | export PATH="$PWD/target/release:$PATH" cd bench ./run.sh - name: Archive artifacts uses: actions/upload-artifact@v2 if: ${{ always() }} with: name: tests-bench-artifacts path: | bench/server.log