v7.9 #637
Workflow file for this run
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: Linux | |
on: | |
pull_request: | |
branches: | |
- main | |
push: | |
branches: | |
- main | |
release: | |
types: [published] | |
workflow_dispatch: | |
permissions: | |
contents: write | |
concurrency: | |
# Skip intermediate builds: all builds except for builds on the `main` branch | |
# Cancel intermediate builds: only pull request builds | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/main' || github.run_number }} | |
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} | |
jobs: | |
linux: | |
timeout-minutes: 10 | |
needs: build_linux | |
if: always() | |
runs-on: ubuntu-latest | |
steps: | |
- run: | | |
echo build_linux: ${{ needs.build_linux.result }} | |
- run: exit 1 | |
if: needs.build_linux.result != 'success' | |
build_linux: | |
timeout-minutes: 120 | |
name: build_linux / ${{ matrix.image }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
# Build a bunch of different "agent" rootfs images. | |
- 'agent_linux.aarch64' | |
- 'agent_linux.armv7l' | |
- 'agent_linux.ppc64le' | |
- 'agent_linux.x86_64' | |
- 'agent_linux.i686' | |
# The `aws_uploader` image is a `debian`-based image that | |
# contains just `awscli`, for usage in secured pipelines | |
# that need to upload to AWS. | |
- 'aws_uploader.x86_64' | |
# The `debian_minimal` image is a `debian`-based image that | |
# contains no packages. | |
- 'debian_minimal.aarch64' | |
- 'debian_minimal.armv7l' | |
- 'debian_minimal.ppc64le' | |
- 'debian_minimal.x86_64' | |
- 'debian_minimal.i686' | |
# The `latex` image is used to build the PDF docs | |
- 'latex.x86_64' | |
# The `llvm_passes` image contains `gfortran`, so we use it for our | |
# "from source" (`USE_BINARYBUILDER=0`) jobs. | |
- 'llvm_passes.aarch64' | |
- 'llvm_passes.armv7l' | |
- 'llvm_passes.i686' | |
- 'llvm_passes.powerpc64le' | |
- 'llvm_passes.x86_64' | |
# The `npm_linux` image is a helper for ecosystem jobs that need to build NPM packages | |
- 'npm_linux.x86_64' | |
# The `package_linux` images are all `debian`-based. | |
- 'package_linux.aarch64' | |
- 'package_linux.armv7l' | |
- 'package_linux.i686' | |
- 'package_linux.powerpc64le' | |
- 'package_linux.x86_64' | |
# The `package_musl` image is `alpine`-based. | |
- 'package_musl.x86_64' | |
# The `pkgserver_logsync` image is a helper for https://github.com/JuliaPackaging/PkgServerLogAnalysis.jl | |
- 'pkgserver_logsync.x86_64' | |
# The `rr` image is `debian`-based. | |
# It is used for building rr from source and running the rr test suite. | |
- 'rr.aarch64' | |
- 'rr.x86_64' | |
# The `tester_linux` images are all `debian`-based. | |
# They do not include the compiler toolchain. | |
- 'tester_linux.aarch64' | |
- 'tester_linux.armv7l' | |
- 'tester_linux.i686' | |
- 'tester_linux.powerpc64le' | |
- 'tester_linux.x86_64' | |
# The `tester_musl` image is `alpine`-based. | |
# It does not include the compiler toolchain. | |
- 'tester_musl.x86_64' | |
# The `xvfb` image is used in the CI for the PkgEval.jl repo | |
- 'xvfb.aarch64' | |
- 'xvfb.x86_64' | |
# The `yggdrasil` image is used in the CI for the Yggdrasil repo | |
- 'yggdrasil.x86_64' | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: julia-actions/setup-julia@v1 | |
with: | |
version: '1.6' | |
arch: x64 | |
- run: | | |
import Pkg | |
ENV["JULIA_PKG_SERVER"] = "" | |
Pkg.Registry.add("General") | |
shell: julia --color=yes {0} | |
- run: sudo apt-get update | |
- run: sudo apt-get -y install binfmt-support debootstrap qemu-user-static | |
- run: update-binfmts --display | |
- run: julia --color=yes --project=. -e 'import Pkg; @time Pkg.instantiate()' | |
- run: julia --color=yes --project=. -e 'import Pkg; @time Pkg.precompile()' | |
- run: julia --color=yes --project=. -e '@time import RootfsUtils' | |
- run: | | |
IMAGE_NAME=$(echo ${{ matrix.image }} | cut -d. -f1) | |
IMAGE_ARCH=$(echo ${{ matrix.image }} | cut -d. -f2) | |
echo "IMAGE_NAME=$IMAGE_NAME" >> $GITHUB_ENV | |
echo "IMAGE_ARCH=$IMAGE_ARCH" >> $GITHUB_ENV | |
- run: julia --color=yes --project=. linux/${{ env.IMAGE_NAME }}.jl --arch=${{ env.IMAGE_ARCH }} | |
id: build | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- run: echo "The tarball name is ${{ steps.build.outputs.tarball_name }}" | |
- run: echo "The tarball path is ${{ steps.build.outputs.tarball_path }}" | |
- uses: actions/upload-artifact@v2 | |
if: steps.build.outputs.tarball_name != '' && steps.build.outputs.tarball_path != '' | |
with: | |
name: ${{ steps.build.outputs.tarball_name }} | |
path: ${{ steps.build.outputs.tarball_path }} | |
if-no-files-found: error |