Nightly #2121
This file contains hidden or 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: Nightly | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: 0 20 * * * | |
| jobs: | |
| build_windows: | |
| name: Windows Build | |
| if: github.repository == 'odin-lang/Odin' | |
| runs-on: windows-2022 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: build Odin | |
| shell: cmd | |
| run: | | |
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat | |
| ./build.bat 1 1 | |
| - name: Odin run | |
| shell: cmd | |
| run: | | |
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat | |
| odin run examples/demo | |
| - name: Copy artifacts | |
| run: | | |
| rm bin/llvm/windows/LLVM-C.lib | |
| mkdir dist | |
| cp odin.exe dist | |
| cp LICENSE dist | |
| cp LLVM-C.dll dist | |
| cp -r shared dist | |
| cp -r base dist | |
| cp -r core dist | |
| cp -r vendor dist | |
| cp -r bin dist | |
| cp -r examples dist | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| include-hidden-files: true | |
| name: windows_artifacts | |
| path: dist | |
| build_linux: | |
| name: Linux Build | |
| if: github.repository == 'odin-lang/Odin' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: (Linux) Download LLVM and Build Odin | |
| run: | | |
| docker run --rm -v "$PWD:/src" -w /src alpine sh -c ' | |
| apk add --no-cache \ | |
| musl-dev llvm20-dev clang20 git mold lz4 \ | |
| libxml2-static llvm20-static zlib-static zstd-static \ | |
| make && | |
| ./ci/build_linux_static.sh | |
| ' | |
| - name: Odin run | |
| run: ./odin run examples/demo | |
| - name: Copy artifacts | |
| run: | | |
| FILE="odin-linux-amd64-nightly+$(date -I)" | |
| mkdir $FILE | |
| cp odin $FILE | |
| cp LICENSE $FILE | |
| cp -r shared $FILE | |
| cp -r base $FILE | |
| cp -r core $FILE | |
| cp -r vendor $FILE | |
| cp -r examples $FILE | |
| ./ci/remove_windows_binaries.sh $FILE | |
| # Creating a tarball so executable permissions are retained, see https://github.com/actions/upload-artifact/issues/38 | |
| tar -czvf dist.tar.gz $FILE | |
| - name: Odin run | |
| run: | | |
| FILE="odin-linux-amd64-nightly+$(date -I)" | |
| $FILE/odin run examples/demo | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: linux_artifacts | |
| path: dist.tar.gz | |
| build_linux_arm: | |
| name: Linux ARM Build | |
| if: github.repository == 'odin-lang/Odin' | |
| runs-on: ubuntu-24.04-arm | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: (Linux ARM) Download LLVM and Build Odin | |
| run: | | |
| docker run --rm -v "$PWD:/src" -w /src arm64v8/alpine sh -c ' | |
| apk add --no-cache \ | |
| musl-dev llvm20-dev clang20 git mold lz4 \ | |
| libxml2-static llvm20-static zlib-static zstd-static \ | |
| make && | |
| ./ci/build_linux_static.sh | |
| ' | |
| - name: Odin run | |
| run: ./odin run examples/demo | |
| - name: Copy artifacts | |
| run: | | |
| FILE="odin-linux-arm64-nightly+$(date -I)" | |
| mkdir $FILE | |
| cp odin $FILE | |
| cp LICENSE $FILE | |
| cp -r shared $FILE | |
| cp -r base $FILE | |
| cp -r core $FILE | |
| cp -r vendor $FILE | |
| cp -r examples $FILE | |
| ./ci/remove_windows_binaries.sh $FILE | |
| # Creating a tarball so executable permissions are retained, see https://github.com/actions/upload-artifact/issues/38 | |
| tar -czvf dist.tar.gz $FILE | |
| - name: Odin run | |
| run: | | |
| FILE="odin-linux-arm64-nightly+$(date -I)" | |
| $FILE/odin run examples/demo | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: linux_arm_artifacts | |
| path: dist.tar.gz | |
| build_macos: | |
| name: MacOS Build | |
| if: github.repository == 'odin-lang/Odin' | |
| runs-on: macos-15-intel | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Download LLVM and setup PATH | |
| run: | | |
| brew update | |
| brew install llvm@20 dylibbundler lld@20 | |
| - name: build odin | |
| # These -L makes the linker prioritize system libraries over LLVM libraries, this is mainly to | |
| # not link with libunwind bundled with LLVM but link with libunwind on the system. | |
| run: CXXFLAGS="-L/usr/lib/system -L/usr/lib" make nightly | |
| - name: Bundle | |
| run: | | |
| FILE="odin-macos-amd64-nightly+$(date -I)" | |
| mkdir $FILE | |
| cp odin $FILE | |
| cp LICENSE $FILE | |
| cp -r shared $FILE | |
| cp -r base $FILE | |
| cp -r core $FILE | |
| cp -r vendor $FILE | |
| cp -r examples $FILE | |
| ./ci/remove_windows_binaries.sh $FILE | |
| dylibbundler -b -x $FILE/odin -d $FILE/libs -od -p @executable_path/libs | |
| # Creating a tarball so executable permissions are retained, see https://github.com/actions/upload-artifact/issues/38 | |
| tar -czvf dist.tar.gz $FILE | |
| - name: Odin run | |
| run: | | |
| FILE="odin-macos-amd64-nightly+$(date -I)" | |
| $FILE/odin run examples/demo | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos_artifacts | |
| path: dist.tar.gz | |
| build_macos_arm: | |
| name: MacOS ARM Build | |
| if: github.repository == 'odin-lang/Odin' | |
| runs-on: macos-latest # ARM machine | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Download LLVM and setup PATH | |
| run: | | |
| brew update | |
| brew install llvm@20 dylibbundler lld@20 | |
| - name: build odin | |
| # These -L makes the linker prioritize system libraries over LLVM libraries, this is mainly to | |
| # not link with libunwind bundled with LLVM but link with libunwind on the system. | |
| run: CXXFLAGS="-L/usr/lib/system -L/usr/lib" make nightly | |
| - name: Bundle | |
| run: | | |
| FILE="odin-macos-arm64-nightly+$(date -I)" | |
| mkdir $FILE | |
| cp odin $FILE | |
| cp LICENSE $FILE | |
| cp -r shared $FILE | |
| cp -r base $FILE | |
| cp -r core $FILE | |
| cp -r vendor $FILE | |
| cp -r examples $FILE | |
| ./ci/remove_windows_binaries.sh $FILE | |
| dylibbundler -b -x $FILE/odin -d $FILE/libs -od -p @executable_path/libs | |
| # Creating a tarball so executable permissions are retained, see https://github.com/actions/upload-artifact/issues/38 | |
| tar -czvf dist.tar.gz $FILE | |
| - name: Odin run | |
| run: | | |
| FILE="odin-macos-arm64-nightly+$(date -I)" | |
| $FILE/odin run examples/demo | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos_arm_artifacts | |
| path: dist.tar.gz | |
| upload_b2: | |
| runs-on: [ubuntu-latest] | |
| needs: [build_windows, build_macos, build_macos_arm, build_linux, build_linux_arm] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.8.x' | |
| - name: Install B2 SDK | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install --upgrade b2sdk | |
| - name: Display Python version | |
| run: python -c "import sys; print(sys.version)" | |
| - name: Download Windows artifacts | |
| uses: actions/[email protected] | |
| with: | |
| name: windows_artifacts | |
| path: windows_artifacts | |
| - name: Download Ubuntu artifacts | |
| uses: actions/[email protected] | |
| with: | |
| name: linux_artifacts | |
| path: linux_artifacts | |
| - name: Download Ubuntu ARM artifacts | |
| uses: actions/[email protected] | |
| with: | |
| name: linux_arm_artifacts | |
| path: linux_arm_artifacts | |
| - name: Download macOS artifacts | |
| uses: actions/[email protected] | |
| with: | |
| name: macos_artifacts | |
| path: macos_artifacts | |
| - name: Download macOS arm artifacts | |
| uses: actions/[email protected] | |
| with: | |
| name: macos_arm_artifacts | |
| path: macos_arm_artifacts | |
| - name: Debug | |
| run: | | |
| tree -L 2 | |
| - name: Create archives and upload | |
| shell: bash | |
| env: | |
| APPID: ${{ secrets.B2_APPID }} | |
| APPKEY: ${{ secrets.B2_APPKEY }} | |
| BUCKET: ${{ secrets.B2_BUCKET }} | |
| DAYS_TO_KEEP: ${{ secrets.B2_DAYS_TO_KEEP }} | |
| run: | | |
| file linux_artifacts/dist.tar.gz | |
| python3 ci/nightly.py artifact windows-amd64 windows_artifacts/ | |
| python3 ci/nightly.py artifact linux-amd64 linux_artifacts/dist.tar.gz | |
| python3 ci/nightly.py artifact linux-arm64 linux_arm_artifacts/dist.tar.gz | |
| python3 ci/nightly.py artifact macos-amd64 macos_artifacts/dist.tar.gz | |
| python3 ci/nightly.py artifact macos-arm64 macos_arm_artifacts/dist.tar.gz | |
| python3 ci/nightly.py prune | |
| python3 ci/nightly.py json |