Skip to content

Build binaries

Build binaries #1466

on:
push:
tags:
- 2*.*.*
workflow_dispatch:
name: Build binaries
env:
DEFAULT_TAG: 24.0.999
jobs:
build:
name: Build and deploy
strategy:
fail-fast: false
matrix:
os: [macos-12, macos-14, ubuntu-20.04, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Initialize TAG and git autocrlf
shell: bash
run: |
git config --global core.autocrlf input
if [[ ${GITHUB_REF##*/} = 2*.[0-9]*.[0-9]* ]]; then
echo "TAG=${GITHUB_REF##*/}" >> $GITHUB_ENV
else
echo "TAG=$DEFAULT_TAG" >> $GITHUB_ENV
fi
- name: Force Alire use preinstalled MSYS2
shell: bash
if: ${{ runner.os == 'Windows' }}
run: |
mkdir -p ~/.config/alire
echo '[msys2]' >> ~/.config/alire/config.toml
echo 'install_dir = "C:\\msys64"' >> ~/.config/alire/config.toml
- name: Get als
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get GNAT toolchain with alire (AArch64)
if: ${{ matrix.os == 'macos-14' }}
run: |
# alire-project/setup-alire doesn't work for ARM64 Mac OS X for now.
# https://github.com/alire-project/setup-alire/pull/74
curl -L -O https://github.com/alire-project/alire/releases/download/nightly/alr-nightly-bin-aarch64-macos.zip
unzip alr-nightly-bin-aarch64-macos.zip
bin/alr index --reset-community
bin/alr toolchain --select gnat_native^14 gprbuild
echo $PWD/bin >> $GITHUB_PATH
- name: Get GNAT toolchain with alire (x86_64)
if: ${{ matrix.os != 'macos-14' }}
uses: alire-project/setup-alire@v3
with:
toolchain: gnat_native^14 gprbuild
- name: Build
shell: bash
run: |
alr settings --global --set dependencies.shared false
pip3 install e3-testsuite
scripts/build_als.sh all "$TAG"
- name: Archive ALS binary
uses: actions/upload-artifact@v4
with:
name: als-${{ matrix.os }}
# We know that only one of the following entries will match on a given
# run, so we use globs here to try to avoid warnings on unmatched
# entries
path: |
integration/vscode/ada/arm*
integration/vscode/ada/x64*
commits.txt
- name: Upload release
shell: bash
if: ${{ env.TAG != env.DEFAULT_TAG }}
run: |
.github/workflows/release.sh "${{ secrets.GITHUB_TOKEN }}" $TAG ""
- name: Package
shell: bash
run: |
.github/workflows/pack-binaries.sh "$TAG"
- name: Archive VSIX binary
uses: actions/upload-artifact@v4
with:
name: vsix-${{ matrix.os }}
path: "*.vsix"
- name: Upload result to AWS
shell: bash
if: ${{ github.repository == 'AdaCore/ada_language_server' && startsWith(matrix.os, 'macos-') }}
env:
AWS_ACCESS_KEY_ID: ${{secrets.GHA_PUBLISH_ACCESS_KEY_ID}}
AWS_SECRET_ACCESS_KEY: ${{secrets.GHA_PUBLISH_SECRET}}
AWS_DEFAULT_REGION: eu-west-1
run: |
for FILE in *.vsix ; do
aws s3 cp ${FILE} s3://adacore-gha-tray-eu-west-1/vscode-extension/${TAG}/ --sse=AES256
done
aws s3 ls s3://adacore-gha-tray-eu-west-1/vscode-extension/${TAG}/