Skip to content

Commit

Permalink
Refactor release workflow to use matrix
Browse files Browse the repository at this point in the history
  • Loading branch information
robertoaloi committed Sep 6, 2023
1 parent fb73ea6 commit 78bc311
Showing 1 changed file with 59 additions and 273 deletions.
332 changes: 59 additions & 273 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
name: ELP Release
on:
# release:
# types:
# - created
push: {}
jobs:
linux-release-otp-25:
runs-on: ubuntu-20.04
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"
Expand All @@ -16,35 +35,56 @@ jobs:
java: 'java11'
- name: Install Native Image Plugin
run: gu install native-image
- name: Install musl-tools for rust toolchain
- 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
- name: Set up rust toolchain (Linux Only)
if: matrix.os == 'linux'
uses: dtolnay/rust-toolchain@stable
with:
target: x86_64-unknown-linux-musl
- name: Install OTP
- 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: '25.2'
otp-version: ${{ matrix.otp-version }}
install-rebar: false
install-hex: false
- name: Install Erlang/OTP (MacOS Only)
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
run: "cd eqwalizer/eqwalizer; sbt assembly"
working-directory: eqwalizer/eqwalizer
run: "sbt assembly"
- name: Assemble eqwalizer binary
run: "cd eqwalizer/eqwalizer && native-image -H:IncludeResources=application.conf --no-server --no-fallback -jar target/scala-2.13/eqwalizer.jar eqwalizer"
- name: Test elp
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace --target x86_64-unknown-linux-musl"
- name: Assemble elp
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release --target x86_64-unknown-linux-musl"
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/x86_64-unknown-linux-musl/release" >> $GITHUB_PATH'
run: 'echo "$GITHUB_WORKSPACE/target/${{ matrix.target }}/release" >> $GITHUB_PATH'
- name: Test eqwalizer
run: 'cd eqwalizer && sbt test'
- name: Upload eqwalizer.jar
Expand All @@ -57,21 +97,21 @@ jobs:
with:
name: eqwalizer
path: ./eqwalizer/eqwalizer/eqwalizer
- name: Make elp-linux.tar.gz
run: 'tar -zcvf elp-linux.tar.gz -C target/x86_64-unknown-linux-musl/release/ elp'
- 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-linux.tar.gz
# 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-linux.tar.gz
# asset_path: elp-linux.tar.gz
# 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
Expand All @@ -97,263 +137,9 @@ jobs:
# uses: "actions/[email protected]"
# with:
# asset_content_type: application/octet-stream
# asset_name: elp-linux-otp-25.vsix
# 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 }}
linux-release-otp-23:
needs:
- linux-release-otp-25
runs-on: ubuntu-20.04
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
uses: dtolnay/rust-toolchain@stable
with:
target: x86_64-unknown-linux-musl
- name: Install OTP
uses: erlef/setup-beam@v1
with:
otp-version: '23.3'
install-rebar: false
install-hex: false
- 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: Download eqwalizer.jar
uses: "actions/download-artifact@v2"
with:
name: eqwalizer.jar
path: eqwalizer/eqwalizer/target/scala-2.13
- name: Assemble eqwalizer binary
run: "cd eqwalizer/eqwalizer && native-image -H:IncludeResources=application.conf --no-server --no-fallback -jar target/scala-2.13/eqwalizer.jar eqwalizer"
- name: Test elp
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace --target x86_64-unknown-linux-musl"
- name: Assemble elp
run: "export ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release --target x86_64-unknown-linux-musl"
- name: Make elp-linux-otp-23.tar.gz
run: 'tar -zcvf elp-linux-otp-23.tar.gz -C target/x86_64-unknown-linux-musl/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-linux-otp-23.tar.gz
# uses: "actions/[email protected]"
# with:
# asset_content_type: application/octet-stream
# asset_name: elp-linux-otp-23.tar.gz
# asset_path: elp-linux-otp-23.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-linux-otp-23.vsix
# asset_path: editors/code/erlang-language-platform.vsix
# upload_url: "${{ steps.get_release_url.outputs.upload_url }}"
macos-release-otp-25:
needs:
- linux-release-otp-25
runs-on: macos-latest
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 erlang
run: brew install erlang@25
- name: Install rebar3
run: "mkdir rebar3 && curl https://s3.amazonaws.com/rebar3/rebar3 -o rebar3/rebar3 && chmod +x rebar3/rebar3"
- name: Set up rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Download eqwalizer.jar
uses: "actions/download-artifact@v2"
with:
name: eqwalizer.jar
path: eqwalizer/eqwalizer/target/scala-2.13
- name: Assemble eqwalizer binary
run: "cd eqwalizer/eqwalizer && native-image -H:IncludeResources=application.conf --no-server --no-fallback -jar target/scala-2.13/eqwalizer.jar eqwalizer"
- name: Test elp
run: "export PATH=$GITHUB_WORKSPACE/rebar3:/usr/local/opt/erlang@25/bin:$PATH ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace"
- name: Assemble elp
run: "export PATH=$GITHUB_WORKSPACE/rebar3:/usr/local/opt/erlang@25/bin:$PATH ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release"
- name: Make elp-macos.tar.gz
run: 'tar -zcvf elp-macos.tar.gz -C 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-macos.tar.gz
# uses: "actions/[email protected]"
# with:
# asset_content_type: application/octet-stream
# asset_name: elp-macos.tar.gz
# asset_path: elp-macos.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
run: mv editors/code/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-macos-otp-25.vsix
# asset_path: editors/code/erlang-language-platform.vsix
# upload_url: "${{ steps.get_release_url.outputs.upload_url }}"
macos-release-otp-23:
needs:
- linux-release-otp-25
runs-on: macos-latest
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 erlang
run: brew install erlang@23
- name: Install rebar3
run: "mkdir rebar3 && curl https://s3.amazonaws.com/rebar3/rebar3 -o rebar3/rebar3 && chmod +x rebar3/rebar3"
- name: Set up rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Download eqwalizer.jar
uses: "actions/download-artifact@v2"
with:
name: eqwalizer.jar
path: eqwalizer/eqwalizer/target/scala-2.13
- name: Assemble eqwalizer binary
run: "cd eqwalizer/eqwalizer && native-image -H:IncludeResources=application.conf --no-server --no-fallback -jar target/scala-2.13/eqwalizer.jar eqwalizer"
- name: Test elp
run: "export PATH=$GITHUB_WORKSPACE/rebar3:/usr/local/opt/erlang@23/bin:$PATH ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace"
- name: Assemble elp
run: "export PATH=$GITHUB_WORKSPACE/rebar3:/usr/local/opt/erlang@23/bin:$PATH ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release"
- name: Make elp-macos-otp-23.tar.gz
run: 'tar -zcvf elp-macos-otp-23.tar.gz -C 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-macos-otp-23.tar.gz
# uses: "actions/[email protected]"
# with:
# asset_content_type: application/octet-stream
# asset_name: elp-macos-otp-23.tar.gz
# asset_path: elp-macos-otp-23.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
run: mv editors/code/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-macos-otp-23.vsix
# asset_path: erlang-language-platform.vsix
# upload_url: "${{ steps.get_release_url.outputs.upload_url }}"
name: erlang-language-platform release
on:
# release:
# types:
# - created
push: {}

0 comments on commit 78bc311

Please sign in to comment.