Revert "feat: reusee workflow" #2197
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: Build | |
on: | |
push: | |
branches: | |
- "**" | |
pull_request: | |
branches: [main] | |
types: [opened, reopened, synchronize] | |
pull_request_target: | |
types: [opened, reopened, synchronize] | |
release: | |
types: [published] | |
permissions: | |
contents: read | |
jobs: | |
check_if_build: | |
name: Check if Build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1000 | |
- id: check | |
run: | | |
chmod +x .github/scripts/check_if_build.sh | |
.github/scripts/check_if_build.sh | |
outputs: | |
check_if_build: ${{ steps.check.outputs.check_if_build }} | |
test: | |
name: Run Tests | |
if: (github.event_name == 'pull_request') || (github.event_name == 'push' && github.ref == 'refs/heads/main') || (github.event_name == 'release' && github.event.action == 'published') | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: taiki-e/install-action@cargo-llvm-cov | |
- name: Install Stable Toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
default: true | |
- name: Cache Rust Dependencies | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo- | |
- name: Run Cargo Test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: llvm-cov | |
args: --all-features --lcov --output-path lcov.info | |
- name: Upload Coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos | |
files: lcov.info | |
fail_ci_if_error: true | |
format: | |
name: Run Formatter and Lint Check | |
if: (github.event_name == 'pull_request') || (github.event_name == 'push' && github.ref == 'refs/heads/main') || (github.event_name == 'release' && github.event.action == 'published') | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
- name: Install Prettier | |
run: npm install --global prettier | |
- name: Install Nightly Toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
components: rustfmt, clippy | |
- name: Cache Rust Dependencies | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- uses: actions/checkout@v4 | |
- name: Run Lint Script | |
run: ./lint.sh --mode=check | |
draft_release: | |
name: Draft Release | |
if: (github.event_name == 'pull_request_target') || (github.event_name == 'push' && github.ref == 'refs/heads/main') || (github.event_name == 'release' && github.event.action == 'published') | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pull-requests: write | |
steps: | |
- name: Checkout Current Branch (Fast) | |
uses: actions/checkout@v4 | |
- id: create_release | |
uses: release-drafter/release-drafter@v5 | |
if: (github.event_name == 'pull_request_target') || (github.event_name == 'push' && github.ref == 'refs/heads/main') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
config-name: release-drafter.yml | |
- name: Set Output for Later Jobs | |
id: set_output | |
run: | | |
echo "create_release_name=${{ steps.create_release.outputs.name }}" >> $GITHUB_OUTPUT | |
echo "create_release_id=${{ steps.create_release.outputs.id }}" >> $GITHUB_OUTPUT | |
outputs: | |
create_release_name: ${{ steps.set_output.outputs.create_release_name }} | |
create_release_id: ${{ steps.set_output.outputs.create_release_id }} | |
release: | |
name: Release | |
needs: [test, format, draft_release, check_if_build] | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' && (needs.check_if_build.outputs.check_if_build == 'true') || (github.event_name == 'release' && github.event.action == 'published') | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
build: | |
[ | |
linux-x64-gnu, | |
linux-x64-musl, | |
linux-arm64-gnu, | |
linux-arm64-musl, | |
linux-ia32-gnu, | |
darwin-arm64, | |
darwin-x64, | |
win32-x64-msvc, | |
win32-x64-gnu, | |
win32-arm64-msvc, | |
win32-ia32-gnu, | |
] | |
include: | |
- build: linux-x64-gnu | |
os: ubuntu-latest | |
rust: stable | |
target: x86_64-unknown-linux-gnu | |
libc: glibc | |
cross: false | |
- build: linux-x64-musl | |
os: ubuntu-latest | |
rust: stable | |
target: x86_64-unknown-linux-musl | |
libc: musl | |
cross: true | |
- build: linux-arm64-gnu | |
os: ubuntu-latest | |
rust: stable | |
target: aarch64-unknown-linux-gnu | |
libc: glibc | |
cross: true | |
- build: linux-arm64-musl | |
os: ubuntu-latest | |
rust: stable | |
target: aarch64-unknown-linux-musl | |
libc: musl | |
cross: true | |
- build: linux-ia32-gnu | |
os: ubuntu-latest | |
rust: stable | |
target: i686-unknown-linux-gnu | |
libc: glibc | |
cross: true | |
- build: darwin-arm64 | |
os: macos-latest | |
rust: stable | |
target: aarch64-apple-darwin | |
- build: darwin-x64 | |
os: macos-latest | |
rust: stable | |
target: x86_64-apple-darwin | |
cross: false | |
- build: win32-x64-msvc | |
os: windows-latest | |
rust: stable | |
target: x86_64-pc-windows-msvc | |
libc: msvc | |
ext: ".exe" | |
- build: win32-x64-gnu | |
os: windows-latest | |
rust: stable | |
target: x86_64-pc-windows-gnu | |
libc: glibc | |
ext: ".exe" | |
- build: win32-arm64-msvc | |
os: windows-latest | |
rust: stable | |
target: aarch64-pc-windows-msvc | |
libc: msvc | |
ext: ".exe" | |
- build: win32-ia32-gnu | |
os: ubuntu-latest | |
rust: stable | |
target: i686-pc-windows-gnu | |
cross: true | |
libc: glibc | |
ext: ".exe" | |
permissions: | |
contents: write | |
pull-requests: write | |
env: | |
GITHUB_TOKEN: ${{secrets.GITHUBTOKEN}} | |
APP_VERSION: ${{ (github.event_name == 'release' && github.event.action == 'published') && github.event.release.tag_name || needs.draft_release.outputs.create_release_name }} | |
steps: | |
- name: Checkout Current Branch (Fast) | |
uses: actions/checkout@v4 | |
- name: Install Correct Toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
targets: ${{ matrix.target }} | |
- name: Build | |
env: | |
APP_VERSION: ${{ (github.event_name == 'release' && github.event.action == 'published') && github.event.release.tag_name || needs.draft_release.outputs.create_release_name}} | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
uses: actions-rs/cargo@v1 | |
with: | |
use-cross: ${{ matrix.cross }} | |
command: build | |
args: --release --target ${{ matrix.target }} | |
- name: Install Node.js | |
if: github.event_name == 'release' && github.event.action == 'published' | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
registry-url: https://registry.npmjs.org | |
- name: Install dependencies | |
if: github.event_name == 'release' && github.event.action == 'published' | |
run: | | |
cd npm | |
npm install | |
- name: Run generate.js script | |
if: github.event_name == 'release' && github.event.action == 'published' | |
run: | | |
cd npm | |
npm run gen -- --target ${{matrix.target}} --version ${{ env.APP_VERSION }} --build ${{matrix.build}} --ext ${{ matrix.ext || '' }} --libc ${{ matrix.libc }} | |
- name: Setup .npmrc file to publish to npm | |
run: echo "//registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN" > ~/.npmrc | |
- name: NPM Publish | |
if: github.event_name == 'release' && github.event.action == 'published' | |
uses: JS-DevTools/npm-publish@v3 | |
with: | |
token: ${{ secrets.NPM_TOKEN }} | |
package: npm/@tailcallhq/core-${{matrix.build}} | |
access: public | |
- name: Rename Binary with Target Name | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
run: | | |
pwd | |
cp target/${{ matrix.target }}/release/tailcall${{ matrix.ext }} target/${{ matrix.target }}/release/tailcall-${{ matrix.target }}${{ matrix.ext }} | |
- name: Upload ${{ matrix.target }} Binary | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
uses: xresloader/upload-to-github-release@v1 | |
with: | |
release_id: ${{ needs.draft_release.outputs.create_release_id }} | |
file: target/${{ matrix.target }}/release/tailcall-${{ matrix.target }}${{ matrix.ext }} | |
overwrite: true | |
publish_npm_root: | |
name: Publish NPM main package | |
needs: [draft_release, release] | |
if: github.event_name == 'release' && github.event.action == 'published' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Current Branch (Fast) | |
uses: actions/checkout@v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
registry-url: https://registry.npmjs.org | |
- name: Install dependencies | |
run: | | |
cd npm | |
npm install | |
- name: Run generate-root.js script | |
env: | |
APP_VERSION: ${{ (github.event_name == 'release' && github.event.action == 'published') && github.event.release.tag_name}} | |
run: | | |
cd npm | |
npm run gen-root -- --version ${{ env.APP_VERSION }} | |
- name: Setup .npmrc file to publish to npm | |
run: echo "//registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN" > ~/.npmrc | |
- name: Publish packages | |
uses: JS-DevTools/npm-publish@v3 | |
with: | |
token: ${{ secrets.NPM_TOKEN }} | |
package: npm/@tailcallhq/tailcall | |
access: public | |
env: | |
APP_VERSION: ${{ (github.event_name == 'release' && github.event.action == 'published') && github.event.release.tag_name || needs.draft_release.outputs.create_release_name }} | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |