Skip to content

v1.38.0: Various performance enhancements #2

v1.38.0: Various performance enhancements

v1.38.0: Various performance enhancements #2

Workflow file for this run

# When a release is published, build the assets and upload them
name: Build release assets
on:
release:
types:
- published
jobs:
# First we define a job with a matrix that will build all relevant assets,
# and collect them in a temporary storage using `actions/upload-artifacts`
build:
name: 'Build artifacts for ${{ github.event.release.tag_name }}'
strategy:
fail-fast: false
matrix:
os: [ macOS-11, ubuntu-20.04, windows-2019 ]
arch: [ x86_64 ]
include:
- { os: windows-2019, arch: i686 }
runs-on: ${{ matrix.os }}
steps:
## Dependencies
- name: '[OSX] Install dependencies'
if: runner.os == 'macOS'
run: |
brew install pkg-config coreutils
echo "PKG_CONFIG_PATH=/usr/local/opt/[email protected]/lib/pkgconfig/" >> $GITHUB_ENV
- name: '[Linux] Install dependencies'
if: runner.os == 'Linux'
run: |
sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev
## Boileterplate (compiler/repo)
- name: Install compiler
uses: dlang-community/setup-dlang@v1
with:
compiler: ldc-latest
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.release.tag_name }}
## Actually build the releases
- name: '[POSIX] Build release'
if: runner.os == 'Linux' || runner.os == 'macOS'
env:
GITVER: ${{ github.event.release.tag_name }}
DMD: "ldmd2"
ARCH_TRIPLE: ${{ matrix.arch }}-${{ runner.os == 'linux' && 'pc-linux' || 'apple-darwin' }}
run: |
ldc2 -run ./build.d -release -mtriple=${ARCH_TRIPLE}
pushd bin
if [ ${{ runner.os }} == 'Linux' ]; then
tar -c -f 'dub-${{ github.event.release.tag_name }}-linux-${{ matrix.arch }}.tar.gz' -v -z --owner=0 --group=0 dub
else
gtar -c -f 'dub-${{ github.event.release.tag_name }}-osx-${{ matrix.arch }}.tar.gz' -v -z --owner=0 --group=0 dub
fi
popd
- name: '[Windows] Build release'
if: runner.os == 'Windows'
env:
GITVER: ${{ github.event.release.tag_name }}
DMD: "ldmd2"
run: |
ldc2 -run ./build.d -release -mtriple=${{ matrix.arch }}-pc-windows-msvc
pushd bin
7z a dub-${{ github.event.release.tag_name }}-windows-${{ matrix.arch }}.zip dub.exe
popd
- name: 'Upload temporary binaries'
uses: actions/upload-artifact@v4
with:
name: dub-release-${{ matrix.os }}-${{ matrix.arch }}
path: |
bin/dub-${{ github.event.release.tag_name }}-*
if-no-files-found: error
retention-days: 1
# Uploads collected builds to the release
release:
name: "Update release artifacts"
runs-on: ubuntu-latest
needs:
- build
steps:
- name: Download artifacts to release
uses: actions/download-artifact@v4
with:
path: ~/artifacts/
- name: List all artifacts included in the release
id: list-artifacts
shell: bash
run: |
set -euox pipefail
ls -aulR ~/artifacts
echo "artifacts_directory=$HOME/artifacts" >> $GITHUB_OUTPUT
- name: Update release artifacts
uses: ncipollo/release-action@v1
with:
token: "${{ secrets.GITHUB_TOKEN }}"
tag: ${{ github.event.release.tag_name }}
artifacts: ${{ steps.list-artifacts.outputs.artifacts_directory }}/*/*
# Keep the existing state of the release
allowUpdates: true
artifactErrorsFailBuild: true
omitNameDuringUpdate: true
omitBodyDuringUpdate: true
omitPrereleaseDuringUpdate: true