hurl/.github/workflows/package.yml

512 lines
17 KiB
YAML
Raw Normal View History

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:
runs-on: ubuntu-20.04
2022-11-03 18:10:38 +03:00
steps:
- name: Checkout repository
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
bin/release/create_tarball.sh
2022-11-03 18:10:38 +03:00
- 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/*
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
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: |
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
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
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: |
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
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
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: |
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
2023-08-21 17:02:43 +03:00
# test-docker-arm64-packages:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repository
# 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: |
# echo "::group::Docker build prerequisistes"
# 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: |
# echo "::group::Install system prerequisistes"
# set -e
# cat /etc/os-release
# apk add sudo bash curl python3 py3-pip
# echo "::endgroup::"
# echo "::group::Install alpine prerequisistes"
# 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
test-docker-x64-packages:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
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
run: |
2023-08-21 17:02:43 +03:00
echo "::group::Docker build prerequisistes"
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")
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 \
--file contrib/docker/Dockerfile \
2023-08-21 17:02:43 +03:00
--platform linux/amd64 \
--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
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
run: |
echo "::group::Install system prerequisistes"
set -e
cat /etc/os-release
apk add sudo bash curl python3 py3-pip
echo "::endgroup::"
echo "::group::Install alpine prerequisistes"
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
path: |
./**/*.log
2022-11-03 18:10:38 +03:00
package-deb-x64:
runs-on: ubuntu-20.04
2022-11-03 18:10:38 +03:00
steps:
- name: Checkout repository
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
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
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/*
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
uses: actions/checkout@v4
2022-11-03 18:10:38 +03:00
with:
ref: ${{ inputs.branch }}
- 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