Skip to content

Commit

Permalink
Use Cirrus CI to build the toolchain
Browse files Browse the repository at this point in the history
  • Loading branch information
adonis0147 committed Jan 30, 2023
1 parent 19c0d33 commit 1c76bad
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 42 deletions.
18 changes: 12 additions & 6 deletions .cirrus.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
build_packages_task:
only_if: ${CIRRUS_TAG} == ''

container:
image: centos:centos7
cpu: 4
memory: 8G
matrix:
- name: 'Linux x86_64'
container:
image: centos:centos7
cpu: 4
memory: 8G
- name: 'Linux aarch64'
arm_container:
image: centos:centos7
cpu: 4
memory: 8G

clone_script: |
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum update -y && yum upgrade -y
yum install -y git
Expand All @@ -19,7 +25,7 @@ build_packages_task:
cd devel-env
while read -r tag; do
url="https://github.com/adonis0147/devel-env/releases/download/${tag}/install_toolchain.sh"
url="https://github.com/adonis0147/devel-env/releases/download/${tag}/install_toolchain_$(uname -m).sh"
if curl --silent --head --fail -L "${url}" -o /dev/null; then
break
fi
Expand Down
1 change: 1 addition & 0 deletions .github/cirrus-ci-tools
Submodule cirrus-ci-tools added at b6c387
28 changes: 28 additions & 0 deletions .github/cirrus-ci/build_toolchain.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
build_toolchain_task:
timeout_in: 120m

compute_engine_instance:
platform: linux
cpu: 4
memory: 8G
image_project: cirrus-images
matrix:
- name: 'Linux x86_64'
image: family/docker-builder
- name: 'Linux aarch64'
image: family/docker-builder-arm64
architecture: arm64

clone_script: |
git clone -b "${CIRRUS_BRANCH}" https://github.com/adonis0147/devel-env
script: |
cd devel-env/toolchain
docker build -t toolchain .
docker run --rm --mount type=bind,source="$(pwd)",target=/output toolchain
mkdir -p "${CIRRUS_WORKING_DIR}/output"
mv "install_toolchain.sh" "${CIRRUS_WORKING_DIR}/output/install_toolchain_$(uname -m).sh"
artifacts:
path: output/install_toolchain_*.sh
11 changes: 7 additions & 4 deletions .github/templates/release.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
## Install GCC Toolchain
```shell
bash install_toolchain.sh PATH
# For x86_64 platform
bash install_toolchain_x86_64.sh PATH

# For aarch64 platform
bash install_toolchain_aarch64.sh PATH
```

## MD5 Checksums
```
MD5_CHECKSUMS install_toolchain.sh
<MD5SUM>
```

## SHA256 Checksums
```
SHA256_CHECKSUMS install_toolchain.sh
<SHA256SUM>
```

57 changes: 25 additions & 32 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,9 @@ on:
- '*'

jobs:
Build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Build
run: |
cd toolchain
docker build --platform=linux/x86-64 -t toolchain .
mkdir output
docker run --platform=linux/x86-64 --rm --mount type=bind,source="$(pwd)/output",target=/output toolchain
- name: Upload
uses: actions/upload-artifact@v3
with:
name: toolchain
path: toolchain/output/install_toolchain.sh

Publish:
runs-on: ubuntu-latest
needs: [build]
environment: CIRRUS-CI
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -36,20 +17,32 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Download
uses: actions/download-artifact@v3
with:
name: toolchain
path: output
ref: ${{ github.ref_name }}
submodules: true

- name: Cirrus CI Build
run: |
trigger='.github/cirrus-ci-tools/src/trigger-cirrus-ci.py'
config='.github/cirrus-ci/build_toolchain.yml'
urls="$(python3 "${trigger}" --token ${{ secrets.CIRRUS_CI_TOKEN }} --repository ${{ github.repository }} \
--branch master --config "${config}" --timeout 240)"
while read -r url; do
echo "The artifact url: ${url}"
curl -L ${url} -o binary.zip
unzip binary.zip
done <<<"${urls}"
- name: Release
- name: Upload
run: |
tag_name="${{ github.ref }}"
tag_name="${tag_name#refs/tags/}"
content="$(cat .github/templates/release.md)"
pushd output >/dev/null
content="${content/<MD5SUM>/$(md5sum *)}"
content="${content/<SHA256SUM>/$(sha256sum *)}"
popd >/dev/null
md5="$(md5sum output/install_toolchain.sh | awk '{print $1}')"
sha256="$(sha256sum output/install_toolchain.sh | awk '{print $1}')"
cat .github/templates/release.md | sed "s/MD5_CHECKSUMS/${md5}/;s/SHA256_CHECKSUMS/${sha256}/" >release.md
echo "${content}" >note.md
gh release create -t "devel-env ${tag_name}" "${tag_name}" -F release.md output/install_toolchain.sh
gh release create -t "devel-env ${{ github.ref_name }}" -F note.md ${{ github.ref_name }} output/*
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule ".github/cirrus-ci-tools"]
path = .github/cirrus-ci-tools
url = https://github.com/adonis0147/cirrus-ci-tools

0 comments on commit 1c76bad

Please sign in to comment.