Skip to content

Create Release Draft #1

Create Release Draft

Create Release Draft #1

Workflow file for this run

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/release-downloader@v1.4
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