Skip to content

arti: update to 2.1.0 #18

arti: update to 2.1.0

arti: update to 2.1.0 #18

Workflow file for this run

name: Build Arti and Lyrebird
on:
push:
tags:
- 'arti-[0-9]+\.[0-9]+\.[0-9]+-lyrebird-[0-9]+\.[0-9]+\.[0-9]+'
jobs:
extract-versions:
runs-on: ubuntu-latest
outputs:
arti_ver: ${{ steps.extract.outputs.arti_ver }}
lyrebird_ver: ${{ steps.extract.outputs.lyrebird_ver }}
steps:
- name: Extract versions
id: extract
run: |
arti_ver=$(echo '${{ github.ref_name }}' | cut -d "-" -f 2)
lyrebird_ver=$(echo '${{ github.ref_name }}' | cut -d "-" -f 4)
echo "arti_ver=$arti_ver" >> "$GITHUB_OUTPUT"
echo "lyrebird_ver=$lyrebird_ver" >> "$GITHUB_OUTPUT"
build-linux-arti:
runs-on: ubuntu-latest
container: rust:trixie
needs: extract-versions
steps:
- name: Download and build
run: |
curl -LO https://gitlab.torproject.org/tpo/core/arti/-/archive/arti-v${{ needs.extract-versions.outputs.arti_ver }}/arti-arti-v${{ needs.extract-versions.outputs.arti_ver }}.tar.gz
tar xf arti-arti-v${{ needs.extract-versions.outputs.arti_ver }}.tar.gz
cd arti-arti-v${{ needs.extract-versions.outputs.arti_ver }}
cargo build -p arti --locked --release
strip -s target/release/arti
mkdir /out
cp target/release/arti /out
cp crates/arti/src/arti-example-config.toml /out
- name: Upload artifacts
uses: actions/upload-artifact@v6
with:
name: arti-linux
path: |
/out/arti
/out/arti-example-config.toml
build-linux-lyrebird:
runs-on: ubuntu-latest
container: golang:trixie
needs: extract-versions
steps:
- name: Download and build
run: |
curl -LO https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird/-/archive/lyrebird-${{ needs.extract-versions.outputs.lyrebird_ver }}/lyrebird-lyrebird-${{ needs.extract-versions.outputs.lyrebird_ver }}.tar.gz
tar xf lyrebird-lyrebird-${{ needs.extract-versions.outputs.lyrebird_ver }}.tar.gz
cd lyrebird-lyrebird-${{ needs.extract-versions.outputs.lyrebird_ver }}
CGO_ENABLED=1 go build -ldflags="-X main.lyrebirdVersion=${{ needs.extract-versions.outputs.lyrebird_ver }} -w -s" -v -o lyrebird ./cmd/lyrebird
mkdir /out
cp lyrebird /out
- name: Upload artifacts
uses: actions/upload-artifact@v6
with:
name: lyrebird-linux
path: /out/lyrebird
build-windows-arti:
runs-on: ubuntu-latest
container: rust:trixie
needs: extract-versions
steps:
- name: Install dependencies
run: |
apt-get update -y
apt-get install -y mingw-w64
rustup target add x86_64-pc-windows-gnu
- name: Download and build
run: |
curl -LO https://gitlab.torproject.org/tpo/core/arti/-/archive/arti-v${{ needs.extract-versions.outputs.arti_ver }}/arti-arti-v${{ needs.extract-versions.outputs.arti_ver }}.tar.gz
tar xf arti-arti-v${{ needs.extract-versions.outputs.arti_ver }}.tar.gz
cd arti-arti-v${{ needs.extract-versions.outputs.arti_ver }}
cargo build -p arti --locked --release --target x86_64-pc-windows-gnu --features static
strip -s target/x86_64-pc-windows-gnu/release/arti.exe
mkdir /out
cp target/x86_64-pc-windows-gnu/release/arti.exe /out
cp crates/arti/src/arti-example-config.toml /out
- name: Upload artifacts
uses: actions/upload-artifact@v6
with:
name: arti-windows
path: |
/out/arti.exe
/out/arti-example-config.toml
build-windows-lyrebird:
runs-on: ubuntu-latest
container: golang:trixie
needs: extract-versions
steps:
- name: Download and build
run: |
curl -LO https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird/-/archive/lyrebird-${{ needs.extract-versions.outputs.lyrebird_ver }}/lyrebird-lyrebird-${{ needs.extract-versions.outputs.lyrebird_ver }}.tar.gz
tar xf lyrebird-lyrebird-${{ needs.extract-versions.outputs.lyrebird_ver }}.tar.gz
cd lyrebird-lyrebird-${{ needs.extract-versions.outputs.lyrebird_ver }}
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-X main.lyrebirdVersion=${{ needs.extract-versions.outputs.lyrebird_ver }} -w -s" -v -o lyrebird.exe ./cmd/lyrebird
mkdir /out
cp lyrebird.exe /out
- name: Upload artifacts
uses: actions/upload-artifact@v6
with:
name: lyrebird-windows
path: /out/lyrebird.exe
release:
runs-on: ubuntu-latest
needs: [extract-versions, build-linux-arti, build-linux-lyrebird, build-windows-arti, build-windows-lyrebird]
permissions:
contents: write
steps:
- name: Checkout repo
uses: actions/checkout@v6
- name: Download artifacts
uses: actions/download-artifact@v7
with:
path: artifacts
- name: Setup directories
run: |
mkdir dist
mkdir -p linux/arti
mkdir -p windows/arti
- name: Create Linux distribution
run: |
cp artifacts/arti-linux/arti linux/arti
cp artifacts/arti-linux/arti-example-config.toml linux/arti
cp artifacts/lyrebird-linux/lyrebird linux/arti
cp resources/include/arti-linux.toml linux/arti/arti.toml
cp resources/include/start-arti linux/arti
chmod 755 linux/arti/arti
chmod 755 linux/arti/lyrebird
chmod 755 linux/arti/start-arti
cd linux
tar czf ../dist/arti-linux.tar.gz arti --owner=0 --group=0 --numeric-owner
- name: Create Windows distribution
run: |
cp artifacts/arti-windows/arti.exe windows/arti
cp artifacts/arti-windows/arti-example-config.toml windows/arti
cp artifacts/lyrebird-windows/lyrebird.exe windows/arti
cp resources/include/arti-windows.toml windows/arti/arti.toml
cp resources/include/start-arti.bat windows/arti
cd windows
zip -Xr ../dist/arti-windows.zip arti
- name: Create Release
uses: softprops/action-gh-release@v2
with:
name: Arti ${{ needs.extract-versions.outputs.arti_ver }}
files: |
dist/arti-linux.tar.gz
dist/arti-windows.zip