Skip to content

Release

Release #310

Workflow file for this run

name: Release
permissions: write-all
on:
workflow_dispatch:
jobs:
prepare-release:
runs-on:
labels: movement-runner
outputs:
release_tag: ${{ steps.create_tag.outputs.tag }}
release_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
token: ${{ secrets.CI_PAT }}
ref: ${{ github.event.inputs.branch }}
- name: Set up Branch Name
id: branch_name
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV
- name: Bump version and push tag
id: create_tag
uses: anothrNick/github-tag-action@1.64.0 # 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: Archive Repository
run: |
mkdir -p $RUNNER_TEMP/assets
cp -r . $RUNNER_TEMP/assets/m1-with-submodules
tar -czvf $RUNNER_TEMP/assets/m1-with-submodules.tar.gz -C $RUNNER_TEMP/assets m1-with-submodules
cp $RUNNER_TEMP/assets/m1-with-submodules.tar.gz $GITHUB_WORKSPACE/m1-with-submodules.tar.gz
ls -al $GITHUB_WORKSPACE
- name: Set Release Info
id: set_release_info
run: |
if [ "${{ env.BRANCH_NAME }}" = "main" ]; then
echo "::set-output name=release_name::Release-${{ steps.create_tag.outputs.tag }}"
echo "::set-output name=body::Release-${{ steps.create_tag.outputs.tag }}"
else
echo "::set-output name=release_name::Release-${{ env.BRANCH_NAME }}-${{ steps.create_tag.outputs.tag }}"
echo "::set-output name=body::Release-${{ env.BRANCH_NAME }}-${{ steps.create_tag.outputs.tag }}"
fi
env:
BRANCH_NAME: ${{ github.ref_name }}
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.create_tag.outputs.tag }}
release_name: ${{ steps.set_release_info.outputs.release_name }}
body: ${{ steps.set_release_info.outputs.body }}
draft: false
prerelease: true
- name: Check
run: |
ls -al $GITHUB_WORKSPACE
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./m1-with-submodules.tar.gz
asset_name: m1-with-submodules.tar.gz
asset_content_type: application/gzip
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./networks/testnet/testnet-id
asset_name: testnet-id
asset_content_type: text/plain
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./networks/testnet/testnet-vmid
asset_name: testnet-vmid
asset_content_type: text/plain
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./networks/testnet/testnet-vmid
asset_name: testnet-cid
asset_content_type: text/plain
pre-release-x86_64-linux:
needs: prepare-release
runs-on:
labels: movement-runner
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
token: ${{ secrets.CI_PAT }}
- name: Setup
uses: ./.github/actions/setup-linux-x86_64
- name: Debugging Info
run: |
echo $PATH
gcc --version
ld --version
- name: Build binaries
run: |
cd "$GITHUB_WORKSPACE/m1"
cargo build --release
- name: Build Mac binaries
run: |
cd "$GITHUB_WORKSPACE/movement-sdk"
cargo build --release -p movement --features "aptos,sui"
- 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: ./movement-sdk/target/release/movement
asset_name: movement-x86_64-linux
asset_content_type: application/octet-stream
pre-release-x86_64-mac:
if: false
needs: prepare-release
runs-on:
labels: macos-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
token: ${{ secrets.CI_PAT }}
- name: Setup
uses: ./.github/actions/setup-macos-x86_64
- name: Build Mac binaries
run: |
cd "$GITHUB_WORKSPACE/m1"
cargo build --release
- name: Build Mac binaries
run: |
cd "$GITHUB_WORKSPACE/movement-sdk"
cargo build --release -p movement --features "aptos,sui"
- 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: ./movement-sdk/target/release/movement
asset_name: movement-x86_64-mac
asset_content_type: application/octet-stream
pre-release-aarch64-linux:
needs: prepare-release
runs-on:
labels: buildjet-8vcpu-ubuntu-2204-arm
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
token: ${{ secrets.CI_PAT }}
- name: Setup
uses: ./.github/actions/setup-linux-aarch64
- name: Build Mac binaries
run: |
cd "$GITHUB_WORKSPACE/m1"
cargo build --release
- name: Build Mac binaries
run: |
cd "$GITHUB_WORKSPACE/movement-sdk"
cargo build --release -p movement --features "aptos,sui"
- 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-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-sdk/target/release/movement
asset_name: movement-aarch64-linux
asset_content_type: application/octet-stream
pre-release-aarch64-mac:
# this is expensive, so only run on stage and main
# if: github.ref == 'refs/heads/stage' || github.ref == 'refs/heads/main'
if: false
needs: prepare-release
runs-on: macos-latest-xlarge
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
token: ${{ secrets.CI_PAT }}
- name: Setup
uses: ./.github/actions/setup-macos-aarch64
- name: Build Mac ARM64 binaries
run: |
cd "$GITHUB_WORKSPACE/m1"
cargo build --release --target aarch64-apple-darwin
pre-release-x86_64-windows:
if: false
needs: prepare-release
runs-on:
labels: windows-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
submodules: 'recursive'
token: ${{ secrets.CI_PAT }}
- name: Setup Windows
uses: ./.github/actions/setup-windows-x86_64
- name: Build Windows binaries
run: |
cd "$GITHUB_WORKSPACE/m1"
cargo build --release --target x86_64-pc-windows-gnu
- name: Build Windows binaries
run: |
cd "$GITHUB_WORKSPACE/movement-sdk"
cargo build --release -p movement --features "aptos,sui"
- 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: ./movement-sdk/target/release/movement
asset_name: movement-x86_64-windows
asset_content_type: application/octet-stream
build-and-docker:
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 $(if [ "${{ github.ref }}" = "refs/heads/main" ]; then echo "-t $DOCKER_HUB_REPOSITORY:latest"; fi) . --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 }}
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 $(if [ "${{ github.ref }}" = "refs/heads/main" ]; then echo "-t $DOCKER_HUB_REPOSITORY:latest"; fi) . --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 }}
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 $(if [ "${{ github.ref }}" = "refs/heads/main" ]; then echo "-t $DOCKER_HUB_REPOSITORY:latest"; fi) . --push
- name: Testnet container # for now this is just the dev container
env:
DOCKER_HUB_REPOSITORY: mvlbs/m1-testnet # Change to your Docker Hub repository name
IMAGE_TAG: ${{ needs.prepare-release.outputs.release_tag }}
run: |
docker buildx create --use
docker buildx build --build-arg VERSION=${{ needs.prepare-release.outputs.release_tag }} -f ./docker/testnet.dockerfile --platform linux/amd64,linux/arm64 -t $DOCKER_HUB_REPOSITORY:$IMAGE_TAG $(if [ "${{ github.ref }}" = "refs/heads/main" ]; then echo "-t $DOCKER_HUB_REPOSITORY:latest"; fi) . --push
run-tests:
needs:
- prepare-release
- build-and-docker
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
repository: movemntdev/movement-hack
- name: Execute install script
run: |
bash <(curl -fsSL https://raw.githubusercontent.com/movemntdev/M1/main/scripts/install.sh) --version ${{ needs.prepare-release.outputs.release_tag }}
echo "~/.movement/bin" >> $GITHUB_PATH
- name: Navigate and Run Movement Aptos Test
run: |
echo $GITHUB_PATH
cd examples/movement/data_structures
movement aptos move test
cd ../mini_dex
movement aptos move test