2022-11-03 18:10:38 +03:00
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 :
2023-02-21 15:53:04 +03:00
runs-on : ubuntu-20.04
2022-11-03 18:10:38 +03:00
steps :
- name : Checkout repository
2023-09-16 23:27:09 +03:00
uses : actions/checkout@v4
2022-11-03 18:10:38 +03:00
with :
ref : ${{ inputs.branch }}
2023-02-23 19:00:54 +03:00
- name : Install Python 3.10
uses : actions/setup-python@v4
with :
python-version : '3.10'
2023-06-13 12:27:02 +03:00
- name : Install python3 venv
run : |
bin/install_python3_venv.sh
export PATH=/tmp/hurl-python3-venv/bin:$PATH
which python3
python3 --version
pip --version
2022-11-03 18:10:38 +03:00
- name : Install
run : |
bin/install_prerequisites_ubuntu.sh
2023-03-12 14:56:43 +03:00
bin/install_rust.sh
2022-11-03 18:10:38 +03:00
- name : Build
run : |
bin/release/release.sh
echo "PATH=:${PWD}/target/release:$PATH" >> "${GITHUB_ENV}"
- 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
2023-09-08 12:39:39 +03:00
bin/release/create_tarball.sh
2022-11-03 18:10:38 +03:00
- name : Archive production artifacts
uses : actions/upload-artifact@v3
with :
name : release-generic-linux-x64-artifacts
path : target/upload/*
2023-10-04 11:52:44 +03:00
test-generic-linux-on-docker-ubuntu-x64 :
needs : package-generic-linux-x64
runs-on : ubuntu-latest
steps :
- name : Checkout repository
uses : actions/checkout@v4
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 : ubuntu
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::Install python3 venv"
bin/install_python3_venv.sh
export PATH=/tmp/hurl-python3-venv/bin:$PATH
which python3
python3 --version
pip --version
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-ubuntu-x64-artifacts
path : |
./**/*.log
2023-08-21 17:02:43 +03:00
test-generic-linux-on-docker-debian-x64 :
2022-11-03 18:10:38 +03:00
needs : package-generic-linux-x64
runs-on : ubuntu-latest
steps :
- name : Checkout repository
2023-09-16 23:27:09 +03:00
uses : actions/checkout@v4
2022-11-03 18:10:38 +03:00
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 : |
2022-12-14 16:28:49 +03:00
set -e
2022-11-03 18:10:38 +03:00
echo "::group::Install system prerequisites"
2023-06-13 12:27:02 +03:00
bin/install_prerequisites_docker_ubuntu.sh
echo "::endgroup::"
echo "::group::Install python3 venv"
bin/install_python3_venv.sh
export PATH=/tmp/hurl-python3-venv/bin:$PATH
which python3
python3 --version
pip --version
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
echo "::group::Environment"
2023-06-13 12:27:02 +03:00
bin/environment.sh
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
echo "::group::Install generic linux package"
2023-06-13 12:27:02 +03:00
bin/release/install_generic_linux_package.sh
2022-11-03 18:10:38 +03:00
export PATH="/tmp/hurl-generic-linux:$PATH"
echo "::endgroup::"
echo "::group::Install tests prerequisites"
2023-06-13 12:27:02 +03:00
bin/test/test_prerequisites.sh
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
echo "::group::Tests"
2023-06-13 12:27:02 +03:00
bin/test/test_integ.sh
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
- name : Archive production artifacts
uses : actions/upload-artifact@v3
if : ${{ always() }}
with :
name : test-generic-linux-package-docker-debian-x64-artifacts
path : |
2023-01-23 10:20:45 +03:00
./**/*.log
2022-12-14 16:28:49 +03:00
2023-08-21 17:02:43 +03:00
test-generic-linux-on-docker-archlinux-x64 :
2022-11-03 18:10:38 +03:00
needs : package-generic-linux-x64
runs-on : ubuntu-latest
steps :
- name : Checkout repository
2023-09-16 23:27:09 +03:00
uses : actions/checkout@v4
2022-11-03 18:10:38 +03:00
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 : |
2022-12-14 16:28:49 +03:00
set -e
2022-11-03 18:10:38 +03:00
echo "::group::Install system prerequisites"
2023-06-13 12:27:02 +03:00
bin/install_prerequisites_docker_archlinux.sh
echo "::endgroup::"
echo "::group::Install python3 venv"
bin/install_python3_venv.sh
export PATH=/tmp/hurl-python3-venv/bin:$PATH
which python3
python3 --version
pip --version
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
echo "::group::Environment"
2023-06-13 12:27:02 +03:00
bin/environment.sh
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
echo "::group::Install generic linux package"
2023-06-13 12:27:02 +03:00
bin/release/install_generic_linux_package.sh
2022-11-03 18:10:38 +03:00
export PATH="/tmp/hurl-generic-linux:$PATH"
echo "::endgroup::"
echo "::group::Install tests prerequisites"
2023-06-13 12:27:02 +03:00
bin/test/test_prerequisites.sh
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
echo "::group::Tests"
2023-06-13 12:27:02 +03:00
bin/test/test_integ.sh
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
- name : Archive production artifacts
uses : actions/upload-artifact@v3
if : ${{ always() }}
with :
name : test-generic-linux-package-docker-archlinux-x64-artifacts
path : |
2023-01-23 10:20:45 +03:00
./**/*.log
2022-12-14 16:28:49 +03:00
2023-08-21 17:02:43 +03:00
test-generic-linux-on-docker-fedora-x64 :
2022-11-03 18:10:38 +03:00
needs : package-generic-linux-x64
runs-on : ubuntu-latest
steps :
- name : Checkout repository
2023-09-16 23:27:09 +03:00
uses : actions/checkout@v4
2022-11-03 18:10:38 +03:00
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 : |
2022-12-14 16:28:49 +03:00
set -e
2022-11-03 18:10:38 +03:00
echo "::group::Install system prerequisites"
2023-06-13 12:27:02 +03:00
bin/install_prerequisites_docker_fedora.sh
echo "::endgroup::"
echo "::group::Install python3 venv"
bin/install_python3_venv.sh
export PATH=/tmp/hurl-python3-venv/bin:$PATH
which python3
python3 --version
pip --version
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
echo "::group::Environment"
2023-06-13 12:27:02 +03:00
bin/environment.sh
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
echo "::group::Install generic linux package"
2023-06-13 12:27:02 +03:00
bin/release/install_generic_linux_package.sh
2022-11-03 18:10:38 +03:00
export PATH="/tmp/hurl-generic-linux:$PATH"
echo "::group::Install tests prerequisites"
echo "::endgroup::"
2023-06-13 12:27:02 +03:00
bin/test/test_prerequisites.sh
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
echo "::group::Tests"
2023-06-13 12:27:02 +03:00
bin/test/test_integ.sh || true # to be fixed => "error in stderr actual: <hurl: /lib64/libcurl.so.4: no version information available (required by hurl)"
2022-11-03 18:10:38 +03:00
echo "::endgroup::"
- name : Archive production artifacts
uses : actions/upload-artifact@v3
if : ${{ always() }}
with :
name : test-generic-linux-package-docker-fedora-x64-artifacts
path : |
2023-01-23 10:20:45 +03:00
./**/*.log
2022-12-14 16:28:49 +03:00
2023-08-21 17:02:43 +03:00
# test-docker-arm64-packages:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repository
2023-09-16 23:27:09 +03:00
# uses: actions/checkout@v4
2023-08-21 17:02:43 +03:00
# with:
# ref: ${{ inputs.branch }}
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v2
# - name: Build docker images
# run: |
2023-09-28 20:39:29 +03:00
# echo "::group::Docker build prerequisites"
2023-08-21 17:02:43 +03:00
# sudo apt-get install -y qemu-user-static
# sudo apt-get install -y binfmt-support
# sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# sudo docker buildx create --name mybuilder
# sudo docker buildx use mybuilder
# sudo docker buildx inspect --bootstrap
# sudo docker buildx ls
# echo "::endgroup::"
# echo "::group::Build docker hurl"
# docker_build_date=$(date "+%Y-%m-%d %H-%M-%S")
# docker_build_tag=$(grep ^version packages/hurl/Cargo.toml | cut --delimiter '=' --field 2 | tr -d '" ')
# sudo docker buildx build \
# --progress=plain \
# --file contrib/docker/Dockerfile \
# --platform linux/arm64 \
# --build-arg docker_build_date="${docker_build_date}" \
# --build-arg docker_build_tag="${docker_build_tag}" \
# --tag local/hurl:arm64 \
# --load .
# sudo docker inspect local/hurl:arm64
# sudo docker run --rm local/hurl:arm64 --version
# echo "::endgroup::"
# - name: Integration tests
# uses: addnab/docker-run-action@v3
# with:
# image: local/hurl:arm64
# options: --volume ${{ github.workspace }}:/work --workdir /work --privileged --env CARGO_TERM_COLOR=always --entrypoint sh --platform=linux/arm64
# run: |
2023-09-28 20:39:29 +03:00
# echo "::group::Install system prerequisites"
2023-08-21 17:02:43 +03:00
# set -e
# cat /etc/os-release
# apk add sudo bash curl python3 py3-pip
# echo "::endgroup::"
2023-09-28 20:39:29 +03:00
# echo "::group::Install alpine prerequisites"
2023-08-21 17:02:43 +03:00
# bash bin/install_prerequisites_alpine.sh
# echo "::endgroup::"
# echo "::group::Install tests prerequisites"
# bash bin/install_python3_venv.sh
# export PATH=/tmp/hurl-python3-venv/bin:$PATH
# which python3
# python3 --version
# pip --version
# bash bin/test/test_prerequisites.sh
# echo "::endgroup::"
# echo "::group::Environment"
# bash bin/environment.sh
# echo "::endgroup::"
# echo "::group::Integration tests"
# bash bin/test/test_integ.sh
# echo "::endgroup::"
# - name: find artifacts
# run: |
# pwd
# find . -name "*.log"
# - name: Archive production artifacts
# uses: actions/upload-artifact@v3
# if: ${{ always() }}
# with:
# name: test-docker-arm64-package-artifacts
# path: |
# ./**/*.log
2023-06-28 16:02:28 +03:00
2023-09-08 12:39:39 +03:00
test-docker-x64-packages :
2023-06-28 16:02:28 +03:00
runs-on : ubuntu-latest
steps :
- name : Checkout repository
2023-09-16 23:27:09 +03:00
uses : actions/checkout@v4
2023-06-28 16:02:28 +03:00
with :
ref : ${{ inputs.branch }}
- name : Set up Docker Buildx
uses : docker/setup-buildx-action@v2
2023-08-21 17:02:43 +03:00
- name : Build docker images
2023-06-28 16:02:28 +03:00
run : |
2023-09-28 20:39:29 +03:00
echo "::group::Docker build prerequisites"
2023-08-21 17:02:43 +03:00
sudo docker buildx create --name mybuilder
sudo docker buildx use mybuilder
sudo docker buildx inspect --bootstrap
sudo docker buildx ls
echo "::endgroup::"
2023-06-28 16:02:28 +03:00
echo "::group::Build docker hurl"
docker_build_date=$(date "+%Y-%m-%d %H-%M-%S")
2023-08-21 17:02:43 +03:00
docker_build_tag=$(grep ^version packages/hurl/Cargo.toml | cut --delimiter '=' --field 2 | tr -d '" ')
sudo docker buildx build \
--progress=plain \
2023-06-28 16:02:28 +03:00
--file contrib/docker/Dockerfile \
2023-08-21 17:02:43 +03:00
--platform linux/amd64 \
2023-06-28 16:02:28 +03:00
--build-arg docker_build_date="${docker_build_date}" \
2023-08-21 17:02:43 +03:00
--build-arg docker_build_tag="${docker_build_tag}" \
--tag local/hurl:amd64 \
--load .
sudo docker inspect local/hurl:amd64
sudo docker run --rm local/hurl:amd64 --version
2023-06-28 16:02:28 +03:00
echo "::endgroup::"
- name : Integration tests
uses : addnab/docker-run-action@v3
with :
2023-08-21 17:02:43 +03:00
image : local/hurl:amd64
options : --volume ${{ github.workspace }}:/work --workdir /work --privileged --env CARGO_TERM_COLOR=always --entrypoint sh --platform=linux/amd64
2023-06-28 16:02:28 +03:00
run : |
2023-09-28 20:39:29 +03:00
echo "::group::Install system prerequisites"
2023-06-28 16:02:28 +03:00
set -e
cat /etc/os-release
apk add sudo bash curl python3 py3-pip
echo "::endgroup::"
2023-09-28 20:39:29 +03:00
echo "::group::Install alpine prerequisites"
2023-06-28 16:02:28 +03:00
bash bin/install_prerequisites_alpine.sh
echo "::endgroup::"
echo "::group::Install tests prerequisites"
bash bin/install_python3_venv.sh
export PATH=/tmp/hurl-python3-venv/bin:$PATH
which python3
python3 --version
pip --version
bash bin/test/test_prerequisites.sh
echo "::endgroup::"
echo "::group::Environment"
bash bin/environment.sh
echo "::endgroup::"
echo "::group::Integration tests"
bash bin/test/test_integ.sh
echo "::endgroup::"
- name : find artifacts
run : |
pwd
find . -name "*.log"
- name : Archive production artifacts
uses : actions/upload-artifact@v3
if : ${{ always() }}
with :
2023-08-21 17:02:43 +03:00
name : test-docker-amd64-package-artifacts
2023-06-28 16:02:28 +03:00
path : |
./**/*.log
2022-11-03 18:10:38 +03:00
package-deb-x64 :
2023-02-21 15:53:04 +03:00
runs-on : ubuntu-20.04
2022-11-03 18:10:38 +03:00
steps :
- name : Checkout repository
2023-09-16 23:27:09 +03:00
uses : actions/checkout@v4
2022-11-03 18:10:38 +03:00
with :
ref : ${{ inputs.branch }}
2023-02-23 19:00:54 +03:00
- name : Install Python 3.10
uses : actions/setup-python@v4
with :
python-version : '3.10'
2023-06-13 12:27:02 +03:00
- name : Install Prerequisites
run : bin/install_prerequisites_ubuntu.sh
- name : Install python3 venv
2022-11-03 18:10:38 +03:00
run : |
2023-06-13 12:27:02 +03:00
bin/install_python3_venv.sh
export PATH=/tmp/hurl-python3-venv/bin:$PATH
which python3
python3 --version
pip --version
- name : Install Rust
run : bin/install_rust.sh
2022-11-03 18:10:38 +03:00
- name : Environment
run : bin/environment.sh
- name : Build
run : |
bin/release/release.sh
echo "PATH=:${PWD}/target/release:$PATH" >> "${GITHUB_ENV}"
- 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
2023-09-16 23:27:09 +03:00
uses : actions/checkout@v4
2022-11-03 18:10:38 +03:00
with :
ref : ${{ inputs.branch }}
2023-04-05 12:07:50 +03:00
- name : Install Prerequisites
run : bin/install_prerequisites_macos.sh
2023-06-13 12:27:02 +03:00
- name : Install python3 venv
run : |
bin/install_python3_venv.sh
export PATH=/tmp/hurl-python3-venv/bin:$PATH
which python3
python3 --version
pip --version
2022-11-03 18:10:38 +03:00
- name : Install Rust
2023-03-12 14:56:43 +03:00
run : bin/install_rust.sh
2023-06-13 12:27:02 +03:00
- name : Environment
run : bin/environment.sh
2022-11-03 18:10:38 +03:00
- name : Build
run : |
bin/release/release.sh
echo "PATH=:${PWD}/target/release:$PATH" >> "${GITHUB_ENV}"
- 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
2023-09-08 12:39:39 +03:00
bin/release/create_tarball.sh
2022-11-03 18:10:38 +03:00
- 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/*
2023-09-16 23:27:09 +03:00
2022-11-03 18:10:38 +03:00
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
2023-09-16 23:27:09 +03:00
uses : actions/checkout@v4
2022-11-03 18:10:38 +03:00
with :
ref : ${{ inputs.branch }}
2023-03-27 12:48:38 +03:00
- name : Manage vcpkg cache
uses : actions/cache@v3
with :
2023-04-14 18:18:57 +03:00
path : C:\vcpkg
2023-04-05 12:07:50 +03:00
key : ${{ runner.os }}-release-windows-x64
2022-11-03 18:10:38 +03:00
- 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
2023-03-03 18:49:48 +03:00
- name : Build
2022-11-03 18:10:38 +03:00
run : |
.\bin\release\release.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 production artifacts
uses : actions/upload-artifact@v3
with :
name : release-windows-x64-artifacts
path : |
.\target\win-package\hurl-*-installer.exe
2023-09-20 16:19:56 +03:00
.\target\win-package\hurl-*.zip