0.11.1 #55
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
# This workflow runs on tags / releases. It also runs on nightly builds without | |
# publishing anything, in order to test as much of the build works as possible. | |
# | |
# We indicate whether it should publish, vs. just build, by checking whether | |
# `github.event_name == 'release'` . (An alternative would be to have an input | |
# which is passed in by the calling workflow.) | |
name: release | |
on: | |
release: | |
types: [released] | |
workflow_call: | |
workflow_dispatch: | |
jobs: | |
brew-dispatcher: | |
name: Release on homebrew-prql | |
runs-on: ubuntu-latest | |
if: github.event_name == 'release' | |
steps: | |
- uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.PRQL_BOT_GITHUB_TOKEN }} | |
script: | | |
await github.rest.actions.createWorkflowDispatch({ | |
owner: 'prql', | |
repo: 'homebrew-prql', | |
workflow_id: 'update.yaml', | |
ref: 'main', | |
inputs: { | |
version: '${{ github.ref }}', | |
URL: 'https://github.com/PRQL/prql/archive/${{ github.ref }}.tar.gz' | |
} | |
}) | |
build-prqlc: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-musl | |
- os: ubuntu-latest | |
target: aarch64-unknown-linux-musl | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
- os: macos-latest | |
target: aarch64-apple-darwin | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
permissions: | |
contents: write | |
steps: | |
- name: 📂 Checkout code | |
uses: actions/checkout@v4 | |
- uses: ./.github/actions/build-prqlc | |
id: build-artifact | |
with: | |
target: ${{ matrix.target }} | |
profile: release | |
- name: Upload release artifact | |
if: github.event_name == 'release' | |
uses: softprops/action-gh-release@v1 | |
with: | |
append_body: true | |
files: ${{ steps.build-artifact.outputs.artifact-name }} | |
winget-release: | |
runs-on: ubuntu-latest | |
needs: build-prqlc | |
if: github.event_name == 'release' | |
steps: | |
- name: publish | |
uses: vedantmgoyal2009/winget-releaser@v2 | |
with: | |
identifier: PRQL.prqlc | |
version: ${{ github.ref_name }} | |
installers-regex: '^prqlc-.*-windows-.*\.zip$' | |
token: ${{ secrets.PRQL_BOT_GITHUB_TOKEN }} | |
fork-user: prql-bot | |
build-deb-package: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- x86_64-unknown-linux-musl | |
- aarch64-unknown-linux-musl | |
needs: build-prqlc | |
permissions: | |
contents: write | |
steps: | |
- name: Download a Build Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: prqlc-${{ matrix.target }} | |
- name: Copy files into .deb package | |
run: | | |
tar -xf prqlc-*.tar.gz | |
mkdir -p .debpkg/usr/bin | |
mv prqlc .debpkg/usr/bin/prqlc | |
chmod +x .debpkg/usr/bin/prqlc | |
- name: Set arch variable | |
run: | | |
if [ "${{ matrix.target }}" == "aarch64-unknown-linux-musl" ]; then | |
echo "package_arch=arm64" >> "$GITHUB_ENV" | |
elif [ "${{ matrix.target }}" == "x86_64-unknown-linux-musl" ]; then | |
echo "package_arch=amd64" >> "$GITHUB_ENV" | |
else | |
echo "::error::Unknown architecture: ${{ matrix.target }}" | |
exit 1 | |
fi | |
- name: 📦 Build .deb package | |
uses: jiro4989/build-deb-action@v3 | |
with: | |
package: prqlc | |
package_root: .debpkg | |
maintainer: The PRQL Project | |
version: ${{ github.event_name == 'release' && github.ref_name || 0 }} | |
arch: ${{ env.package_arch }} | |
desc: > | |
prqlc is the CLI for the PRQL compiler. It compiles PRQL to SQL, and | |
offers various diagnostics. | |
PRQL is a modern language for transforming data — a simple, | |
powerful, pipelined SQL replacement. | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: artifact-deb | |
path: | | |
./*.deb | |
- name: Release | |
if: github.event_name == 'release' | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: prqlc_*.deb | |
build-rpm-package: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- x86_64-unknown-linux-musl | |
#- aarch64-unknown-linux-musl # https://github.com/jiro4989/build-rpm-action/issues/6 | |
needs: build-prqlc | |
permissions: | |
contents: write | |
steps: | |
- name: Download a Build Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: prqlc-${{ matrix.target }} | |
- name: Copy files into .rpm package | |
run: | | |
tar -xf prqlc-*.tar.gz | |
mkdir -p .rpmpkg/usr/bin | |
mv prqlc .rpmpkg/usr/bin/prqlc | |
chmod +x .rpmpkg/usr/bin/prqlc | |
- name: Set variables | |
run: | | |
if [ "${{ matrix.target }}" == "aarch64-unknown-linux-musl" ]; then | |
echo "package_arch=aarch64" >> "$GITHUB_ENV" | |
elif [ "${{ matrix.target }}" == "x86_64-unknown-linux-musl" ]; then | |
echo "package_arch=x86_64" >> "$GITHUB_ENV" | |
else | |
echo "::error::Unknown architecture: ${{ matrix.target }}" | |
fi | |
- name: 📦 Build .rpm package | |
uses: jiro4989/build-rpm-action@v2 | |
with: | |
summary: CLI for PRQL, a modern language for transforming data | |
package: prqlc | |
package_root: .rpmpkg | |
maintainer: The PRQL Project | |
vendor: The PRQL Project | |
version: ${{ github.event_name == 'release' && github.ref_name || 0 }} | |
arch: ${{ env.package_arch }} | |
desc: > | |
prqlc is the CLI for the PRQL compiler. It compiles PRQL to SQL, and | |
offers various diagnostics. | |
PRQL is a modern language for transforming data — a simple, | |
powerful, pipelined SQL replacement. | |
license: Apache-2.0 | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: artifact-rpm | |
path: | | |
./*.rpm | |
!./*-debuginfo-*.rpm | |
- run: rm prqlc-debuginfo-*.rpm | |
- name: Release | |
if: github.event_name == 'release' | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: prqlc-*.rpm | |
build-and-publish-snap: | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name == 'release' }} | |
steps: | |
- name: 📂 Checkout code | |
uses: actions/checkout@v4 | |
- name: Move Snap to project root directory | |
run: cp -r prqlc/packages/snap/ . | |
- name: 📦 Build Snap | |
id: build | |
uses: snapcore/action-build@v1 | |
- name: 🆙 Publish Snap | |
if: github.event_name == 'release' | |
uses: snapcore/action-publish@v1 | |
env: | |
SNAPCRAFT_STORE_CREDENTIALS: | |
${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }} | |
with: | |
snap: ${{ steps.build.outputs.snap }} | |
release: edge | |
build-python-wheels: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: [macos-latest, windows-latest] | |
include: | |
- os: ubuntu-latest | |
target: x86_64 | |
- os: ubuntu-latest | |
target: aarch64 | |
- os: ubuntu-latest | |
target: source | |
steps: | |
- name: 📂 Checkout code | |
uses: actions/checkout@v4 | |
- uses: ./.github/actions/build-prql-python | |
with: | |
target: ${{ matrix.target }} | |
publish-prql-python: | |
runs-on: ubuntu-latest | |
needs: [build-python-wheels] | |
if: github.event_name == 'release' | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: wheels | |
- name: Publish to PyPI | |
uses: messense/maturin-action@v1 | |
env: | |
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} | |
with: | |
command: upload | |
args: --skip-existing * | |
publish-prql-js: | |
runs-on: ubuntu-latest | |
steps: | |
- name: 📂 Checkout code | |
uses: actions/checkout@v4 | |
- uses: baptiste0928/cargo-install@v2 | |
with: | |
crate: wasm-pack | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
registry-url: "https://registry.npmjs.org" | |
# This is only required in order to have `cross-env` installed, since `npx | |
# cross-env` doesn't seem to work in CI (https://github.com/PRQL/prql/pull/3728) | |
- run: npm install | |
working-directory: prqlc/bindings/js/ | |
- run: | |
npm publish ${{ (github.event_name != 'release') && '--dry-run' || '' | |
}} | |
working-directory: prqlc/bindings/js/ | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
publish-to-cargo: | |
runs-on: ubuntu-latest | |
steps: | |
- name: 📂 Checkout code | |
uses: actions/checkout@v4 | |
- uses: baptiste0928/cargo-install@v2 | |
with: | |
crate: cargo-release | |
# Currently, we can only check prqlc-ast which is not dependent other local crates with --dry-run. | |
# https://github.com/crate-ci/cargo-release/issues/691 | |
# --no-verify is required to prevent build. | |
- run: | |
cargo release publish --no-confirm ${{ github.event_name == 'release' | |
&& '--execute' || '--no-verify --package prqlc-ast'}} | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
# Requires another pass: https://github.com/PRQL/prql/issues/850 | |
# publish-prql-java: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Checkout code | |
# uses: actions/checkout@v4 | |
# - name: Install Java and Maven | |
# uses: actions/setup-java@v3 | |
# with: | |
# java-version: 8 | |
# - name: Release Maven package | |
# uses: samuelmeuli/action-maven-publish@v1 | |
# with: | |
# gpg_private_key: ${{ secrets.gpg_private_key }} | |
# gpg_passphrase: ${{ secrets.gpg_passphrase }} | |
# nexus_username: ${{ secrets.nexus_username }} | |
# nexus_password: ${{ secrets.nexus_password }} | |
# directory: prql-java/java/ | |
push-web-branch: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'release' | |
steps: | |
- name: 📂 Checkout code | |
uses: actions/checkout@v4 | |
- run: git push origin HEAD:web --force | |
push-devcontainer: | |
if: github.event_name == 'release' | |
uses: ./.github/workflows/build-devcontainer.yaml | |
with: | |
# TOOD: I think having this as a bool is OK, but check a recent release | |
# from 0.10.0 and confirm that it is indeed pushing the image. | |
push: true |