mirror of
https://git.tukaani.org/xz.git
synced 2024-04-04 12:36:23 +02:00
37947d4a75
Referencing actions by commit SHA in GitHub workflows guarantees you are using an immutable version. Actions referenced by tags and branches are more vulnerable to attacks, such as the tag being moved to a malicious commit or a malicious commit being pushed to the branch. It's important to make sure the SHA's are from the original repositories and not forks. For reference: https://github.com/msys2/setup-msys2/releases/tag/v2.20.127b3aa77f6
https://github.com/actions/checkout/releases/tag/v4.1.08ade135a41
https://github.com/actions/upload-artifact/releases/tag/v3.1.3a8a3f3ad30
Signed-off-by: Gabriela Gutierrez <gabigutierrez@google.com>
125 lines
5 KiB
YAML
125 lines
5 KiB
YAML
#############################################################################
|
|
#
|
|
# Author: Jia Tan
|
|
#
|
|
# This file has been put into the public domain.
|
|
# You can do whatever you want with this file.
|
|
#
|
|
#############################################################################
|
|
|
|
name: Windows-CI
|
|
|
|
# Only run the Windows CI manually since it takes much longer than the others.
|
|
on: workflow_dispatch
|
|
|
|
jobs:
|
|
POSIX:
|
|
strategy:
|
|
matrix:
|
|
# Test different environments since the code may change between
|
|
# them and we want to ensure that we support all potential users.
|
|
# clang64 builds are currently broken when building static libraries
|
|
# due to a bug in ldd search path:
|
|
# https://github.com/llvm/llvm-project/issues/67779
|
|
# TODO - re-enable clang64 when this is resolved.
|
|
msys2_env: [mingw64, mingw32, ucrt64, msys]
|
|
build_system: [autotools, cmake]
|
|
|
|
# Set the shell to be msys2 as a default to avoid setting it for
|
|
# every individual run command.
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
|
|
runs-on: windows-latest
|
|
|
|
steps:
|
|
#####################
|
|
# Setup Environment #
|
|
#####################
|
|
|
|
# Rely on the msys2 GitHub Action to set up the msys2 environment.
|
|
- name: Setup MSYS2
|
|
uses: msys2/setup-msys2@27b3aa77f672cb6b3054121cfd80c3d22ceebb1d #v2.20.1
|
|
with:
|
|
msystem: ${{ matrix.msys2_env }}
|
|
update: true
|
|
install: pactoys make
|
|
|
|
- name: Checkout code
|
|
# Need to explicitly set the shell here since we set the default
|
|
# shell as msys2 earlier. This avoids an extra msys2 dependency on
|
|
# git.
|
|
shell: powershell
|
|
# Avoid Windows line endings. Otherwise test_scripts.sh will fail
|
|
# because the expected output is stored in the test framework as a
|
|
# text file and will not match the output from xzgrep.
|
|
run: git config --global core.autocrlf false
|
|
|
|
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 #v4.1.0
|
|
|
|
|
|
########################
|
|
# Install Dependencies #
|
|
########################
|
|
|
|
# The pacman repository has a different naming scheme for default
|
|
# msys packages than the others. The pacboy tool allows installing
|
|
# the packages possible in matrix setup without a burdensome amount
|
|
# of ifs.
|
|
- name: Install Dependencies
|
|
if: ${{ matrix.msys2_env == 'msys' && matrix.build_system == 'autotools' }}
|
|
run: pacman --noconfirm -S --needed autotools base-devel doxygen gettext-devel gcc
|
|
|
|
- name: Install Dependencies
|
|
if: ${{ matrix.msys2_env != 'msys' && matrix.build_system == 'autotools' }}
|
|
run: pacboy --noconfirm -S --needed autotools:p toolchain:p doxygen:p
|
|
|
|
- name: Install Dependencies
|
|
if: ${{ matrix.msys2_env == 'msys' && matrix.build_system == 'cmake' }}
|
|
run: pacman --noconfirm -S --needed cmake base-devel gcc
|
|
|
|
- name: Install Dependencies
|
|
if: ${{ matrix.msys2_env != 'msys' && matrix.build_system == 'cmake' }}
|
|
run: pacboy --noconfirm -S --needed cmake:p toolchain:p
|
|
|
|
##################
|
|
# Build and Test #
|
|
##################
|
|
|
|
- name: Build with full features
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -p build
|
|
- name: Test with full features
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -p test -n full_features
|
|
|
|
- name: Build without threads
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -d threads,shared -p build
|
|
- name: Test without threads
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -d threads,shared -p test -n no_threads
|
|
|
|
- name: Build without encoders
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -d encoders,shared -p build
|
|
- name: Test without encoders
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -d encoders,shared -p test -n no_encoders
|
|
|
|
- name: Build without decoders
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -d decoders,shared -p build
|
|
- name: Test without decoders
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -d decoders,shared -p test -n no_decoders
|
|
|
|
- name: Build with only crc32 check
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -c crc32 -d shared,nls -p build
|
|
- name: Test with only crc32 check
|
|
run: ./build-aux/ci_build.sh -a "--no-po4a" -b ${{ matrix.build_system }} -c crc32 -d shared,nls -p test -n crc32_only
|
|
|
|
|
|
###############
|
|
# Upload Logs #
|
|
###############
|
|
|
|
# Upload the test logs as artifacts if any step has failed.
|
|
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 #v3.1.3
|
|
if: ${{ failure() }}
|
|
with:
|
|
name: ${{ matrix.msys2_env }} ${{ matrix.build_system }} Test Logs
|
|
path: build-aux/artifacts
|