Skip to content

dreamluau

dreamluau #75

Workflow file for this run

name: dreamluau
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
inputs:
force_rebuild:
description: "Force Rebuild"
required: false
type: "boolean"
release:
description: "Prepare Release"
type: "choice"
default: "No Release"
options:
- "No Release"
- "Dry Run"
- "Full Release"
jobs:
check-should-rebuild:
outputs:
should-rebuild: ${{ (inputs.release && inputs.release != 'No Release') || inputs.force_rebuild || steps.changed-files.outputs.any_changed }}
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
if: ${{ (inputs.release && inputs.release != 'No Release') && !inputs.force_rebuild }}
- name: Check Modified Files
uses: tj-actions/changed-files@v44
if: ${{ (inputs.release && inputs.release != 'No Release') && !inputs.force_rebuild }}
id: changed-files
with:
files: |
**/*.rs
Cargo.lock
build-windows:
runs-on: windows-latest
needs: check-should-rebuild
if: ${{ needs.check-should-rebuild.outputs.should-rebuild == 'true' }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: i686-pc-windows-msvc
components: rustfmt, clippy
- name: Clippy (all features)
run: cargo clippy --target i686-pc-windows-msvc --locked -- -D warnings
- name: Rustfmt
run: cargo fmt -- --check
- name: Build (release) (default features)
run: cargo build --target i686-pc-windows-msvc --locked --release
- uses: actions/upload-artifact@v4
with:
name: dreamluau_windows
path: target/i686-pc-windows-msvc/release/dreamluau.dll
build-linux:
runs-on: ubuntu-20.04
needs: check-should-rebuild
if: ${{ needs.check-should-rebuild.outputs.should-rebuild == 'true' }}
env:
BYOND_MAJOR: 515
BYOND_MINOR: 1640
PKG_CONFIG_ALLOW_CROSS: 1
steps:
- uses: actions/checkout@v4
- run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install g++-multilib zlib1g-dev:i386 libssl-dev:i386
./scripts/install_byond.sh
- uses: dtolnay/rust-toolchain@stable
with:
targets: i686-unknown-linux-gnu
- name: Check (all features)
run: cargo check --target i686-unknown-linux-gnu --locked
- name: Build (Debug) (all features)
run: cargo build --target i686-unknown-linux-gnu --locked
- name: Run tests (all features)
run: cargo test --target i686-unknown-linux-gnu --locked
env:
BYOND_BIN: /home/runner/BYOND/byond/bin
- name: Build (release) (default features)
run: cargo build --target i686-unknown-linux-gnu --locked --release
- uses: actions/upload-artifact@v4
with:
name: dreamluau_linux
path: target/i686-unknown-linux-gnu/release/libdreamluau.so
release:
runs-on: ubuntu-20.04
needs: ["build-windows", "build-linux"]
if: ${{ inputs.release && inputs.release != 'No Release' }}
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Download Artifacts
if: ${{ inputs.release == 'Full Release' }}
id: download_artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Get changelog
run: |
VERSION=`grep -Po '(?<=^version = ")([^"]+)' ./Cargo.toml`
echo "VERSION=$VERSION" >> $GITHUB_ENV
CHANGELOG_ENTRY=`grep --color=never -m 1 -Po '## \K(\[[0-9\.]+\].*)' CHANGELOG.md`
mkdir tmp
`bash ./scripts/extract_changelog.sh $CHANGELOG_ENTRY > ./tmp/CHANGELOG.md`
- name: Get Tags
id: tags
uses: octokit/[email protected]
with:
route: GET /repos/${{ github.repository }}/git/matching-refs/tags
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Validate Tag is New
if: ${{ contains(steps.tags.outputs.data.*.ref, format('refs/tags/{0}', env.VERSION)) }}
run: |
if [[ $INPUT_release -eq 'Full Release']]
then
echo "::error::A release with the tag \"$VERSION\" already exists."
exit 1
else
echo "::warning:::A release with the tag \"$VERSION\" already exists."
fi
- name: Upload Changelog (Dry Run)
if: ${{ inputs.release == 'Dry Run' }}
uses: actions/upload-artifact@v4
with:
name: CHANGELOG.md
path: tmp/CHANGELOG.md
- name: Create Release
id: create_release
if: ${{ inputs.release == 'Full Release' }}
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.VERSION }}
name: ${{ env.VERSION }}
body_path: tmp/CHANGELOG.md
files: |
${{ steps.download_artifacts.outputs.download-path }}/dreamluau_linux/libdreamluau.so
${{ steps.download_artifacts.outputs.download-path }}/dreamluau_windows/dreamluau.dll
dmsrc/api.dm