Create Release Draft #1
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: Create Release Draft | |
# git push origin 0.5.3 to push local to remote | |
on: | |
workflow_dispatch: | |
push: | |
tags: ["v[0-9]+.[0-9]+.[0-9]+*"] | |
jobs: | |
arm64: | |
# cross compile | |
name: Build arm64 | |
runs-on: ubuntu-latest | |
# after every step is finished,exporting to PATH will be clear,so in next step ,need re-export | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v2 | |
- name: Set up cargo | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: Add cargo taget arm64 | |
run: rustup target add aarch64-unknown-linux-musl | |
#with musl c | |
- uses: robinraju/[email protected] | |
with: | |
repository: "dobefore/musl-cross" | |
tag: "0.1.0" | |
fileName: "aarch64-linux-musl-cross.tgz" | |
- name: Copy musl-cross to home | |
run: cp aarch64-linux-musl-cross.tgz $HOME | |
# - name: Download cross-compile toolchain muslc | |
# run: wget -P $HOME https://musl.cc/aarch64-linux-musl-cross.tgz | |
- name: unpack cross-compile toolchains musl | |
run: tar -zxvf $HOME/aarch64-linux-musl-cross.tgz -C $HOME | |
- name: Download and unpack lib openssl | |
run: | | |
wget --no-check-certificate https://www.openssl.org/source/old/1.1.1/openssl-1.1.1f.tar.gz | |
tar -zxvf openssl-1.1.1f.tar.gz -C . | |
ls . | |
- name: Compile openssl | |
run: | | |
export PATH="$HOME/aarch64-linux-musl-cross/bin:$PATH" | |
export MACHINE=aarch64 | |
export ARCH=arm | |
export CC=aarch64-linux-musl-gcc | |
mkdir -p $HOME/openssl | |
cd openssl-1.1.1f | |
./config shared --prefix=$HOME/bilibili_comics_downloader/openssl && make | |
make install | |
cd .. | |
# build static-linked binary for arm64 (also suitable for aarch64) | |
- name: Build | |
run: | | |
export OPENSSL_LIB_DIR=$HOME/bilibili_comics_downloader/openssl/lib | |
export OPENSSL_INCLUDE_DIR=$HOME/bilibili_comics_downloader/openssl/include | |
export OPENSSL_STATIC=true | |
export PATH="$HOME/aarch64-linux-musl-cross/bin:$PATH" | |
cargo build --target aarch64-unknown-linux-musl --release | |
- name: Strip binaries (bcdown) | |
run: $HOME/aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip target/aarch64-unknown-linux-musl/release/bcdown | |
- name: Create output directory | |
run: mkdir output | |
- name: Copy files to output | |
run: | | |
cp target/aarch64-unknown-linux-musl/release/bcdown output/ | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: arm64 | |
path: output/* | |
linux: | |
name: Build Linux | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v2 | |
- name: Set up cargo | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: Build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --release | |
- name: Strip binaries (bcdown) | |
run: strip target/release/bcdown | |
- name: Create output directory | |
run: mkdir output | |
- name: Copy files to output | |
run: | | |
cp target/release/bcdown output/ | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: linux | |
path: output/* | |
macos: | |
name: Build macOS | |
runs-on: macos-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v2 | |
- name: Set up cargo | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: Set up python | |
uses: actions/setup-python@v2 | |
- name: Build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --release | |
- name: Strip binaries (bcdown) | |
run: strip target/release/bcdown | |
- name: Create output directory | |
run: mkdir output | |
- name: Copy files to output | |
run: | | |
cp target/release/bcdown output | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: macos | |
path: output/* | |
windows: | |
name: Build Windows | |
runs-on: windows-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v2 | |
- name: Set up cargo | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: Build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --target x86_64-pc-windows-msvc --release | |
- name: Create output directory | |
run: mkdir output | |
- name: Copy files to output | |
run: | | |
cp target/x86_64-pc-windows-msvc\release\bcdown.exe output\ | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: windows | |
path: output\* | |
release: | |
name: Publish Release | |
runs-on: ubuntu-latest | |
needs: | |
- linux | |
- macos | |
- windows | |
- arm64 | |
# above line should be added in run part below after windows item. | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v2 | |
- name: Determine Release Info | |
id: info | |
env: | |
GITHUB_REF: ${{ github.ref }} | |
run: | | |
VERSION=${GITHUB_REF##*/} | |
MAJOR=${VERSION%%.*} | |
MINOR=${VERSION%.*} | |
MINOR=${MINOR#*.} | |
PATCH=${VERSION##*.} | |
echo "::set-output name=version::${VERSION}" | |
echo "::set-output name=linuxdir::bcdown_${MAJOR}.${MINOR}.${PATCH}_linux_x64" | |
echo "::set-output name=macosdir::bcdown_${MAJOR}.${MINOR}.${PATCH}_macOS_x64" | |
echo "::set-output name=windowsdir::bcdown_${MAJOR}.${MINOR}.${PATCH}_windows_x64" | |
echo "::set-output name=arm64dir::bcdown_${MAJOR}.${MINOR}.${PATCH}_linux_arm64" | |
echo "::set-output name=innerdir::bcdown-${VERSION}" | |
- name: Create Release Draft | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: ${{ steps.info.outputs.version }} Release | |
draft: true | |
- name: Create arm64 Directory | |
run: mkdir -p ${{ steps.info.outputs.arm64dir }} | |
- name: Download arm64 Artifacts | |
uses: actions/download-artifact@v2 | |
with: | |
name: arm64 | |
path: ${{ steps.info.outputs.arm64dir }} | |
- name: Restore arm64 File Modes | |
run: | | |
chmod 755 ${{ steps.info.outputs.arm64dir }}/bcdown* | |
- name: Create arm64 tarball | |
run: tar -zcvf ${{ steps.info.outputs.arm64dir }}.tar.gz ${{ steps.info.outputs.arm64dir }} | |
- name: Upload arm64 Artifact | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./${{ steps.info.outputs.arm64dir }}.tar.gz | |
asset_name: ${{ steps.info.outputs.arm64dir }}.tar.gz | |
asset_content_type: application/gzip | |
- name: Create Linux Directory | |
run: mkdir -p ${{ steps.info.outputs.linuxdir }} | |
- name: Download Linux Artifacts | |
uses: actions/download-artifact@v2 | |
with: | |
name: linux | |
path: ${{ steps.info.outputs.linuxdir }} | |
- name: Restore Linux File Modes | |
run: | | |
chmod 755 ${{ steps.info.outputs.linuxdir }}/bcdown* | |
- name: Create Linux tarball | |
run: tar -zcvf ${{ steps.info.outputs.linuxdir }}.tar.gz ${{ steps.info.outputs.linuxdir }} | |
- name: Upload Linux Artifact | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./${{ steps.info.outputs.linuxdir }}.tar.gz | |
asset_name: ${{ steps.info.outputs.linuxdir }}.tar.gz | |
asset_content_type: application/gzip | |
- name: Create macOS Directory | |
run: mkdir -p ${{ steps.info.outputs.macosdir }} | |
- name: Download macOS Artifacts | |
uses: actions/download-artifact@v2 | |
with: | |
name: macos | |
path: ${{ steps.info.outputs.macosdir }} | |
- name: Restore macOS File Modes | |
run: chmod 755 ${{ steps.info.outputs.macosdir }}/bcdown* | |
- name: Create macOS Archive | |
run: zip -r ${{ steps.info.outputs.macosdir }}.zip ${{ steps.info.outputs.macosdir }} | |
- name: Upload macOS Artifact | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./${{ steps.info.outputs.macosdir }}.zip | |
asset_name: ${{ steps.info.outputs.macosdir }}.zip | |
asset_content_type: application/zip | |
- name: Create Windows Directory | |
run: mkdir -p ${{ steps.info.outputs.windowsdir }} | |
- name: Download Windows artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: windows | |
path: ${{ steps.info.outputs.windowsdir }} | |
- name: Show Windows Artifacts | |
run: ls -la ${{ steps.info.outputs.windowsdir }} | |
- name: Create Windows Archive | |
run: zip -r ${{ steps.info.outputs.windowsdir }}.zip ${{ steps.info.outputs.windowsdir }} | |
- name: Upload Windows binary | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./${{ steps.info.outputs.windowsdir }}.zip | |
asset_name: ${{ steps.info.outputs.windowsdir }}.zip | |
asset_content_type: application/zip |