Build binaries #1466
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
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}/ |