Skip to content

Revert "feat: reusee workflow" #2197

Revert "feat: reusee workflow"

Revert "feat: reusee workflow" #2197

Workflow file for this run

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 }}