Use future impl to wait downloader download #1648
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [ master ] | |
paths-ignore: | |
- '.github/workflows/docker.yml' | |
- '.github/workflows/github-pages.yaml' | |
- 'doc/**' | |
- Dockerfile | |
- docker-compose.yml | |
- log-cfg.yml | |
- README.md | |
pull_request: | |
branches: [ master ] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check Out | |
uses: actions/checkout@v4 | |
- name: Build | |
run: cargo build -vv | |
- name: Run tests | |
run: cargo test --verbose | |
build-exif: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check Out | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Get cache key | |
id: cache_key | |
run: | | |
cd scripts | |
python3 get_cache_key.py exiv2 || exit 1 | |
- name: Cache | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: clib/ | |
key: ${{ runner.os }}-${{ steps.cache_key.outputs.cache_key }} | |
- name: Build thirdparty library | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
cp scripts/build_*.sh -v ./ || exit 1 | |
./build_exiv2.sh || exit 1 | |
- name: Build | |
run: | | |
export CMAKE_PREFIX_PATH=`pwd`/clib | |
cargo build --features exif -vv || exit 1 | |
- name: Test | |
run: | | |
export CMAKE_PREFIX_PATH=`pwd`/clib | |
export "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/clib/lib" | |
cargo test --features exif --verbose -- --show-output || exit 1 | |
build-ugoira: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check Out | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Get cache key | |
id: cache_key | |
run: | | |
cd scripts | |
python3 get_cache_key.py libzip x264 ffmpeg rapidjson || exit 1 | |
- name: Cache | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: clib/ | |
key: ${{ runner.os }}-${{ steps.cache_key.outputs.cache_key }} | |
- name: Setup NASM | |
if: steps.cache.outputs.cache-hit != 'true' | |
uses: ilammy/setup-nasm@v1 | |
- name: Build thirdparty library | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
export PKG_CONFIG_PATH=`pwd`/clib/lib/pkgconfig | |
cp scripts/build_*.sh -v ./ || exit 1 | |
./build_libzip.sh || exit 1 | |
./build_x264.sh || exit 1 | |
./build_ffmpeg.sh || exit 1 | |
./build_rapidjson.sh || exit 1 | |
- name: Build | |
run: | | |
export PKG_CONFIG_PATH=`pwd`/clib/lib/pkgconfig | |
export CMAKE_PREFIX_PATH=`pwd`/clib | |
export "LIBRARY_PATH=$LIBRARY_PATH:`pwd`/clib/lib" | |
export "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/clib/lib" | |
cargo build --features ugoira -vv || exit 1 | |
- name: Test | |
run: | | |
export PKG_CONFIG_PATH=`pwd`/clib/lib/pkgconfig | |
export CMAKE_PREFIX_PATH=`pwd`/clib | |
export "LIBRARY_PATH=$LIBRARY_PATH:`pwd`/clib/lib" | |
export "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/clib/lib" | |
cargo test --features ugoira --verbose -- --show-output || exit 1 | |
build-server: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check Out | |
uses: actions/checkout@v4 | |
- name: Build | |
run: cargo build --features server,db_sqlite -vv | |
- name: Run tests | |
run: cargo test --features server,db_sqlite --verbose -- --show-output | |
build-db-all: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check Out | |
uses: actions/checkout@v4 | |
- name: Build | |
run: cargo build --features db_all -vv | |
- name: Run tests | |
run: cargo test --features db_all --verbose -- --show-output | |
build-all: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check Out | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Get cache key | |
id: cache_key | |
run: | | |
cd scripts | |
python3 get_cache_key.py exiv2 libzip x264 ffmpeg rapidjson || exit 1 | |
- name: Cache | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: clib/ | |
key: ${{ runner.os }}-${{ steps.cache_key.outputs.cache_key }} | |
- name: Setup NASM | |
if: steps.cache.outputs.cache-hit != 'true' | |
uses: ilammy/setup-nasm@v1 | |
- name: Build thirdparty library | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
export PKG_CONFIG_PATH=`pwd`/clib/lib/pkgconfig | |
cp scripts/build_*.sh -v ./ || exit 1 | |
./build_exiv2.sh || exit 1 | |
./build_libzip.sh || exit 1 | |
./build_x264.sh || exit 1 | |
./build_ffmpeg.sh || exit 1 | |
./build_rapidjson.sh || exit 1 | |
- name: Build | |
run: | | |
export PKG_CONFIG_PATH=`pwd`/clib/lib/pkgconfig | |
export CMAKE_PREFIX_PATH=`pwd`/clib | |
export "LIBRARY_PATH=$LIBRARY_PATH:`pwd`/clib/lib" | |
export "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/clib/lib" | |
cargo build --features all -vv || exit 1 | |
- name: Test | |
run: | | |
export PKG_CONFIG_PATH=`pwd`/clib/lib/pkgconfig | |
export CMAKE_PREFIX_PATH=`pwd`/clib | |
export "LIBRARY_PATH=$LIBRARY_PATH:`pwd`/clib/lib" | |
export "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/clib/lib" | |
cargo test --features all --verbose -- --show-output || exit 1 | |
build-win: | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: cmd | |
steps: | |
- name: Check Out | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Get Cache Key | |
id: cache_key | |
run: | | |
cd scripts | |
python get_cache_key.py --prefix=win zlib pkgconf expat exiv2 openssl libzip x264 ffmpeg rapidjson || exit 1 | |
- name: Cache | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: clib/ | |
key: win-${{ steps.cache_key.outputs.cache_key }} | |
- name: Install Ninja | |
run: | | |
python -m pip install --upgrade ninja | |
- name: Install Meson | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
python -m pip install --upgrade meson | |
- name: Setup CL | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Set up NASM | |
if: steps.cache.outputs.cache-hit != 'true' | |
uses: ilammy/setup-nasm@v1 | |
- name: Setup MSYS2 | |
if: steps.cache.outputs.cache-hit != 'true' | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW64 | |
update: true | |
install: >- | |
base-devel | |
- name: Build zlib | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
COPY /Y scripts\build_win_zlib.bat || exit 1 | |
CALL build_win_zlib.bat || exit 1 | |
- name: Build pkgconf | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
COPY /Y scripts\build_win_pkgconf.bat || exit 1 | |
CALL build_win_pkgconf.bat || exit 1 | |
- name: Build expat | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
COPY /Y scripts\build_win_expat.bat || exit 1 | |
CALL build_win_expat.bat || exit 1 | |
- name: Build exiv2 | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
COPY /Y scripts\build_win_exiv2.bat || exit 1 | |
CALL build_win_exiv2.bat || exit 1 | |
- name: Build openssl | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
COPY /Y scripts\build_win_openssl.bat || exit 1 | |
CALL build_win_openssl.bat || exit 1 | |
- name: Build libzip | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
COPY /Y scripts\build_win_libzip.bat || exit 1 | |
CALL build_win_libzip.bat || exit 1 | |
- name: Build x264 | |
if: steps.cache.outputs.cache-hit != 'true' | |
shell: msys2 {0} | |
env: | |
MSYS2_PATH_TYPE: inherit | |
run: | | |
cp scripts/build_win_x264.sh -v ./ || exit 1 | |
./build_win_x264.sh || exit 1 | |
- name: Build ffmpeg | |
if: steps.cache.outputs.cache-hit != 'true' | |
shell: msys2 {0} | |
env: | |
MSYS2_PATH_TYPE: inherit | |
run: | | |
cp scripts/build_win_ffmpeg.sh -v ./ || exit 1 | |
./build_win_ffmpeg.sh || exit 1 | |
- name: Build rapidjson | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
COPY /Y scripts\build_win_rapidjson.bat || exit 1 | |
CALL build_win_rapidjson.bat || exit 1 | |
- name: Download certs | |
run: | | |
COPY /Y scripts\download_certs.bat || exit 1 | |
CALL download_certs.bat || exit 1 | |
- name: Build | |
run: | | |
SET PKG_CONFIG_PATH=%CD%\clib\lib\pkgconfig | |
SET CMAKE_PREFIX_PATH=%CD%\clib | |
SET PATH=%CD%\clib\bin;%PATH% | |
SET OPENSSL_LIB_DIR=%CD%\clib\lib | |
SET OPENSSL_INCLUDE_DIR=%CD%\clib\include | |
cargo build --features all --profile release-with-debug -vv || exit 1 | |
- name: Download lld-rust | |
continue-on-error: true | |
run: | | |
COPY /Y scripts\download_lld-rust.bat || exit 1 | |
CALL download_lld-rust.bat || exit 1 | |
- name: Package files | |
continue-on-error: true | |
run: | | |
SET PATH=%CD%\clib\bin;%PATH% | |
COPY /Y clib\ssl\cert.pem cert.pem | |
python scripts\pack_prog.py -o pixiv_downloader.7z -a cert.pem %CD%/target/release-with-debug/pixiv_downloader.exe %CD%/target/release-with-debug/ugoira.exe || exit 1 | |
python scripts\pack_prog.py -o pixiv_downloader.pdb.7z -p %CD%/target/release-with-debug/pixiv_downloader.exe %CD%/target/release-with-debug/ugoira.exe || exit 1 | |
- name: Upload files | |
continue-on-error: true | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pixiv_downloader | |
path: ./pixiv_downloader.7z | |
- name: Upload pdb files | |
continue-on-error: true | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pixiv_downloader-pdb | |
path: ./pixiv_downloader.pdb.7z | |
- name: Test | |
run: | | |
SET PKG_CONFIG_PATH=%CD%\clib\lib\pkgconfig | |
SET CMAKE_PREFIX_PATH=%CD%\clib | |
SET PATH=%CD%\clib\bin;%PATH% | |
SET OPENSSL_LIB_DIR=%CD%\clib\lib | |
SET OPENSSL_INCLUDE_DIR=%CD%\clib\include | |
cargo test --features all --profile release-with-debug --verbose -- --show-output || exit 1 |