name: Release
on:
push:
branches: [ "main" ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: '${{ matrix.os }}'
strategy:
matrix:
include:
- os: macos-latest
target: x86_64-apple-darwin
suffix: ''
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
suffix: ''
- os: windows-latest
target: x86_64-pc-windows-msvc
suffix: '.exe'
steps:
- uses: actions/checkout@master
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: build
run: cargo build --release
- uses: actions/upload-artifact@v4
with:
name: jawk-${{ matrix.target }}
path: ./target/release/jawk${{ matrix.suffix }}
retention-days: 1
build-musl-and-docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: install musl
run: rustup target add x86_64-unknown-linux-musl
- name: build
run: cargo build --release --target=x86_64-unknown-linux-musl
- uses: actions/upload-artifact@v4
with:
name: jawk-x86_64-unknown-linux-musl
path: ./target/x86_64-unknown-linux-musl/release/jawk
retention-days: 1
- name: Copy binary
run: |
rm -rf ./docker/target
mkdir -p ./docker/target
cp ./target/x86_64-unknown-linux-musl/release/jawk ./docker/target/jawk
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: docker
push: true
tags: yiftach/jawk:latest,yiftach/jawk:0.1
produce-book-and-publish:
needs:
- build-musl-and-docker
- build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: build
run: cargo build --features=create-docs
- name: create book
run: target/debug/jawk -a mk-book
- uses: actions/download-artifact@v4
with:
pattern: jawk-*
path: target/docs/book/book/
- uses: Dylan700/sftp-upload-action@latest
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSSWORD }}
port: 22
uploads: |
target/docs/book/book/ => ./
cargo-publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- uses: katyo/publish-crates@v2
with:
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}