Precreate the compilation path to avoid mtime races #10867
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
name: CI | |
on: | |
push: | |
paths-ignore: | |
- "lib/**/*.md" | |
pull_request: | |
paths-ignore: | |
- "lib/**/*.md" | |
env: | |
ELIXIR_ASSERT_TIMEOUT: 2000 | |
ELIXIRC_OPTS: "--warnings-as-errors" | |
LANG: C.UTF-8 | |
permissions: | |
contents: read | |
jobs: | |
test_linux: | |
name: Ubuntu 24.04, Erlang/OTP ${{ matrix.otp_version }}${{ matrix.deterministic && ' (deterministic)' || '' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- otp_version: "27.1" | |
deterministic: true | |
- otp_version: "27.1" | |
otp_latest: true | |
- otp_version: "27.0" | |
- otp_version: "26.0" | |
- otp_version: "25.3" | |
- otp_version: "25.0" | |
- otp_version: master | |
development: true | |
- otp_version: maint | |
development: true | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 50 | |
- uses: erlef/setup-beam@v1 | |
with: | |
otp-version: ${{ matrix.otp_version }} | |
- name: Set ERL_COMPILER_OPTIONS | |
if: ${{ matrix.deterministic }} | |
run: echo "ERL_COMPILER_OPTIONS=deterministic" >> $GITHUB_ENV | |
- name: Compile Elixir | |
run: | | |
make compile | |
echo "$PWD/bin" >> $GITHUB_PATH | |
- name: Build info | |
run: bin/elixir --version | |
- name: Check format | |
run: make test_formatted && echo "All Elixir source code files are properly formatted." | |
- name: Erlang test suite | |
run: make test_erlang | |
continue-on-error: ${{ matrix.development }} | |
- name: Elixir test suite | |
run: make test_elixir | |
continue-on-error: ${{ matrix.development }} | |
- name: Build docs (ExDoc main) | |
if: ${{ matrix.otp_latest }} | |
run: | | |
cd .. | |
git clone https://github.com/elixir-lang/ex_doc.git --depth 1 | |
cd ex_doc | |
../elixir/bin/mix do local.rebar --force + local.hex --force + deps.get + compile | |
cd ../elixir/ | |
make docs | |
- name: Check reproducible builds | |
if: ${{ matrix.deterministic }} | |
run: | | |
rm -rf .git | |
# Recompile System without .git | |
cd lib/elixir && ../../bin/elixirc -o ebin lib/system.ex && cd - | |
taskset 1 make check_reproducible | |
test_windows: | |
name: Windows Server 2019, Erlang/OTP ${{ matrix.otp_version }} | |
strategy: | |
matrix: | |
otp_version: ["25.3", "26.2", "27.1"] | |
runs-on: windows-2022 | |
steps: | |
- name: Configure Git | |
run: git config --global core.autocrlf input | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 50 | |
- uses: erlef/setup-beam@v1 | |
with: | |
otp-version: ${{ matrix.otp_version }} | |
- name: Compile Elixir | |
run: | | |
Remove-Item -Recurse -Force '.git' | |
make compile | |
- name: Build info | |
run: bin/elixir --version | |
- name: Check format | |
run: make test_formatted && echo "All Elixir source code files are properly formatted." | |
- name: Erlang test suite | |
run: make --keep-going test_erlang | |
- name: Elixir test suite | |
run: | | |
Remove-Item 'c:/Windows/System32/drivers/etc/hosts' | |
make --keep-going test_elixir | |
check_posix_compliant: | |
name: Check POSIX-compliant | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 50 | |
- name: Install Shellcheck | |
run: | | |
sudo apt update | |
sudo apt install -y shellcheck | |
- name: Check POSIX-compliant | |
run: | | |
shellcheck -e SC2039,2086 bin/elixir && echo "bin/elixir is POSIX compliant" | |
shellcheck bin/elixirc && echo "bin/elixirc is POSIX compliant" | |
shellcheck bin/iex && echo "bin/iex is POSIX compliant" |