Build #383
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
# .github/workflows/build.yml | |
name: Build | |
on: | |
workflow_call: | |
inputs: | |
version: | |
type: string | |
required: false | |
features: | |
type: string | |
required: false | |
default: dns-over-tls,dns-over-https,dns-over-quic,dns-over-h3,dnssec,service,nft,self-update | |
workflow_dispatch: | |
inputs: | |
features: | |
type: string | |
required: false | |
default: dns-over-tls,dns-over-https,dns-over-quic,dns-over-h3,dnssec,service,nft,self-update | |
jobs: | |
build: | |
name: build ${{ matrix.target }} ${{ inputs.version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- target: x86_64-pc-windows-msvc | |
os: windows-latest | |
archive: zip | |
- target: x86_64-pc-windows-gnu | |
os: windows-latest | |
archive: zip | |
- target: i686-pc-windows-msvc | |
os: windows-latest | |
archive: zip | |
# - target: i686-pc-windows-gnu # error: linker `i686-w64-mingw32-gcc` not found | |
# os: windows-latest | |
# archive: zip | |
- target: x86_64-apple-darwin | |
os: macos-latest | |
archive: zip | |
- target: aarch64-apple-darwin | |
os: macos-latest | |
archive: zip | |
- target: aarch64-unknown-linux-gnu | |
os: ubuntu-latest | |
archive: tar.gz tar.xz tar.zst | |
- target: aarch64-unknown-linux-musl | |
os: ubuntu-latest | |
archive: tar.gz tar.xz tar.zst | |
# - target: arch64-unknown-linux-musl | |
# archive: tar.gz tar.xz tar.zst | |
- target: x86_64-unknown-linux-musl | |
os: ubuntu-latest | |
archive: tar.gz tar.xz tar.zst | |
- target: x86_64-unknown-linux-gnu | |
os: ubuntu-latest | |
archive: tar.gz tar.xz tar.zst | |
- target: arm-unknown-linux-musleabi | |
os: ubuntu-latest | |
archive: tar.gz tar.xz tar.zst | |
- target: arm-unknown-linux-musleabihf | |
os: ubuntu-latest | |
archive: tar.gz tar.xz tar.zst | |
# - target: mips-unknown-linux-musl | |
# archive: tar.gz tar.xz tar.zst | |
# - target: mips-unknown-linux-musl | |
# archive: tar.gz tar.xz tar.zst | |
# - target: mips64-unknown-linux-muslabi64 | |
# archive: tar.gz tar.xz tar.zst | |
- target: aarch64-linux-android | |
os: ubuntu-latest | |
archive: tar.gz tar.xz tar.zst | |
# - target: x86_64-unknown-freebsd | |
# os: ubuntu-latest | |
# archive: tar.gz tar.xz tar.zst | |
# - target: x86_64-unknown-netbsd | |
# os: ubuntu-latest | |
# archive: tar.gz tar.xz tar.zst | |
# - target: wasm32-unknown-emscripten | |
# archive: tar.gz tar.xz tar.zst | |
runs-on: ${{matrix.os}} | |
env: | |
DIST_DIR: smartdns-${{ matrix.target }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.version }} | |
- name: Setup | |
uses: ./.github/actions/setup | |
- name: Build | |
run: just build --release --no-default-features --features ${{ inputs.features }} --target=${{ matrix.target }} | |
env: | |
USE_CROSS: ${{ matrix.os == 'ubuntu-latest' }} | |
- name: Prepare package | |
run: | | |
mkdir $DIST_DIR | |
cp LICENSE $DIST_DIR | |
cp README*.md $DIST_DIR | |
cp etc/smartdns/smartdns.conf $DIST_DIR | |
echo "Version: ${{ inputs.version }}" > $DIST_DIR/version | |
echo "Build date: $(date)" >> $DIST_DIR/version | |
echo "Commit: $(git rev-parse HEAD)" >> $DIST_DIR/version | |
shell: bash | |
- name: Publish archive | |
if: ${{ !contains(matrix.target, 'windows') && !contains(matrix.target, 'darwin') }} | |
env: | |
ARCHIVE_FILE: smartdns-${{ matrix.target }}-${{inputs.version}}.tar.gz | |
run: | | |
cp target/${{ matrix.target }}/release/smartdns $DIST_DIR | |
tar -zcvf $ARCHIVE_FILE $DIST_DIR | |
shasum -a256 $ARCHIVE_FILE > $ARCHIVE_FILE-sha256sum.txt | |
echo "archive_file=$ARCHIVE_FILE" >> $GITHUB_ENV | |
- name: Publish zip archive macos | |
if: ${{ contains(matrix.target, 'darwin') }} | |
env: | |
ARCHIVE_FILE: smartdns-${{ matrix.target }}-${{inputs.version}}.zip | |
run: | | |
cp target/${{ matrix.target }}/release/smartdns $DIST_DIR | |
zip -9r $ARCHIVE_FILE $DIST_DIR | |
shasum -a256 $ARCHIVE_FILE > $ARCHIVE_FILE-sha256sum.txt | |
echo "archive_file=$ARCHIVE_FILE" >> $GITHUB_ENV | |
- name: Publish zip archive windows | |
if: ${{ contains(matrix.target, 'windows') }} | |
env: | |
ARCHIVE_FILE: smartdns-${{ matrix.target }}-${{inputs.version}}.zip | |
run: | | |
cp target/${{ matrix.target }}/release/smartdns.exe $DIST_DIR | |
7z a -tzip $ARCHIVE_FILE $DIST_DIR | |
echo ${{ hashFiles(env.ARCHIVE_FILE) }} > $ARCHIVE_FILE-sha256sum.txt | |
echo "archive_file=$ARCHIVE_FILE" >> $GITHUB_ENV | |
shell: bash | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: smartdns-${{ matrix.target }}-${{ inputs.version }} | |
retention-days: 30 | |
path: ${{ env.archive_file }} | |
- name: Publish release | |
uses: softprops/[email protected] | |
if: ${{ startsWith(inputs.version, 'v') }} | |
with: | |
draft: false | |
tag_name: ${{ inputs.version }} | |
files: | | |
${{ env.archive_file }} | |
${{ env.archive_file }}-sha256sum.txt | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |