Refactor release workflow to use matrix #13
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
name: ELP Release | |
on: | |
# release: | |
# types: | |
# - created | |
push: {} | |
jobs: | |
release: | |
strategy: | |
matrix: | |
platform: [ubuntu-20.04, macos-latest] | |
otp-version: [25.2] | |
include: | |
- otp-version: 25.2 | |
brew-otp-version: 25 | |
- platform: ubuntu-20.04 | |
os: linux | |
target: x86_64-unknown-linux-musl | |
- platform: macos-latest | |
os: macos | |
target: '' | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- name: Checkout erlang-language-platform | |
uses: "actions/checkout@v3" | |
- name: Checkout eqwalizer | |
uses: "actions/checkout@v3" | |
with: | |
repository: WhatsApp/eqwalizer | |
path: eqwalizer | |
- name: Set up GraalVM | |
uses: "DeLaGuardo/[email protected]" | |
with: | |
graalvm: '22.1.0' | |
java: 'java11' | |
- name: Install Native Image Plugin | |
run: gu install native-image | |
- name: Install musl-tools for rust toolchain (Linux Only) | |
if: matrix.os == 'linux' | |
uses: awalsh128/cache-apt-pkgs-action@latest | |
with: | |
packages: musl-tools | |
version: 1.0 | |
- name: Set up rust toolchain (Linux Only) | |
if: matrix.os == 'linux' | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
target: x86_64-unknown-linux-musl | |
- name: Set up rust toolchain (MacOS Only) | |
if: matrix.os == 'macos' | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
target: ${{ matrix.target }} | |
- name: Install Erlang/OTP (Linux Only) | |
if: matrix.os == 'linux' | |
uses: erlef/setup-beam@v1 | |
with: | |
otp-version: ${{ matrix.otp-version }} | |
install-rebar: true | |
install-hex: false | |
- name: Install Erlang/OTP (MacOS Only) | |
if: matrix.os == 'macos' | |
run: brew install erlang@${{ matrix.brew-otp-version }} | |
- name: Assemble eqwalizer.jar | |
working-directory: eqwalizer/eqwalizer | |
run: "sbt assembly" | |
- name: Assemble eqwalizer binary | |
working-directory: eqwalizer/eqwalizer | |
run: "native-image -H:IncludeResources=application.conf --no-server --no-fallback -jar target/scala-2.13/eqwalizer.jar eqwalizer" | |
- name: Test elp (Linux Only) | |
if: matrix.os == 'linux' | |
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace --target ${{ matrix.target }}" | |
- name: Test elp (MacOS Only) | |
if: matrix.os == 'macos' | |
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace" | |
- name: Assemble elp (Linux Only) | |
if: matrix.os == 'linux' | |
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release --target ${{ matrix.target }}" | |
- name: Assemble elp (MacOS Only) | |
if: matrix.os == 'macos' | |
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release" | |
- name: Add elp to path | |
run: 'echo "$GITHUB_WORKSPACE/target/${{ matrix.target }}/release" >> $GITHUB_PATH' | |
- name: Test eqwalizer | |
run: 'cd eqwalizer && sbt test' | |
- name: Upload eqwalizer.jar | |
uses: "actions/upload-artifact@v2" | |
with: | |
name: eqwalizer.jar | |
path: eqwalizer/eqwalizer/target/scala-2.13/eqwalizer.jar | |
- name: Upload eqwalizer native binary | |
uses: "actions/upload-artifact@v2" | |
with: | |
name: eqwalizer | |
path: ./eqwalizer/eqwalizer/eqwalizer | |
- name: Make elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.tar.gz | |
run: 'tar -zcvf elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.tar.gz -C target/${{ matrix.target }}/release/ elp' | |
- env: | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
id: get_release_url | |
name: Get release url | |
uses: "bruceadams/[email protected]" | |
# - env: | |
# GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
# name: Upload release elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.tar.gz | |
# uses: "actions/[email protected]" | |
# with: | |
# asset_content_type: application/octet-stream | |
# asset_name: elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.tar.gz | |
# asset_path: elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.tar.gz | |
# upload_url: "${{ steps.get_release_url.outputs.upload_url }}" | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Install VSCE | |
run: npm install -g vsce | |
- name: npm install | |
working-directory: editors/code | |
run: npm install | |
- name: npm run compile | |
working-directory: editors/code | |
run: npm run compile | |
- name: Package Extension | |
working-directory: editors/code | |
run: vsce package | |
- name: Rename Package | |
working-directory: editors/code | |
run: mv erlang-language-platform-*.vsix erlang-language-platform.vsix | |
# - env: | |
# GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
# name: Upload Extension Package | |
# uses: "actions/[email protected]" | |
# with: | |
# asset_content_type: application/octet-stream | |
# asset_name: elp-${{ matrix.os }}-otp-${{ matrix.otp-version }}.vsix | |
# asset_path: editors/code/erlang-language-platform.vsix | |
# upload_url: "${{ steps.get_release_url.outputs.upload_url }}" | |
# - name: Publish extension to marketplace | |
# working-directory: editors/code | |
# run: vsce publish -p ${{ secrets.VSCE_PAT }} |