diff options
author | Cameron Katri <me@cameronkatri.com> | 2022-05-25 22:22:08 -0400 |
---|---|---|
committer | Cameron Katri <me@cameronkatri.com> | 2022-05-25 22:22:08 -0400 |
commit | 8424879bb0eaa524ab75e67260ed2da501fff618 (patch) | |
tree | 4c459c4bf2965d1ddd4270007be6575e2ee49bc0 | |
parent | 35de91afe0ea4b09277b78c36e595ea6472643a4 (diff) | |
download | trustcache-8424879bb0eaa524ab75e67260ed2da501fff618.tar.gz trustcache-8424879bb0eaa524ab75e67260ed2da501fff618.tar.zst trustcache-8424879bb0eaa524ab75e67260ed2da501fff618.zip |
Add actions and artifacts
-rw-r--r-- | .github/workflows/build.yml | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..61770c4 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,156 @@ +name: build +on: + push: + paths: + - '*.c' + - '.github/workflows/*' + - 'Makefile' + pull_request: + paths: + - '*.c' + - '.github/workflows/*' + - 'Makefile' + workflow_dispatch: + release: + types: + - created + +env: + OPENSSL_VERSION: 3.0.3 + SCCACHE_VERSION: 0.2.15 + +jobs: + build-linux: + runs-on: ubuntu-latest + strategy: + matrix: + triple: + - aarch64-linux-musl + - x86_64-linux-musl + + env: + TOOLCHAIN: ${{ matrix.triple }}-cross + TRIPLE: ${{ matrix.triple }} + + steps: + - uses: actions/checkout@v1 + with: + submodules: recursive + + - name: Cache Deps + uses: actions/cache@v3 + id: cache-deps + with: + path: | + ~/.cache/sccache + ~/dep_src + ~/build + key: build-linux-${{ matrix.triple }} + + - name: setup environment + run: | + export DOWNLOAD_PATH=${HOME}/dep_src + export DEP_PATH=${HOME}/build + mkdir -p ${DOWNLOAD_PATH} ${DEP_PATH} + echo "DOWNLOAD_PATH=${DOWNLOAD_PATH}" >> $GITHUB_ENV + echo "DEP_PATH=${DEP_PATH}" >> $GITHUB_ENV + echo "ARCH=$(echo ${{ matrix.triple }} | cut -d- -f 1)" >> $GITHUB_ENV + echo "${HOME}/${TOOLCHAIN}/bin" >> $GITHUB_PATH + echo "CC=sccache ${TRIPLE}-gcc" >> $GITHUB_ENV + echo "CXX=sccache ${TRIPLE}-g++" >> $GITHUB_ENV + echo "AR=${TRIPLE}-gcc-ar" >> $GITHUB_ENV + echo "NM=${TRIPLE}-gcc-nm" >> $GITHUB_ENV + echo "RANLIB=${TRIPLE}-gcc-ranlib" >> $GITHUB_ENV + echo "CFLAGS=-Os -fPIC -fno-pie -no-pie -static -flto -ffunction-sections -fdata-sections" >> $GITHUB_ENV + echo "LDFLAGS=-Wl,--gc-sections -Wl,-strip-all -flto" >> $GITHUB_ENV + + - name: setup toolchain + if: steps.cache-deps.outputs.cache-hit != true + run: | + # Download Toolchain + wget -q -nc -P ${DOWNLOAD_PATH} https://musl.cc/${TOOLCHAIN}.tgz + tar xf ${DOWNLOAD_PATH}/${TOOLCHAIN}.tgz -C ${HOME} + + # Download sccache + wget -q -nc -P ${DOWNLOAD_PATH} \ + https://github.com/mozilla/sccache/releases/download/v${SCCACHE_VERSION}/sccache-v${SCCACHE_VERSION}-x86_64-unknown-linux-musl.tar.gz + tar xf ${DOWNLOAD_PATH}/sccache-v${SCCACHE_VERSION}-x86_64-unknown-linux-musl.tar.gz -C ${HOME} + mv ${HOME}/sccache-v${SCCACHE_VERSION}-x86_64-unknown-linux-musl/sccache ${HOME}/${TOOLCHAIN}/bin + chmod +x ${HOME}/${TOOLCHAIN}/bin/sccache + + - name: build openssl + if: steps.cache-deps.outputs.cache-hit != true + run: | + export PLATFORM="linux-${ARCH}" + + wget -q -nc -P ${DOWNLOAD_PATH} https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz + tar xf ${DOWNLOAD_PATH}/openssl-${OPENSSL_VERSION}.tar.gz -C ${DEP_PATH} + cd ${DEP_PATH}/openssl-${OPENSSL_VERSION} + ./config --prefix=/usr --static -static ${PLATFORM} + make -j$(nproc) build_generated libcrypto.a + + echo "CPPFLAGS=${CPPFLAGS} -I${DEP_PATH}/openssl-${OPENSSL_VERSION}/include" >> $GITHUB_ENV + echo "LDFLAGS=${LDFLAGS} -L${DEP_PATH}/openssl-${OPENSSL_VERSION}" >> $GITHUB_ENV + + - name: build + run: | + make -j$(nproc) \ + LDFLAGS="-static ${LDFLAGS}" + ${TRIPLE}-strip tc + + - uses: actions/upload-artifact@v1 + with: + name: tc_linux_${{ env.ARCH }} + path: tc + + - name: Upload Release Asset Linux + uses: actions/upload-release-asset@v1 + if: ${{ github.event_name == 'release' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: tc + asset_name: tc_linux_${{ env.ARCH }} + asset_content_type: application/octet-stream + + build-macos: + runs-on: macos-11 + strategy: + matrix: + arch: + - x86_64 + - arm64 + env: + ARCH: ${{ matrix.arch }} + steps: + - uses: actions/checkout@v1 + with: + submodules: recursive + + - name: setup environment + run: | + echo "CC=clang -arch ${ARCH} -mmacosx-version-min=10.13" >> $GITHUB_ENV + echo "CFLAGS=-Os -flto=thin" >> $GITHUB_ENV + + - name: build + run: | + make -j$(sysctl -n hw.ncpu) \ + COMMONCRYPTO=1 + strip tc + + - uses: actions/upload-artifact@v1 + with: + name: tc_macos_${{ matrix.arch }} + path: tc + + - name: Upload Release Asset Linux + uses: actions/upload-release-asset@v1 + if: ${{ github.event_name == 'release' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: tc + asset_name: tc_macos_${{ matrix.arch }} + asset_content_type: application/octet-stream |