Refactor release workflow to use matrix #9
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 | |
uses: awalsh128/cache-apt-pkgs-action@latest | |
with: | |
packages: musl-tools | |
version: 1.0 | |
- name: Set up rust toolchain | |
if: matrix.os == 'linux' | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
target: x86_64-unknown-linux-musl | |
- name: Set up rust toolchain | |
if: matrix.os == 'macos' | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
target: ${{ matrix.target }} | |
- name: Install Erlang/OTP | |
if: matrix.os == 'linux' | |
uses: erlef/setup-beam@v1 | |
with: | |
otp-version: ${{ matrix.otp-version }} | |
install-rebar: false | |
install-hex: false | |
- name: Install Erlang/OTP | |
if: matrix.os == 'macos' | |
run: brew install erlang@${{ matrix.brew-otp-version }} | |
- name: Install rebar3 | |
run: "curl https://s3.amazonaws.com/rebar3/rebar3 -o rebar3 && chmod +x rebar3" | |
- name: "add rebar3 to path" | |
run: 'echo "$GITHUB_WORKSPACE/rebar3" >> $GITHUB_PATH' | |
- 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 | |
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 | |
if: matrix.os == 'macos' | |
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace" | |
- name: Assemble elp | |
if: matrix.os == 'linux' | |
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release --target ${{ matrix.target }}" | |
- name: Assemble elp | |
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 }} |