name: package on: pull_request: workflow_dispatch: workflow_call: inputs: branch: description: "ref branch for this workflow" default: "master" required: true type: string env: CARGO_TERM_COLOR: always jobs: package-generic-linux-x64: runs-on: ubuntu-20.04 steps: - name: Checkout repository uses: actions/checkout@v3 with: ref: ${{ inputs.branch }} - name: Install Python 3.10 uses: actions/setup-python@v4 with: python-version: '3.10' - name: Install run: | bin/install_prerequisites_ubuntu.sh bin/install_rust_latest.sh - name: Build run: | bin/release/release.sh echo "PATH=:${PWD}/target/release:$PATH" >> "${GITHUB_ENV}" - name: Test integ run: | bin/test/test_prerequisites.sh bin/test/test_integ.sh - name: Get version run: | VERSION=$(bin/release/get_version.sh) echo "VERSION=${VERSION}" | tee -a "${GITHUB_ENV}" - name: Create generic linux package run: | bin/release/man.sh bin/release/create_tarball.sh linux - name: Install package run: | bin/release/install_generic_linux_package.sh echo "PATH=/tmp/hurl-generic-linux:$PATH" >> "${GITHUB_ENV}" - name: Test integ run: | bin/test/test_prerequisites.sh bin/test/test_integ.sh - name: Archive production artifacts uses: actions/upload-artifact@v3 with: name: release-generic-linux-x64-artifacts path: target/upload/* test-generic-linux-docker-debian-x64: needs: package-generic-linux-x64 runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: ref: ${{ inputs.branch }} - name: Retrieve release-generic-linux-x64-artifacts uses: actions/download-artifact@v3 with: name: release-generic-linux-x64-artifacts path: target/upload - name: Install package and tests integ uses: addnab/docker-run-action@v3 with: image: debian options: --volume ${{ github.workspace }}:/work --workdir /work --privileged run: | set -e echo "::group::Install system prerequisites" bin/install_prerequisites_docker_ubuntu.sh echo "::endgroup::" echo "::group::Environment" bin/environment.sh echo "::endgroup::" echo "::group::Install generic linux package" bin/release/install_generic_linux_package.sh export PATH="/tmp/hurl-generic-linux:$PATH" echo "::endgroup::" echo "::group::Install tests prerequisites" bin/test/test_prerequisites.sh echo "::endgroup::" echo "::group::Tests" bin/test/test_integ.sh echo "::endgroup::" - name: Archive production artifacts uses: actions/upload-artifact@v3 if: ${{ always() }} with: name: test-generic-linux-package-docker-debian-x64-artifacts path: | ./**/*.log test-generic-linux-docker-archlinux-x64: needs: package-generic-linux-x64 runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: ref: ${{ inputs.branch }} - name: Retrieve release-generic-linux-x64-artifacts uses: actions/download-artifact@v3 with: name: release-generic-linux-x64-artifacts path: target/upload - name: Install package and tests integ uses: addnab/docker-run-action@v3 with: image: archlinux options: --volume ${{ github.workspace }}:/work --workdir /work --privileged run: | set -e echo "::group::Install system prerequisites" bin/install_prerequisites_docker_archlinux.sh echo "::endgroup::" echo "::group::Environment" bin/environment.sh echo "::endgroup::" echo "::group::Install generic linux package" bin/release/install_generic_linux_package.sh export PATH="/tmp/hurl-generic-linux:$PATH" echo "::endgroup::" echo "::group::Install tests prerequisites" bin/test/test_prerequisites.sh echo "::endgroup::" echo "::group::Tests" bin/test/test_integ.sh echo "::endgroup::" - name: Archive production artifacts uses: actions/upload-artifact@v3 if: ${{ always() }} with: name: test-generic-linux-package-docker-archlinux-x64-artifacts path: | ./**/*.log test-generic-linux-docker-fedora-x64: needs: package-generic-linux-x64 runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: ref: ${{ inputs.branch }} - name: Retrieve release-generic-linux-x64-artifacts uses: actions/download-artifact@v3 with: name: release-generic-linux-x64-artifacts path: target/upload - name: Install package and tests integ uses: addnab/docker-run-action@v3 with: image: fedora options: --volume ${{ github.workspace }}:/work --workdir /work --privileged run: | set -e echo "::group::Install system prerequisites" bin/install_prerequisites_docker_fedora.sh echo "::endgroup::" echo "::group::Environment" bin/environment.sh echo "::endgroup::" echo "::group::Install generic linux package" bin/release/install_generic_linux_package.sh export PATH="/tmp/hurl-generic-linux:$PATH" echo "::group::Install tests prerequisites" echo "::endgroup::" bin/test/test_prerequisites.sh echo "::endgroup::" echo "::group::Tests" bin/test/test_integ.sh || true # to be fixed => "error in stderr actual: > "${GITHUB_ENV}" - name: Test integ run: | bin/test/test_prerequisites.sh bin/test/test_integ.sh - name: Get version run: | VERSION=$(bin/release/get_version.sh) echo "VERSION=${VERSION}" | tee -a "${GITHUB_ENV}" - name: Create deb package run: | bin/release/man.sh bin/release/create_deb_package.sh - name: Install package run: | bin/release/install_deb_package.sh echo "PATH=/tmp/hurl-deb-package/usr/bin:$PATH" >> "${GITHUB_ENV}" - name: Test integ run: | bin/test/test_prerequisites.sh bin/test/test_integ.sh - name: Archive production artifacts uses: actions/upload-artifact@v3 with: name: release-deb-x64-artifacts path: target/upload/* package-macos-x64: runs-on: macos-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: ref: ${{ inputs.branch }} - name: Install Rust run: bin/install_rust_latest.sh - name: Build run: | brew install pkg-config bin/release/release.sh echo "PATH=:${PWD}/target/release:$PATH" >> "${GITHUB_ENV}" - name: Test integ run: | bin/test/test_prerequisites.sh bin/test/test_integ.sh - name: Get version run: | VERSION=$(bin/release/get_version.sh) echo "VERSION=${VERSION}" | tee -a "${GITHUB_ENV}" - name: Create generic macos package run: | bin/release/man.sh bin/release/create_tarball.sh macos - name: Install package run: | bin/release/install_generic_macos_package.sh echo "PATH=/tmp/hurl-generic-macos:$PATH" >> "${GITHUB_ENV}" - name: Test integ run: | bin/test/test_prerequisites.sh bin/test/test_integ.sh - name: Archive production artifacts uses: actions/upload-artifact@v3 with: name: release-macos-x64-artifacts path: target/upload/* package-windows-x64: runs-on: windows-latest env: VCPKGRS_DYNAMIC: 1 steps: - name: Set git to use LF run: | git config --global core.autocrlf false git config --global core.eol lf - name: Checkout repository uses: actions/checkout@v3 with: ref: ${{ inputs.branch }} # - name: Cache # uses: actions/cache@v3 # with: # path: C:\vcpkg\installed # key: ${{ runner.os }}-release-windows-x64-${{ github.sha }} # restore-keys: ${{ runner.os }}-release-windows-x64- - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true profile: minimal - name: Environment run: .\bin\environment.ps1 - name: Install prerequisites run: .\bin\install_prerequisites_windows.ps1 - name: Build and test integ run: | .\bin\release\release.ps1 .\bin\test\test_prerequisites.ps1 .\bin\test\test_integ.ps1 - name: Create windows64 Zip package run: .\bin\release\create_windows64_zip_package.ps1 - name: Install win64 zip and test integ run: | .\bin\release\install_windows64_zip_package.ps1 .\bin\test\test_prerequisites.ps1 .\bin\test\test_integ.ps1 - name: Create windows64 installer run: .\bin\release\create_windows64_installer.ps1 - name: Install win64 installer and test integ run: | .\bin\release\install_windows64_installer.ps1 .\bin\test\test_prerequisites.ps1 .\bin\test\test_integ.ps1 - name: Archive logs artifacts uses: actions/upload-artifact@v3 with: name: log-windows-x64-artifacts path: | .\**\*.log - name: Archive production artifacts uses: actions/upload-artifact@v3 with: name: release-windows-x64-artifacts path: | .\target\win-package\hurl-*-installer.exe .\target\win-package\hurl-*-win64.zip