Skip to content

Build

Build #52

Workflow file for this run

name: Build
on:
workflow_dispatch:
inputs:
uploadRelease:
description: "Create Github Release"
type: boolean
tag:
description: "Github release tag"
dockerRelease:
description: "Create Dockerhub Releasee"
type: boolean
jobs:
generate_toolchain:
strategy:
fail-fast: true
matrix:
include:
- arch: amd64
config: x86_64-gcc-10.5.0-glibc-2.28.config
tuple: x86_64-linux-gnu
pkg: x86_64-linux-gnu-glibc-2.28-gcc-10.5.0
- arch: amd64
config: x86_64-gcc-8.5.0-glibc-2.28.config
tuple: x86_64-linux-gnu
pkg: x86_64-linux-gnu-glibc-2.28-gcc-8.5.0
- arch: arm64
config: aarch64-gcc-10.5.0-glibc-2.28.config
tuple: aarch64-linux-gnu
pkg: aarch64-linux-gnu-glibc-2.28-gcc-10.5.0
- arch: arm64
config: aarch64-gcc-8.5.0-glibc-2.28.config
tuple: aarch64-linux-gnu
pkg: aarch64-linux-gnu-glibc-2.28-gcc-8.5.0
- arch: armhf
config: armhf-gcc-10.5.0-glibc-2.28.config
tuple: arm-rpi-linux-gnueabihf
pkg: arm-rpi-linux-gnueabihf-glibc-2.28-gcc-10.5.0
- arch: armhf
config: armhf-gcc-8.5.0-glibc-2.28.config
tuple: arm-rpi-linux-gnueabihf
pkg: arm-rpi-linux-gnueabihf-glibc-2.28-gcc-8.5.0
uses: ./.github/workflows/build-toolchain.yml
with:
config: ${{ matrix.config }}
arch: ${{ matrix.arch }}
tuple: ${{ matrix.tuple }}
pkg: ${{ matrix.pkg }}
generate_musl_toolchain:
runs-on: ubuntu-latest
timeout-minutes: 180
steps:
- uses: actions/checkout@v3
- name: Build musl toolchain
run: |
set -e
./build-musl-toolchain.sh aarch64-linux-musl aarch64-linux-musl-gcc-10.3.0
- name: Publish artifact
uses: actions/upload-artifact@v4
with:
name: aarch64-linux-musl-gcc-10.3.0
path: aarch64-linux-musl-gcc-10.3.0.tar.gz
release_toolchain:
if: github.event.inputs.uploadRelease == 'true'
runs-on: ubuntu-latest
needs: [generate_toolchain, generate_musl_toolchain]
steps:
- uses: actions/download-artifact@v4
with:
path: artifacts/
- run: |
mkdir upload
cp artifacts/x86_64-linux-gnu-glibc-2.28-gcc-10.5.0/x86_64-linux-gnu-glibc-2.28-gcc-10.5.0.tar.gz upload/x86_64-linux-gnu-glibc-2.28-gcc-10.5.0.tar.gz
cp artifacts/aarch64-linux-gnu-glibc-2.28-gcc-10.5.0/aarch64-linux-gnu-glibc-2.28-gcc-10.5.0.tar.gz upload/aarch64-linux-gnu-glibc-2.28-gcc-10.5.0.tar.gz
cp artifacts/arm-rpi-linux-gnueabihf-glibc-2.28-gcc-10.5.0/arm-rpi-linux-gnueabihf-glibc-2.28-gcc-10.5.0.tar.gz upload/arm-rpi-linux-gnueabihf-glibc-2.28-gcc-10.5.0.tar.gz
cp artifacts/x86_64-linux-gnu-glibc-2.28-gcc-8.5.0/x86_64-linux-gnu-glibc-2.28-gcc-8.5.0.tar.gz upload/x86_64-linux-gnu-glibc-2.28-gcc-8.5.0.tar.gz
cp artifacts/aarch64-linux-gnu-glibc-2.28-gcc-8.5.0/aarch64-linux-gnu-glibc-2.28-gcc-8.5.0.tar.gz upload/aarch64-linux-gnu-glibc-2.28-gcc-8.5.0.tar.gz
cp artifacts/arm-rpi-linux-gnueabihf-glibc-2.28-gcc-8.5.0/arm-rpi-linux-gnueabihf-glibc-2.28-gcc-8.5.0.tar.gz upload/arm-rpi-linux-gnueabihf-glibc-2.28-gcc-8.5.0.tar.gz
cp artifacts/aarch64-linux-musl-gcc-10.3.0/aarch64-linux-musl-gcc-10.3.0.tar.gz upload/aarch64-linux-musl-gcc-10.3.0.tar.gz
cd upload
shasum -a 256 *.tar.gz > SHASUMS256.txt
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
repository: ${{ github.repository_owner }}/vscode-linux-build-agent
tag_name: ${{ inputs.tag || format('v{0}-{1}', github.run_number, github.run_id) }}
files: upload/*
linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arch: [alpine-arm64, alpine-x64, ubuntu-x64]
include:
- arch: alpine-arm64
qemu: true
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
if: matrix.qemu == true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
install: true
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
context: ${{ matrix.arch }}
file: ${{ matrix.arch }}/Dockerfile
tags: gitpod/openvscode-server-linux-build-agent:${{ matrix.arch }}
push: ${{ inputs.dockerRelease == true }}