name: Build on: [push, pull_request] jobs: build: name: Build TaskChampion Sync-Server runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Rust toolchain uses: dtolnay/rust-toolchain@stable with: toolchain: 1.77 - name: Test run: cargo test - name: Build run: cargo build --release --locked - name: Package current compilation id: package-current run: | install -Dm755 "target/release/taskchampion-sync-server" "taskchampion-sync-server-${GITHUB_REF##*/}-${GITHUB_SHA}/taskchampion-sync-server" install -Dm644 "README.md" "taskchampion-sync-server-${GITHUB_REF##*/}-${GITHUB_SHA}/README.md" install -Dm644 "LICENSE" "taskchampion-sync-server-${GITHUB_REF##*/}-${GITHUB_SHA}/LICENSE" echo "version=${GITHUB_REF##*/}-${GITHUB_SHA}" >> $GITHUB_OUTPUT - name: Archive current compilation uses: actions/upload-artifact@v3 with: name: "taskchampion-sync-server-${{ steps.package-current.outputs.version }}" path: "taskchampion-sync-server-${{ steps.package-current.outputs.version }}/" - name: Package tagged compilation id: package if: startsWith(github.ref, 'refs/tags/') && github.event_name != 'pull_request' run: | install -Dm755 "target/release/taskchampion-sync-server" "taskchampion-sync-server-${GITHUB_REF##*/}/taskchampion-sync-server" install -Dm644 "README.md" "taskchampion-sync-server-${GITHUB_REF##*/}/README.md" install -Dm644 "LICENSE" "taskchampion-sync-server-${GITHUB_REF##*/}/LICENSE" tar cvJf "taskchampion-sync-server-${GITHUB_REF##*/}.tar.xz" "taskchampion-sync-server-${GITHUB_REF##*/}" echo "version=${GITHUB_REF##*/}" >> $GITHUB_OUTPUT - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') && github.event_name != 'pull_request' with: files: "taskchampion-sync-server-${{ steps.package.outputs.version }}.tar.xz" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}