Skip to content

Release

Release #88

Workflow file for this run

name: Binary Release
permissions: write-all
on:
# push:
# branches:
# - main
workflow_run:
workflows: ["Cargo Test"]
types:
- completed
jobs:
prepare-release:
runs-on:
labels: movement-runner
outputs:
release_tag: ${{ steps.create_tag.outputs.tag }}
release_url: ${{ steps.create_release.outputs.upload_url }}
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Bump version and push tag
id: create_tag
uses: anothrNick/[email protected] # Don't use @master or @v1 unless you're happy to test the latest version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # if you don't want to set write permissions use a PAT token
WITH_V: false
DEFAULT_BUMP: patch
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ steps.create_tag.outputs.tag }}
release_name: Release ${{ steps.create_tag.outputs.tag }}
body: Release ${{ steps.create_tag.outputs.tag }}
draft: false
pre-release-x86_64-linux:
needs: prepare-release
runs-on:
labels: movement-runner
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.70.0
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential
- name: Install aarch64 target
run: rustup target add aarch64-unknown-linux-gnu
- name: Debugging Info
run: |
echo $PATH
gcc --version
ld --version
- name: Build binaries
run: |
cd "$GITHUB_WORKSPACE/m1"
cargo clean
RUSTFLAGS="--cfg tokio_unstable" cargo build --release
- name: Upload subnet
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./m1/target/release/subnet
asset_name: subnet-x86_64-linux
asset_content_type: application/octet-stream
- name: Upload movement
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./m1/target/release/movement
asset_name: movement-x86_64-linux
asset_content_type: application/octet-stream
pre-release-x86_64-mac:
if: false # not yet supported
needs: prepare-release
runs-on:
labels: movement-runner
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential
- name: Install oxcross
run: |
git clone https://github.com/tpoechtrager/osxcross
cd osxcross
wget -nc https://s3.dockerproject.org/darwin/v2/MacOSX10.10.sdk.tar.xz
mv MacOSX10.10.sdk.tar.xz tarballs/
UNATTENDED=yes OSX_VERSION_MIN=10.7 ./build.sh
- name: Set up Rust for Mac
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.70.0
target: x86_64-apple-darwin
- name: Build Mac binaries
run: |
cd "$GITHUB_WORKSPACE/m1"
cargo build --release --target x86_64-apple-darwin
- name: Upload subnet
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./m1/target/release/subnet
asset_name: subnet-x86_64-mac
asset_content_type: application/octet-stream
- name: Upload movement
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./m1/target/release/movement
asset_name: movement-x86_64-mac
asset_content_type: application/octet-stream
pre-release-aarch64-linux:
if: false # not yet supported
needs: prepare-release
runs-on:
labels: movement-runner
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build Docker image with ARM64 binaries using buildx
run: |
docker buildx create --use
docker buildx build --platform linux/arm64 -o type=local,dest=./output -f ./docker/aarch64-linux.buildx.dockerfile .
# After the build, the binaries are in the ./output/app/m1/target/aarch64-unknown-linux-gnu/release directory. Copy them to the desired location.
- name: Copy compiled binaries
run: |
cp ./output/app/m1/target/aarch64-unknown-linux-gnu/release/subnet ./subnet-aarch64-linux
cp ./output/app/m1/target/aarch64-unknown-linux-gnu/release/movement ./movement-aarch64-linux
- name: Upload subnet
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./subnet-aarch64-linux
asset_name: subnet-aarch64-linux
asset_content_type: application/octet-stream
- name: Upload movement
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./movement-aarch64-linux
asset_name: movement-aarch64-linux
asset_content_type: application/octet-stream
pre-release-aarch64-mac:
if: false # not yet supported
needs: prepare-release
runs-on:
labels: movement-runner
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Install oxcross
run: |
git clone https://github.com/tpoechtrager/osxcross
cd osxcross
wget -nc https://s3.dockerproject.org/darwin/v2/MacOSX10.10.sdk.tar.xz
mv MacOSX10.10.sdk.tar.xz tarballs/
UNATTENDED=yes OSX_VERSION_MIN=10.7 ./build.sh
- name: Set up Rust for Mac ARM64
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.70.0
target: aarch64-apple-darwin
- name: Build Mac ARM64 binaries
run: |
cd "$GITHUB_WORKSPACE/m1"
cargo build --release --target aarch64-apple-darwin
- name: Upload subnet
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./m1/target/release/subnet
asset_name: subnet-aarch64-mac
asset_content_type: application/octet-stream
- name: Upload movement
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./m1/target/release/movement
asset_name: movement-aarch64-mac
asset_content_type: application/octet-stream
pre-release-x86_64-windows:
if: false # not yet supported
needs: prepare-release
runs-on:
labels: movement-runner
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Add mingw
run: apt-get install -y mingw-w64
- name: Set up Rust for Windows
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.70.0
target: x86_64-pc-windows-gnu
- name: Build Windows binaries
run: |
cd "$GITHUB_WORKSPACE/m1"
cargo build --release --target x86_64-pc-windows-gnu
- name: Upload subnet
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./m1/target/release/subnet
asset_name: subnet-x86_64-windows
asset_content_type: application/octet-stream
- name: Upload movement
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare-release.outputs.release_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this reference for more info: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsid
asset_path: ./m1/target/release/movement
asset_name: movement-x86_64-windows
asset_content_type: application/octet-stream
build-and-docker:
if:
needs:
- prepare-release
- pre-release-x86_64-linux
- pre-release-aarch64-linux
runs-on:
labels: movement-runner
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: ClI-only container
env:
DOCKER_HUB_REPOSITORY: mvlbs/m1-cli # Change to your Docker Hub repository name
IMAGE_TAG: ${{ needs.prepare-release.outputs.release_tag }} # Or any other tag you'd like
run: |
docker buildx create --use
docker buildx build --build-arg VERSION=${{ needs.prepare-release.outputs.release_tag }} -f ./docker/cli.dockerfile --platform linux/amd64,linux/arm64 -t $DOCKER_HUB_REPOSITORY:$IMAGE_TAG -t latest . --push
- name: Full developer container
env:
DOCKER_HUB_REPOSITORY: mvlbs/m1-dev # Change to your Docker Hub repository name
IMAGE_TAG: ${{ needs.prepare-release.outputs.release_tag }} # Or any other tag you'd like
run: |
docker buildx create --use
docker buildx build --build-arg VERSION=${{ needs.prepare-release.outputs.release_tag }} -f ./docker/dev.dockerfile --platform linux/amd64,linux/arm64 -t $DOCKER_HUB_REPOSITORY:$IMAGE_TAG -t latest . --push
- name: General container # for now this is just the dev container
env:
DOCKER_HUB_REPOSITORY: mvlbs/m1 # Change to your Docker Hub repository name
IMAGE_TAG: ${{ needs.prepare-release.outputs.release_tag }} # Or any other tag you'd like
run: |
docker buildx create --use
docker buildx build --build-arg VERSION=${{ needs.prepare-release.outputs.release_tag }} -f ./docker/dev.dockerfile --platform linux/amd64,linux/arm64 -t $DOCKER_HUB_REPOSITORY:$IMAGE_TAG -t latest . --push