v1.38.0: Various performance enhancements #2
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
# 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 |