From 7113c216fbea3fc37edd69ccc3ede3e0e0a379b3 Mon Sep 17 00:00:00 2001 From: Niven Date: Thu, 23 Nov 2023 21:42:10 +0800 Subject: [PATCH 01/25] Revert genbuild --- contrib/genbuild.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/contrib/genbuild.sh b/contrib/genbuild.sh index 47b12a2600..ba751e796b 100755 --- a/contrib/genbuild.sh +++ b/contrib/genbuild.sh @@ -25,7 +25,7 @@ git_check_in_repo() { DESC="" SUFFIX="" CURRENT_BRANCH="" -if [ -z "$BUILD_VERSION" ] && [ "${BITCOIN_GENBUILD_NO_GIT}" != "1" ] && [ -e "$(command -v git)" ] && [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] && git_check_in_repo contrib/genbuild.sh; then +if [ "${BITCOIN_GENBUILD_NO_GIT}" != "1" ] && [ -e "$(command -v git)" ] && [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ] && git_check_in_repo contrib/genbuild.sh; then # clean 'dirty' status of touched files that haven't been modified git diff >/dev/null 2>/dev/null @@ -55,9 +55,7 @@ if [ -z "$BUILD_VERSION" ] && [ "${BITCOIN_GENBUILD_NO_GIT}" != "1" ] && [ -e "$ git diff-index --quiet HEAD -- || SUFFIX="$SUFFIX-dirty" fi -if [ -n "$BUILD_VERSION" ]; then - NEWINFO="#define BUILD_DESC \"$BUILD_VERSION\"" -elif [ -n "$DESC" ]; then +if [ -n "$DESC" ]; then NEWINFO="#define BUILD_DESC \"$DESC\"" elif [ -n "$SUFFIX" ]; then NEWINFO="#define BUILD_SUFFIX $SUFFIX" From 99806f5a6c37bb8c70705e6c1edd7cf3c07635e5 Mon Sep 17 00:00:00 2001 From: Niven Date: Thu, 23 Nov 2023 22:28:37 +0800 Subject: [PATCH 02/25] Initial dev on build-dev ci workflow --- .github/workflows/build-dev.yaml | 75 +++++++------------ .github/workflows/tests-sync.yml | 2 - contrib/dockerfiles/defi.dockerfile | 23 ++++++ .../x86_64-pc-linux-gnu.dockerfile | 47 ------------ make.sh | 69 ++++++++++------- 5 files changed, 92 insertions(+), 124 deletions(-) create mode 100644 contrib/dockerfiles/defi.dockerfile delete mode 100644 contrib/dockerfiles/x86_64-pc-linux-gnu.dockerfile diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index b1ee4d61da..647676a523 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -25,10 +25,14 @@ env: GIT_VERSION: 1 jobs: - linux-x64: + build: runs-on: ubuntu-latest + container: defi/ain-builder:latest + strategy: + matrix: + target: [x86_64-pc-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin] env: - TARGET: x86_64-pc-linux-gnu + TARGET: ${{matrix.target}} steps: - uses: actions/checkout@v3 @@ -36,63 +40,38 @@ jobs: - name: Populate environment run: ./make.sh ci-export-vars - - name: Build and package - run: ./make.sh docker-release + - name: Setup dependencies + run: ./make.sh ci-setup-deps + + - name: Setup dependencies + run: ./make.sh ci-setup-user-deps - - name: Publish artifact - x86_64-pc-linux-gnu + - name: Build depends + run: ./make.sh build-deps && ./make.sh build-conf + + - name: Build package + run: ./make.sh release + + - name: Build defi image + if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} + run: ./make.sh docker-defi-build + + - name: Publish artifact uses: actions/upload-artifact@v3 with: - name: defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu - path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz + name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} + path: ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} - name: Login to Docker Hub + if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} uses: docker/login-action@v2 with: username: ${{ env.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} - name: Push to Docker Hub + if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} run: | set -e; ver=${{ env.BUILD_VERSION }} - docker tag defichain-x86_64-pc-linux-gnu:${ver} defi/defichain:${ver} + docker tag defichain-${{ env.TARGET }}:${ver} defi/defichain:${ver} docker push defi/defichain:${ver} - - win-x64: - runs-on: ubuntu-latest - env: - TARGET: x86_64-w64-mingw32 - - steps: - - uses: actions/checkout@v3 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Build and package - run: ./make.sh docker-release - - - name: Publish artifact - x86_64-w64-mingw32 - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32 - path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.tar.gz - - osx-x64: - runs-on: ubuntu-latest - env: - TARGET: x86_64-apple-darwin - - steps: - - uses: actions/checkout@v3 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Build and package - run: ./make.sh docker-release - - - name: Publish artifact - x86_64-apple-darwin - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin - path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz diff --git a/.github/workflows/tests-sync.yml b/.github/workflows/tests-sync.yml index 6158c902d8..68910b00d1 100644 --- a/.github/workflows/tests-sync.yml +++ b/.github/workflows/tests-sync.yml @@ -44,8 +44,6 @@ jobs: workspaces: lib -> ../build/lib/target save-if: ${{ github.ref == 'refs/heads/master' }} - # TODO: Switch this to a docker build later and this builds on the native - # VM toolchain and loses disparity with the CI release builds - name: Build binaries run: ./make.sh build diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile new file mode 100644 index 0000000000..9448bd3e8e --- /dev/null +++ b/contrib/dockerfiles/defi.dockerfile @@ -0,0 +1,23 @@ +ARG TARGET=x86_64-pc-linux-gnu +ARG DEFI_BINARY_DIR + +FROM --platform=linux/amd64 ubuntu:latest +ARG TARGET +ENV PATH=/app/bin:$PATH +LABEL org.defichain.name="defichain" +LABEL org.defichain.arch=${TARGET} + +WORKDIR /app +COPY DEFI_BINARY_DIR ./ + +RUN useradd --create-home defi && \ + mkdir -p /data && \ + chown defi:defi /data && \ + ln -s /data /home/defi/.defi + +VOLUME ["/data"] + +USER defi:defi +CMD [ "/app/bin/defid" ] + +EXPOSE 8554 8550 8551 18554 18550 18551 19554 19550 19551 20554 20550 20551 \ No newline at end of file diff --git a/contrib/dockerfiles/x86_64-pc-linux-gnu.dockerfile b/contrib/dockerfiles/x86_64-pc-linux-gnu.dockerfile deleted file mode 100644 index d049a51c51..0000000000 --- a/contrib/dockerfiles/x86_64-pc-linux-gnu.dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -ARG TARGET=x86_64-pc-linux-gnu - -# ----------- -# https://github.com/DeFiCh/containers/blob/main/ain-builder/Dockerfile -FROM --platform=linux/amd64 docker.io/defi/ain-builder as builder -ARG TARGET -ARG MAKE_DEBUG -LABEL org.defichain.name="defichain-builder" -LABEL org.defichain.arch=${TARGET} - -WORKDIR /work -COPY ./make.sh . - -ENV PATH=/root/.cargo/bin:$PATH -RUN ./make.sh ci-setup-deps -RUN ./make.sh ci-setup-user-deps - -COPY . . -RUN ./make.sh build-deps -RUN ./make.sh build-conf -RUN ./make.sh build-make - -RUN mkdir /app && cd build/ && \ - make -s prefix=/ DESTDIR=/app install - -# ----------- -### Actual image that contains defi binaries -FROM --platform=linux/amd64 ubuntu:latest -ARG TARGET -ENV PATH=/app/bin:$PATH -LABEL org.defichain.name="defichain" -LABEL org.defichain.arch=${TARGET} - -WORKDIR /app -COPY --from=builder /app/. ./ - -RUN useradd --create-home defi && \ - mkdir -p /data && \ - chown defi:defi /data && \ - ln -s /data /home/defi/.defi - -VOLUME ["/data"] - -USER defi:defi -CMD [ "/app/bin/defid" ] - -EXPOSE 8554 8550 8551 18554 18550 18551 19554 19550 19551 20554 20550 20551 diff --git a/make.sh b/make.sh index 7e8155ea1b..4c3544f28c 100755 --- a/make.sh +++ b/make.sh @@ -19,11 +19,12 @@ setup_vars() { DOCKER_ROOT_CONTEXT=${DOCKER_ROOT_CONTEXT:-"."} DOCKERFILES_DIR=${DOCKERFILES_DIR:-"./contrib/dockerfiles"} + DOCKERFILE=${DOCKERFILE:-"${DOCKERFILES_DIR}/noarch.dockerfile"} + DEFI_DOCKERFILE=${DEFI_DOCKERFILE:-"${DOCKERFILES_DIR}/defi.dockerfile"} ROOT_DIR="$(_canonicalize "${_SCRIPT_DIR}")" TARGET=${TARGET:-"$(get_default_target)"} - DOCKERFILE=${DOCKERFILE:-"$(get_default_docker_file)"} BUILD_DIR=${BUILD_DIR:-"./build"} BUILD_DIR="$(_canonicalize "$BUILD_DIR")" @@ -219,10 +220,13 @@ package() { local build_dir="${BUILD_DIR}" local pkg_name="${img_prefix}-${img_version}-${target}" - local pkg_tar_file_name="${pkg_name}.tar.gz" local pkg_path - pkg_path="$(_canonicalize "${build_dir}/${pkg_tar_file_name}")" + if [[ "$target" == "x86_64-w64-mingw32" ]]; then + pkg_path="$(_canonicalize "${build_dir}/${pkg_name}.zip")" + else + pkg_path="$(_canonicalize "${build_dir}/${pkg_name}.tar.gz")" + fi local versioned_name="${img_prefix}-${img_version}" local versioned_build_dir="${build_dir}/${versioned_name}" @@ -235,8 +239,14 @@ package() { echo "> packaging: ${pkg_name} from ${versioned_build_dir}" - _ensure_enter_dir "${versioned_build_dir}" - _tar --transform "s,^./,${versioned_name}/," -czf "${pkg_path}" ./* + if [[ "$target" == "x86_64-w64-mingw32" ]]; then + _ensure_enter_dir "${build_dir}" + zip -r "${pkg_path}" "${versioned_build_dir}/" + else + _ensure_enter_dir "${versioned_build_dir}" + _tar --transform "s,^./,${versioned_name}/," -czf "${pkg_path}" ./* + fi + sha256sum "${pkg_path}" > "${pkg_path}.SHA256" _exit_dir echo "> package: ${pkg_path}" @@ -282,7 +292,6 @@ docker_deploy() { local img="${img_prefix}-${target}:${img_version}" echo "> deploy from: ${img}" - local pkg_name="${img_prefix}-${img_version}-${target}" local versioned_name="${img_prefix}-${img_version}" local versioned_build_dir="${build_dir}/${versioned_name}" @@ -311,6 +320,28 @@ docker_release() { _sign "$target" } +docker_defi_build() { + local target=${1:-${TARGET}} + local img_prefix="${IMAGE_PREFIX}" + local img_version="${IMAGE_VERSION}" + local build_dir="${BUILD_DIR}" + local docker_context="${DOCKER_ROOT_CONTEXT}" + local docker_file="${DEFI_DOCKERFILE}" + + echo "> docker-defi-build"; + + local versioned_name="${img_prefix}-${img_version}" + local versioned_build_dir="${build_dir}/${versioned_name}" + + local img="${img_prefix}-${target}:${img_version}" + echo "> building: ${img}" + echo "> docker defi build: ${img}" + + docker build -f "${docker_file}" \ + --build-arg DEFI_BINARY_DIR="${versioned_build_dir}" \ + -t "${img}" "${docker_context}" +} + docker_clean_builds() { echo "> clean: defichain build images" _docker_clean "org.defichain.name=defichain" @@ -928,27 +959,6 @@ get_default_target() { echo "$default_target" } -get_default_docker_file() { - local target="${TARGET}" - local dockerfiles_dir="${DOCKERFILES_DIR}" - - local try_files=(\ - "${dockerfiles_dir}/${target}.dockerfile" \ - "${dockerfiles_dir}/${target}" \ - "${dockerfiles_dir}/noarch.dockerfile" \ - ) - - for file in "${try_files[@]}"; do - if [[ -f "$file" ]]; then - echo "$file" - return - fi - done - # If none of these were found, assumes empty val - # Empty will fail if docker cmd requires it, or continue for - # non docker cmds -} - get_default_conf_args() { local conf_args="" if [[ "$TARGET" =~ .*linux.* ]]; then @@ -1115,6 +1125,11 @@ ci_export_vars() { echo "BUILD_VERSION=${IMAGE_VERSION}" >> "$GITHUB_ENV" echo "PATH=$HOME/.cargo/bin:$PATH" >> "$GITHUB_ENV" echo "CARGO_INCREMENTAL=0" >> "$GITHUB_ENV" + if [[ "${TARGET}" == "x86_64-w64-mingw32" ]]; then + echo "PKG_TYPE=zip" >> "$GITHUB_ENV" + else + echo "PKG_TYPE=tar.gz" >> "$GITHUB_ENV" + fi fi } From 856b07085d7d1ecd5eeb07d0056b8a6413c5644c Mon Sep 17 00:00:00 2001 From: Niven Date: Thu, 23 Nov 2023 23:15:03 +0800 Subject: [PATCH 03/25] Fix dubious repo --- .github/workflows/build-dev.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index 647676a523..8705de787b 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -36,6 +36,7 @@ jobs: steps: - uses: actions/checkout@v3 + - run: git config --global --add safe.directory '*' - name: Populate environment run: ./make.sh ci-export-vars From 7f4cac77273d2042cfb239d92d5e0016526e81bd Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 00:26:01 +0800 Subject: [PATCH 04/25] Shift docker defi build out of container --- .github/workflows/build-dev.yaml | 28 ++- .github/workflows/build-release.yaml | 259 ++++---------------------- .github/workflows/build-staging.yaml | 155 +++------------ contrib/dockerfiles/defi.dockerfile | 9 +- contrib/dockerfiles/noarch.dockerfile | 2 +- make.sh | 13 +- 6 files changed, 97 insertions(+), 369 deletions(-) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index 8705de787b..b5cc45310f 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -35,7 +35,7 @@ jobs: TARGET: ${{matrix.target}} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: git config --global --add safe.directory '*' - name: Populate environment @@ -44,7 +44,7 @@ jobs: - name: Setup dependencies run: ./make.sh ci-setup-deps - - name: Setup dependencies + - name: Setup user dependencies run: ./make.sh ci-setup-user-deps - name: Build depends @@ -53,25 +53,37 @@ jobs: - name: Build package run: ./make.sh release - - name: Build defi image - if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} - run: ./make.sh docker-defi-build - - name: Publish artifact uses: actions/upload-artifact@v3 with: name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} path: ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} + docker-build: + runs-on: ubuntu-latest + needs: [build] + env: + TARGET: x86_64-pc-linux-gnu + + steps: + - uses: actions/checkout@v4 + + - name: Download Binaries + uses: actions/download-artifact@v3 + with: + name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} + path: ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} + + - name: Build defi image + run: ./make.sh docker-defi-build + - name: Login to Docker Hub - if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} uses: docker/login-action@v2 with: username: ${{ env.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} - name: Push to Docker Hub - if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} run: | set -e; ver=${{ env.BUILD_VERSION }} docker tag defichain-${{ env.TARGET }}:${ver} defi/defichain:${ver} diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml index 43f8d4f769..44482337ab 100644 --- a/.github/workflows/build-release.yaml +++ b/.github/workflows/build-release.yaml @@ -12,270 +12,83 @@ env: GIT_VERSION: 1 jobs: - linux-x64: + create-release: runs-on: ubuntu-latest + container: defi/ain-builder:latest if: startsWith(github.ref, 'refs/tags/') + strategy: + matrix: + target: [x86_64-pc-linux-gnu, aarch64-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin, aarch64-apple-darwin] env: - TARGET: x86_64-pc-linux-gnu + TARGET: ${{matrix.target}} steps: - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - name: Populate environment run: ./make.sh ci-export-vars - - name: Build and package - run: ./make.sh docker-release + - name: Setup dependencies + run: ./make.sh ci-setup-deps + + - name: Setup user dependencies + run: ./make.sh ci-setup-user-deps + + - name: Build depends + run: ./make.sh build-deps && ./make.sh build-conf + + - name: Build package + run: ./make.sh release - - name: Publish artifacts + - name: Build defi image + if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} + run: ./make.sh docker-defi-build + + - name: Publish artifact uses: actions/upload-artifact@v3 with: - name: defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu - path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz + name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} + path: | + ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} + ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 - name: Login to Docker Hub + if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} uses: docker/login-action@v2 with: username: ${{ env.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} - name: Push to Docker Hub + if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} run: | set -e; ver=${{ env.BUILD_VERSION }} - for tag in $(echo $ver latest); do - docker tag defichain-x86_64-pc-linux-gnu:${ver} defi/defichain:${tag} - done + docker tag defichain-${{ env.TARGET }}:${ver} defi/defichain:${ver} docker push defi/defichain:${ver} - linux-aarch64: - runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/') - env: - TARGET: aarch64-linux-gnu - - steps: - - uses: actions/checkout@v4 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Build and package - run: ./make.sh docker-release - - - name: Publish artifact - aarch64-linux-gnu - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu - path: ./build/defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz - - win-x64: - runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/') - env: - TARGET: x86_64-w64-mingw32 - - steps: - - uses: actions/checkout@v4 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Build and package - run: ./make.sh docker-release - - - name: Publish artifact - x86_64-w64-mingw32 - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32 - path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.tar.gz - - osx-x64: - runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/') - env: - TARGET: x86_64-apple-darwin - - steps: - - uses: actions/checkout@v4 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Build and package - run: ./make.sh docker-release - - - name: Publish artifact - x86_64-apple-darwin - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin - path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz - - osx-aarch64: - runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/') - env: - TARGET: aarch64-apple-darwin - - steps: - - uses: actions/checkout@v4 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Build and package - run: ./make.sh docker-release - - - name: Publish artifact - aarch64-apple-darwin - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin - path: ./build/defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz - - create-release: - needs: - - linux-x64 - - linux-aarch64 - - win-x64 - - osx-x64 - - osx-aarch64 - runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/') - - steps: - - uses: actions/checkout@v4 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Cleanup work dir - run: rm -rf * - - - name: Get artifacts - uses: actions/download-artifact@v3 - - - name: zip package for win-x64 - run: | - set -e; ver=${{ env.BUILD_VERSION }} - cd defichain-${ver}-x86_64-w64-mingw32 - tar xzf defichain-${ver}-x86_64-w64-mingw32.tar.gz - zip -r "defichain-${ver}-x86_64-w64-mingw32.zip" defichain-${ver}/ - - name: Get release id: get_release uses: bruceadams/get-release@v1.3.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Generate SHA256 checksum - run: | - set -e; ver=${{ env.BUILD_VERSION }} - (cd ./defichain-${ver}-x86_64-pc-linux-gnu - sha256sum ./defichain-${ver}-x86_64-pc-linux-gnu.tar.gz > ./defichain-${ver}-x86_64-pc-linux-gnu.tar.gz.SHA256) - (cd ./defichain-${ver}-aarch64-linux-gnu - sha256sum ./defichain-${ver}-aarch64-linux-gnu.tar.gz > ./defichain-${ver}-aarch64-linux-gnu.tar.gz.SHA256) - (cd ./defichain-${ver}-x86_64-w64-mingw32 - sha256sum ./defichain-${ver}-x86_64-w64-mingw32.zip > ./defichain-${ver}-x86_64-w64-mingw32.zip.SHA256) - (cd ./defichain-${ver}-x86_64-apple-darwin - sha256sum ./defichain-${ver}-x86_64-apple-darwin.tar.gz > ././defichain-${ver}-x86_64-apple-darwin.tar.gz.SHA256) - (cd ./defichain-${ver}-aarch64-apple-darwin - sha256sum ./defichain-${ver}-aarch64-apple-darwin.tar.gz > ././defichain-${ver}-aarch64-apple-darwin.tar.gz.SHA256) - - - name: Upload release asset - linux-x64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu/defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz - asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz - asset_content_type: application/gzip - - - name: Upload checksum - linux-x64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu/defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz.SHA256 - asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz.SHA256 - asset_content_type: text/plain - - - name: Upload release asset - linux-aarch64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu/defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz - asset_name: defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz - asset_content_type: application/gzip - - - name: Upload checksum - linux-aarch64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu/defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz.SHA256 - asset_name: defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz.SHA256 - asset_content_type: text/plain - - - name: Upload release asset - win-x64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32/defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.zip - asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.zip - asset_content_type: application/zip - - - name: Upload checksum asset - win-x64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32/defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.zip.SHA256 - asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.zip.SHA256 - asset_content_type: text/plain - - - name: Upload release asset - osx-x64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin/defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz - asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz - asset_content_type: application/gzip - - - name: Upload checksum asset - osx-x64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin/defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz.SHA256 - asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz.SHA256 - asset_content_type: text/plain - - - name: Upload release asset - osx-aarch64 + - name: Upload release asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin/defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz - asset_name: defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz + asset_path: ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} + asset_name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} asset_content_type: application/gzip - - name: Upload checksum asset - osx-aarch64 + - name: Upload checksum uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ./defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin/defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz.SHA256 - asset_name: defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz.SHA256 + asset_path: ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 + asset_name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 asset_content_type: text/plain diff --git a/.github/workflows/build-staging.yaml b/.github/workflows/build-staging.yaml index fe56c3d076..6b75feb3e0 100644 --- a/.github/workflows/build-staging.yaml +++ b/.github/workflows/build-staging.yaml @@ -8,148 +8,45 @@ env: GIT_VERSION: 1 jobs: - linux-x64: - runs-on: ubuntu-latest - env: - TARGET: x86_64-pc-linux-gnu - - steps: - - uses: actions/checkout@v4 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Build and package - run: ./make.sh docker-release - - - name: Publish artifacts - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu - path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz - - linux-aarch64: - runs-on: ubuntu-latest - env: - TARGET: aarch64-linux-gnu - - steps: - - uses: actions/checkout@v4 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Build and package - run: ./make.sh docker-release - - - name: Publish artifact - aarch64-linux-gnu - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu - path: ./build/defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz - - win-x64: - runs-on: ubuntu-latest - env: - TARGET: x86_64-w64-mingw32 - - steps: - - uses: actions/checkout@v4 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Build and package - run: ./make.sh docker-release - - - name: Publish artifact - x86_64-w64-mingw32 - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32 - path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.tar.gz - - osx-x64: + # We keep the flow as similar as close to release flow as possible + # to validate change before it gets into release, even though + # these don't create end artifacts to use + stage-release: runs-on: ubuntu-latest + container: defi/ain-builder:latest + strategy: + matrix: + target: [x86_64-pc-linux-gnu, aarch64-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin, aarch64-apple-darwin] env: - TARGET: x86_64-apple-darwin + TARGET: ${{matrix.target}} steps: - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - name: Populate environment run: ./make.sh ci-export-vars - - name: Build and package - run: ./make.sh docker-release + - name: Setup dependencies + run: ./make.sh ci-setup-deps - - name: Publish artifact - x86_64-apple-darwin - uses: actions/upload-artifact@v3 - with: - name: defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin - path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz + - name: Setup user dependencies + run: ./make.sh ci-setup-user-deps - osx-aarch64: - runs-on: ubuntu-latest - env: - TARGET: aarch64-apple-darwin - - steps: - - uses: actions/checkout@v4 + - name: Build depends + run: ./make.sh build-deps && ./make.sh build-conf - - name: Populate environment - run: ./make.sh ci-export-vars + - name: Build package + run: ./make.sh release - - name: Build and package - run: ./make.sh docker-release + - name: Build defi image + if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} + run: ./make.sh docker-defi-build - - name: Publish artifact - aarch64-apple-darwin + - name: Publish artifact uses: actions/upload-artifact@v3 with: - name: defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin - path: ./build/defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz - - # We keep the flow as similar as close to release flow as possible - # to validate change before it gets into release, even though - # these don't create end artifacts to use - - stage-release: - needs: - - linux-x64 - - linux-aarch64 - - win-x64 - - osx-x64 - - osx-aarch64 - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Populate environment - run: ./make.sh ci-export-vars - - - name: Cleanup work dir - run: rm -rf * - - - name: Get artifacts - uses: actions/download-artifact@v3 - - - name: zip package for win-x64 - run: | - set -e; ver=${{ env.BUILD_VERSION }} - cd defichain-${ver}-x86_64-w64-mingw32 - tar xzf defichain-${ver}-x86_64-w64-mingw32.tar.gz - zip -r "defichain-${ver}-x86_64-w64-mingw32.zip" defichain-${ver}/ - - - name: Generate SHA256 checksum - run: | - set -e; ver=${{ env.BUILD_VERSION }} - (cd ./defichain-${ver}-x86_64-pc-linux-gnu - sha256sum ./defichain-${ver}-x86_64-pc-linux-gnu.tar.gz > ./defichain-${ver}-x86_64-pc-linux-gnu.tar.gz.SHA256) - (cd ./defichain-${ver}-aarch64-linux-gnu - sha256sum ./defichain-${ver}-aarch64-linux-gnu.tar.gz > ./defichain-${ver}-aarch64-linux-gnu.tar.gz.SHA256) - (cd ./defichain-${ver}-x86_64-w64-mingw32 - sha256sum ./defichain-${ver}-x86_64-w64-mingw32.zip > ./defichain-${ver}-x86_64-w64-mingw32.zip.SHA256) - (cd ./defichain-${ver}-x86_64-apple-darwin - sha256sum ./defichain-${ver}-x86_64-apple-darwin.tar.gz > ././defichain-${ver}-x86_64-apple-darwin.tar.gz.SHA256) - (cd ./defichain-${ver}-aarch64-apple-darwin - sha256sum ./defichain-${ver}-aarch64-apple-darwin.tar.gz > ././defichain-${ver}-aarch64-apple-darwin.tar.gz.SHA256) + name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} + path: | + ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} + ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index 9448bd3e8e..5d5b4f3ca8 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -1,14 +1,17 @@ ARG TARGET=x86_64-pc-linux-gnu -ARG DEFI_BINARY_DIR -FROM --platform=linux/amd64 ubuntu:latest +FROM --platform=linux/amd64 ubuntu:latest as defi ARG TARGET +ARG PACKAGE +ARG PACKAGE_NAME ENV PATH=/app/bin:$PATH LABEL org.defichain.name="defichain" LABEL org.defichain.arch=${TARGET} WORKDIR /app -COPY DEFI_BINARY_DIR ./ +COPY ${PACKAGE} ./ +RUN tar -xvzf ${PACKAGE_NAME} --strip-components 1 +COPY --from=builder /app/. ./ RUN useradd --create-home defi && \ mkdir -p /data && \ diff --git a/contrib/dockerfiles/noarch.dockerfile b/contrib/dockerfiles/noarch.dockerfile index 9393ce7bdc..1ee1aa8db0 100644 --- a/contrib/dockerfiles/noarch.dockerfile +++ b/contrib/dockerfiles/noarch.dockerfile @@ -4,7 +4,7 @@ ARG TARGET=unknown # ----------- -FROM ubuntu:latest as builder +FROM --platform=linux/amd64 ubuntu:latest as builder ARG TARGET ARG MAKE_DEBUG LABEL org.defichain.name="defichain-builder" diff --git a/make.sh b/make.sh index 4c3544f28c..38dd2de918 100755 --- a/make.sh +++ b/make.sh @@ -325,20 +325,23 @@ docker_defi_build() { local img_prefix="${IMAGE_PREFIX}" local img_version="${IMAGE_VERSION}" local build_dir="${BUILD_DIR}" + + local pkg_name="${img_prefix}-${img_version}-${target}.tar.gz" + local pkg_path + pkg_path="$(_canonicalize "${build_dir}/${pkg_name}")" + local docker_context="${DOCKER_ROOT_CONTEXT}" local docker_file="${DEFI_DOCKERFILE}" - - echo "> docker-defi-build"; - local versioned_name="${img_prefix}-${img_version}" - local versioned_build_dir="${build_dir}/${versioned_name}" + echo "> docker-defi-build"; local img="${img_prefix}-${target}:${img_version}" echo "> building: ${img}" echo "> docker defi build: ${img}" docker build -f "${docker_file}" \ - --build-arg DEFI_BINARY_DIR="${versioned_build_dir}" \ + --build-arg PACKAGE="${pkg_path}" \ + --build-arg PACKAGE_NAME="${pkg_name}" \ -t "${img}" "${docker_context}" } From 1f90cc3dbb054763a9680163bde00b46da3f01f5 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 00:39:04 +0800 Subject: [PATCH 05/25] Fix pkg name --- .github/workflows/build-dev.yaml | 1 - contrib/dockerfiles/defi.dockerfile | 5 ++--- make.sh | 5 +---- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index b5cc45310f..f86a7925c3 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -72,7 +72,6 @@ jobs: uses: actions/download-artifact@v3 with: name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} - path: ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} - name: Build defi image run: ./make.sh docker-defi-build diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index 5d5b4f3ca8..e44652df25 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -3,14 +3,13 @@ ARG TARGET=x86_64-pc-linux-gnu FROM --platform=linux/amd64 ubuntu:latest as defi ARG TARGET ARG PACKAGE -ARG PACKAGE_NAME ENV PATH=/app/bin:$PATH LABEL org.defichain.name="defichain" LABEL org.defichain.arch=${TARGET} WORKDIR /app -COPY ${PACKAGE} ./ -RUN tar -xvzf ${PACKAGE_NAME} --strip-components 1 +COPY ./${PACKAGE} ./ +RUN tar -xvzf ${PACKAGE} --strip-components 1 COPY --from=builder /app/. ./ RUN useradd --create-home defi && \ diff --git a/make.sh b/make.sh index 38dd2de918..8e9c89b07c 100755 --- a/make.sh +++ b/make.sh @@ -327,8 +327,6 @@ docker_defi_build() { local build_dir="${BUILD_DIR}" local pkg_name="${img_prefix}-${img_version}-${target}.tar.gz" - local pkg_path - pkg_path="$(_canonicalize "${build_dir}/${pkg_name}")" local docker_context="${DOCKER_ROOT_CONTEXT}" local docker_file="${DEFI_DOCKERFILE}" @@ -340,8 +338,7 @@ docker_defi_build() { echo "> docker defi build: ${img}" docker build -f "${docker_file}" \ - --build-arg PACKAGE="${pkg_path}" \ - --build-arg PACKAGE_NAME="${pkg_name}" \ + --build-arg PACKAGE="${pkg_name}" \ -t "${img}" "${docker_context}" } From 30940e454dd0e8cfec5cb88f3b0ae1b193956911 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 02:05:29 +0800 Subject: [PATCH 06/25] Add zip dep --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index 8e9c89b07c..2780e54c9c 100755 --- a/make.sh +++ b/make.sh @@ -692,7 +692,7 @@ pkg_install_deps() { libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev \ libminiupnpc-dev libzmq3-dev libqrencode-dev wget \ libdb-dev libdb++-dev libdb5.3 libdb5.3-dev libdb5.3++ libdb5.3++-dev \ - curl cmake unzip libc6-dev gcc-multilib locales locales-all + curl cmake zip unzip libc6-dev gcc-multilib locales locales-all _fold_end } From 01073f681015735900073c89ae7b30c9c9e0ef93 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 08:56:02 +0800 Subject: [PATCH 07/25] Fix populate env --- .github/workflows/build-dev.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index f86a7925c3..c6b37cc7b7 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -68,6 +68,9 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Populate environment + run: ./make.sh ci-export-vars + - name: Download Binaries uses: actions/download-artifact@v3 with: From dc75853fd5107b2de65c3b46fff2767bc172b0d6 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 10:12:22 +0800 Subject: [PATCH 08/25] Remove incorrect copy command in defi dockerfile --- contrib/dockerfiles/defi.dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index e44652df25..791b5c1eda 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -10,7 +10,6 @@ LABEL org.defichain.arch=${TARGET} WORKDIR /app COPY ./${PACKAGE} ./ RUN tar -xvzf ${PACKAGE} --strip-components 1 -COPY --from=builder /app/. ./ RUN useradd --create-home defi && \ mkdir -p /data && \ From 1eabb7f12e1d1c014abe227649a12598f5f94316 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 10:15:18 +0800 Subject: [PATCH 09/25] Revert dockerfile --- .../x86_64-pc-linux-gnu.dockerfile | 47 +++++++++++++++++++ make.sh | 23 ++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 contrib/dockerfiles/x86_64-pc-linux-gnu.dockerfile diff --git a/contrib/dockerfiles/x86_64-pc-linux-gnu.dockerfile b/contrib/dockerfiles/x86_64-pc-linux-gnu.dockerfile new file mode 100644 index 0000000000..d049a51c51 --- /dev/null +++ b/contrib/dockerfiles/x86_64-pc-linux-gnu.dockerfile @@ -0,0 +1,47 @@ +ARG TARGET=x86_64-pc-linux-gnu + +# ----------- +# https://github.com/DeFiCh/containers/blob/main/ain-builder/Dockerfile +FROM --platform=linux/amd64 docker.io/defi/ain-builder as builder +ARG TARGET +ARG MAKE_DEBUG +LABEL org.defichain.name="defichain-builder" +LABEL org.defichain.arch=${TARGET} + +WORKDIR /work +COPY ./make.sh . + +ENV PATH=/root/.cargo/bin:$PATH +RUN ./make.sh ci-setup-deps +RUN ./make.sh ci-setup-user-deps + +COPY . . +RUN ./make.sh build-deps +RUN ./make.sh build-conf +RUN ./make.sh build-make + +RUN mkdir /app && cd build/ && \ + make -s prefix=/ DESTDIR=/app install + +# ----------- +### Actual image that contains defi binaries +FROM --platform=linux/amd64 ubuntu:latest +ARG TARGET +ENV PATH=/app/bin:$PATH +LABEL org.defichain.name="defichain" +LABEL org.defichain.arch=${TARGET} + +WORKDIR /app +COPY --from=builder /app/. ./ + +RUN useradd --create-home defi && \ + mkdir -p /data && \ + chown defi:defi /data && \ + ln -s /data /home/defi/.defi + +VOLUME ["/data"] + +USER defi:defi +CMD [ "/app/bin/defid" ] + +EXPOSE 8554 8550 8551 18554 18550 18551 19554 19550 19551 20554 20550 20551 diff --git a/make.sh b/make.sh index 2780e54c9c..b06735f783 100755 --- a/make.sh +++ b/make.sh @@ -19,7 +19,7 @@ setup_vars() { DOCKER_ROOT_CONTEXT=${DOCKER_ROOT_CONTEXT:-"."} DOCKERFILES_DIR=${DOCKERFILES_DIR:-"./contrib/dockerfiles"} - DOCKERFILE=${DOCKERFILE:-"${DOCKERFILES_DIR}/noarch.dockerfile"} + DOCKERFILE=${DOCKERFILE:-"$(get_default_docker_file)"} DEFI_DOCKERFILE=${DEFI_DOCKERFILE:-"${DOCKERFILES_DIR}/defi.dockerfile"} ROOT_DIR="$(_canonicalize "${_SCRIPT_DIR}")" @@ -959,6 +959,27 @@ get_default_target() { echo "$default_target" } +get_default_docker_file() { + local target="${TARGET}" + local dockerfiles_dir="${DOCKERFILES_DIR}" + + local try_files=(\ + "${dockerfiles_dir}/${target}.dockerfile" \ + "${dockerfiles_dir}/${target}" \ + "${dockerfiles_dir}/noarch.dockerfile" \ + ) + + for file in "${try_files[@]}"; do + if [[ -f "$file" ]]; then + echo "$file" + return + fi + done + # If none of these were found, assumes empty val + # Empty will fail if docker cmd requires it, or continue for + # non docker cmds +} + get_default_conf_args() { local conf_args="" if [[ "$TARGET" =~ .*linux.* ]]; then From 830cb9451683b0b7432b8a9bbccc352bdf0fee23 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 10:19:10 +0800 Subject: [PATCH 10/25] Fix sh check --- make.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.sh b/make.sh index b06735f783..399eb19648 100755 --- a/make.sh +++ b/make.sh @@ -19,12 +19,12 @@ setup_vars() { DOCKER_ROOT_CONTEXT=${DOCKER_ROOT_CONTEXT:-"."} DOCKERFILES_DIR=${DOCKERFILES_DIR:-"./contrib/dockerfiles"} - DOCKERFILE=${DOCKERFILE:-"$(get_default_docker_file)"} DEFI_DOCKERFILE=${DEFI_DOCKERFILE:-"${DOCKERFILES_DIR}/defi.dockerfile"} ROOT_DIR="$(_canonicalize "${_SCRIPT_DIR}")" TARGET=${TARGET:-"$(get_default_target)"} + DOCKERFILE=${DOCKERFILE:-"$(get_default_docker_file)"} BUILD_DIR=${BUILD_DIR:-"./build"} BUILD_DIR="$(_canonicalize "$BUILD_DIR")" From 852ce79373e5a6de633d70603fa269807182dead Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 10:26:00 +0800 Subject: [PATCH 11/25] Clean up package dir --- contrib/dockerfiles/defi.dockerfile | 3 ++- make.sh | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index 791b5c1eda..c50946e79c 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -2,13 +2,14 @@ ARG TARGET=x86_64-pc-linux-gnu FROM --platform=linux/amd64 ubuntu:latest as defi ARG TARGET +ARG PKG_PATH ARG PACKAGE ENV PATH=/app/bin:$PATH LABEL org.defichain.name="defichain" LABEL org.defichain.arch=${TARGET} WORKDIR /app -COPY ./${PACKAGE} ./ +COPY ./${PKG_PATH} ./ RUN tar -xvzf ${PACKAGE} --strip-components 1 RUN useradd --create-home defi && \ diff --git a/make.sh b/make.sh index 399eb19648..46073afb72 100755 --- a/make.sh +++ b/make.sh @@ -28,6 +28,8 @@ setup_vars() { BUILD_DIR=${BUILD_DIR:-"./build"} BUILD_DIR="$(_canonicalize "$BUILD_DIR")" + PACKAGE_DIR=${PACKAGE_DIR:-"./"} + PACKAGE_DIR="$(_canonicalize "$PACKAGE_DIR")" # Was previously ${BUILD_DIR}/$TARGET for host specific # But simplifying this since autotools conf ends up in reconf and # rebuilds anyway, might as well just point manually if needed @@ -324,9 +326,9 @@ docker_defi_build() { local target=${1:-${TARGET}} local img_prefix="${IMAGE_PREFIX}" local img_version="${IMAGE_VERSION}" - local build_dir="${BUILD_DIR}" local pkg_name="${img_prefix}-${img_version}-${target}.tar.gz" + local pkg_dir="${PACKAGE_DIR}" local docker_context="${DOCKER_ROOT_CONTEXT}" local docker_file="${DEFI_DOCKERFILE}" @@ -338,6 +340,7 @@ docker_defi_build() { echo "> docker defi build: ${img}" docker build -f "${docker_file}" \ + --build-arg PKG_PATH="${pkg_dir}/${pkg_name}" \ --build-arg PACKAGE="${pkg_name}" \ -t "${img}" "${docker_context}" } From ff59f8f32f78dacbddb56f50569a8873d8bdc25a Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 11:09:27 +0800 Subject: [PATCH 12/25] Upgrade all checkout action to v4 --- .github/workflows/build-dev.yaml | 5 +-- .github/workflows/build-release.yaml | 55 ++++++++++++++++----------- .github/workflows/build-staging.yaml | 29 ++++++++++---- .github/workflows/lint.yaml | 4 +- .github/workflows/tests-ethlibs.yaml | 14 ++++--- .github/workflows/tests-frontier.yml | 15 ++++---- .github/workflows/tests-jellyfish.yml | 5 ++- .github/workflows/tests-sync.yml | 15 +++++--- .github/workflows/tests.yaml | 11 +++--- 9 files changed, 92 insertions(+), 61 deletions(-) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index c6b37cc7b7..c16ddd3ff8 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -47,10 +47,7 @@ jobs: - name: Setup user dependencies run: ./make.sh ci-setup-user-deps - - name: Build depends - run: ./make.sh build-deps && ./make.sh build-conf - - - name: Build package + - name: Build and package run: ./make.sh release - name: Publish artifact diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml index 44482337ab..5377d03f95 100644 --- a/.github/workflows/build-release.yaml +++ b/.github/workflows/build-release.yaml @@ -35,16 +35,9 @@ jobs: - name: Setup user dependencies run: ./make.sh ci-setup-user-deps - - name: Build depends - run: ./make.sh build-deps && ./make.sh build-conf - - - name: Build package + - name: Build and package run: ./make.sh release - - name: Build defi image - if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} - run: ./make.sh docker-defi-build - - name: Publish artifact uses: actions/upload-artifact@v3 with: @@ -53,20 +46,6 @@ jobs: ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 - - name: Login to Docker Hub - if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} - uses: docker/login-action@v2 - with: - username: ${{ env.DOCKER_HUB_USER }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Push to Docker Hub - if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} - run: | - set -e; ver=${{ env.BUILD_VERSION }} - docker tag defichain-${{ env.TARGET }}:${ver} defi/defichain:${ver} - docker push defi/defichain:${ver} - - name: Get release id: get_release uses: bruceadams/get-release@v1.3.2 @@ -92,3 +71,35 @@ jobs: asset_path: ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 asset_name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 asset_content_type: text/plain + + docker-build: + runs-on: ubuntu-latest + needs: [build] + env: + TARGET: x86_64-pc-linux-gnu + + steps: + - uses: actions/checkout@v4 + + - name: Populate environment + run: ./make.sh ci-export-vars + + - name: Download Binaries + uses: actions/download-artifact@v3 + with: + name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} + + - name: Build defi image + run: ./make.sh docker-defi-build + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ env.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Push to Docker Hub + run: | + set -e; ver=${{ env.BUILD_VERSION }} + docker tag defichain-${{ env.TARGET }}:${ver} defi/defichain:${ver} + docker push defi/defichain:${ver} diff --git a/.github/workflows/build-staging.yaml b/.github/workflows/build-staging.yaml index 6b75feb3e0..855fa1199a 100644 --- a/.github/workflows/build-staging.yaml +++ b/.github/workflows/build-staging.yaml @@ -33,16 +33,9 @@ jobs: - name: Setup user dependencies run: ./make.sh ci-setup-user-deps - - name: Build depends - run: ./make.sh build-deps && ./make.sh build-conf - - - name: Build package + - name: Build and package run: ./make.sh release - - name: Build defi image - if: ${{ env.TARGET == 'x86_64-pc-linux-gnu' }} - run: ./make.sh docker-defi-build - - name: Publish artifact uses: actions/upload-artifact@v3 with: @@ -50,3 +43,23 @@ jobs: path: | ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }} ./build/defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 + + stage-docker-release: + runs-on: ubuntu-latest + needs: [build] + env: + TARGET: x86_64-pc-linux-gnu + + steps: + - uses: actions/checkout@v4 + + - name: Populate environment + run: ./make.sh ci-export-vars + + - name: Download Binaries + uses: actions/download-artifact@v3 + with: + name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} + + - name: Build defi image + run: ./make.sh docker-defi-build diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index a1bba7be3c..da86d4ef83 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -29,7 +29,7 @@ jobs: PYTHON: 3.8 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Lint run: ./ci/lint/main.sh @@ -45,7 +45,7 @@ jobs: CARGO_INCREMENTAL: 0 steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - run: git config --global --add safe.directory '*' - name: Populate environment diff --git a/.github/workflows/tests-ethlibs.yaml b/.github/workflows/tests-ethlibs.yaml index dd7f9abcab..1bdf74a8f4 100644 --- a/.github/workflows/tests-ethlibs.yaml +++ b/.github/workflows/tests-ethlibs.yaml @@ -15,15 +15,19 @@ concurrency: env: NODE_URL: "http://127.0.0.1:19551/" + TARGET: x86_64-pc-linux-gnu + MAKE_DEBUG: 0 jobs: build: - env: - CARGO_INCREMENTAL: 0 runs-on: ubuntu-latest container: defi/ain-builder:latest + env: + CARGO_INCREMENTAL: 0 + steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - name: Populate environment run: ./make.sh ci-export-vars @@ -31,7 +35,7 @@ jobs: - name: Setup dependencies run: ./make.sh ci-setup-deps - - name: Setup dependencies for user + - name: Setup user dependencies run: ./make.sh ci-setup-user-deps - uses: Swatinem/rust-cache@v2 @@ -83,7 +87,7 @@ jobs: go-version: '^1.17.0' - name: Setup go-ethlibs test suites - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: 'DeFiCh/go-ethlibs' diff --git a/.github/workflows/tests-frontier.yml b/.github/workflows/tests-frontier.yml index 6e75bf666b..a0a11bafec 100644 --- a/.github/workflows/tests-frontier.yml +++ b/.github/workflows/tests-frontier.yml @@ -12,11 +12,14 @@ concurrency: jobs: build: + runs-on: ubuntu-latest + container: defi/ain-builder:latest env: CARGO_INCREMENTAL: 0 - runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - name: Populate environment run: ./make.sh ci-export-vars @@ -24,7 +27,7 @@ jobs: - name: Setup dependencies run: sudo ./make.sh ci-setup-deps - - name: Setup dependencies for user + - name: Setup user dependencies run: ./make.sh ci-setup-user-deps - uses: Swatinem/rust-cache@v2 @@ -39,17 +42,15 @@ jobs: uses: actions/upload-artifact@v3 with: name: defi-bins - path: | - build/src/defid + path: build/src/defid test: name: Frontier tests runs-on: ubuntu-latest - needs: build steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: repository: defich/metachain-ts-tests ref: 'main' diff --git a/.github/workflows/tests-jellyfish.yml b/.github/workflows/tests-jellyfish.yml index 21c0c1c9fe..a4735abd5a 100644 --- a/.github/workflows/tests-jellyfish.yml +++ b/.github/workflows/tests-jellyfish.yml @@ -17,13 +17,14 @@ jobs: test: name: Test runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: repository: JellyfishSDK/jellyfish ref: 'main' - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: path: defichain diff --git a/.github/workflows/tests-sync.yml b/.github/workflows/tests-sync.yml index 68910b00d1..22fde03602 100644 --- a/.github/workflows/tests-sync.yml +++ b/.github/workflows/tests-sync.yml @@ -28,7 +28,8 @@ jobs: env: CARGO_INCREMENTAL: 0 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - name: Populate environment run: ./make.sh ci-export-vars @@ -36,7 +37,7 @@ jobs: - name: Setup dependencies run: sudo ./make.sh ci-setup-deps - - name: Setup dependencies for user + - name: Setup user dependencies run: ./make.sh ci-setup-user-deps - uses: Swatinem/rust-cache@v2 @@ -52,8 +53,8 @@ jobs: with: name: defi-bins path: | - build/src/defid - build/src/defi-cli + build/src/defid + build/src/defi-cli - name: Upload shell commands uses: actions/upload-artifact@v3 @@ -74,7 +75,8 @@ jobs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - id: 'auth' name: 'Authenticate to Google Cloud' @@ -117,7 +119,8 @@ jobs: timeout-minutes: 4320 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - name: Download Snapshot run: aria2c -x16 -s16 https://storage.googleapis.com/team-drop/master-datadir/datadir-${{matrix.blocks.start}}.tar.gz diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 69ea0c3070..faaf4ff257 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -24,14 +24,15 @@ jobs: TESTS_FAILFAST: 0 TESTS_COMBINED_LOGS: 500 CARGO_INCREMENTAL: 0 + steps: - name: Checkout base branch and/or merge if: github.event_name != 'pull_request' - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Checkout pull request head commit if: github.event_name == 'pull_request' - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} @@ -41,7 +42,7 @@ jobs: - name: Install dependencies run: ./make.sh ci-setup-deps - - name: Setup dependencies for user + - name: Setup user dependencies run: ./make.sh ci-setup-user-deps - uses: Swatinem/rust-cache@v2 @@ -49,7 +50,7 @@ jobs: workspaces: lib -> ../build/lib/target save-if: ${{ github.ref == 'refs/heads/master' }} - - name: Build deps and configure + - name: Build binaries run: ./make.sh build # Temp. workaround to save space to prevent GH runners from running out @@ -64,7 +65,7 @@ jobs: container: defi/ain-builder:latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Populate environment run: ./make.sh ci-export-vars From 9ca4a88f5cc2007a0e7973de349d0f470b5ab20f Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 11:11:42 +0800 Subject: [PATCH 13/25] Add rust caching to build dev, release and staging --- .github/workflows/build-dev.yaml | 5 +++++ .github/workflows/build-release.yaml | 5 +++++ .github/workflows/build-staging.yaml | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index c16ddd3ff8..42f7150bd4 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -47,6 +47,11 @@ jobs: - name: Setup user dependencies run: ./make.sh ci-setup-user-deps + - uses: Swatinem/rust-cache@v2 + with: + workspaces: lib -> ../build/lib/target + save-if: ${{ github.ref == 'refs/heads/master' }} + - name: Build and package run: ./make.sh release diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml index 5377d03f95..ab890829d6 100644 --- a/.github/workflows/build-release.yaml +++ b/.github/workflows/build-release.yaml @@ -35,6 +35,11 @@ jobs: - name: Setup user dependencies run: ./make.sh ci-setup-user-deps + - uses: Swatinem/rust-cache@v2 + with: + workspaces: lib -> ../build/lib/target + save-if: ${{ github.ref == 'refs/heads/master' }} + - name: Build and package run: ./make.sh release diff --git a/.github/workflows/build-staging.yaml b/.github/workflows/build-staging.yaml index 855fa1199a..293a5a77dc 100644 --- a/.github/workflows/build-staging.yaml +++ b/.github/workflows/build-staging.yaml @@ -33,6 +33,11 @@ jobs: - name: Setup user dependencies run: ./make.sh ci-setup-user-deps + - uses: Swatinem/rust-cache@v2 + with: + workspaces: lib -> ../build/lib/target + save-if: ${{ github.ref == 'refs/heads/master' }} + - name: Build and package run: ./make.sh release From 2aba3d17030b45144bb903137da5f03417d90115 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 11:14:35 +0800 Subject: [PATCH 14/25] Resolve copying package into docker image --- .github/workflows/build-release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml index ab890829d6..d3d9a2a938 100644 --- a/.github/workflows/build-release.yaml +++ b/.github/workflows/build-release.yaml @@ -95,7 +95,7 @@ jobs: name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} - name: Build defi image - run: ./make.sh docker-defi-build + run: rm .dockerignore && ./make.sh docker-defi-build - name: Login to Docker Hub uses: docker/login-action@v2 From 1eb8f22633db46ededbe6cef78a37be30e6bd843 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 11:19:03 +0800 Subject: [PATCH 15/25] Remove dockerignore, fix release and staging builds --- .github/workflows/build-dev.yaml | 2 +- .github/workflows/build-release.yaml | 5 +++-- .github/workflows/build-staging.yaml | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index 42f7150bd4..c977ae256a 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -79,7 +79,7 @@ jobs: name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} - name: Build defi image - run: ./make.sh docker-defi-build + run: rm .dockerignore && ./make.sh docker-defi-build - name: Login to Docker Hub uses: docker/login-action@v2 diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml index d3d9a2a938..52ca8a0266 100644 --- a/.github/workflows/build-release.yaml +++ b/.github/workflows/build-release.yaml @@ -77,14 +77,15 @@ jobs: asset_name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 asset_content_type: text/plain - docker-build: + docker-release: runs-on: ubuntu-latest - needs: [build] + needs: [create-release] env: TARGET: x86_64-pc-linux-gnu steps: - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - name: Populate environment run: ./make.sh ci-export-vars diff --git a/.github/workflows/build-staging.yaml b/.github/workflows/build-staging.yaml index 293a5a77dc..c75c626ca3 100644 --- a/.github/workflows/build-staging.yaml +++ b/.github/workflows/build-staging.yaml @@ -51,12 +51,13 @@ jobs: stage-docker-release: runs-on: ubuntu-latest - needs: [build] + needs: [stage-release] env: TARGET: x86_64-pc-linux-gnu steps: - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - name: Populate environment run: ./make.sh ci-export-vars @@ -67,4 +68,4 @@ jobs: name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} - name: Build defi image - run: ./make.sh docker-defi-build + run: rm .dockerignore && ./make.sh docker-defi-build From 6c7504746508a6cf4f4bf961e7cb60b27e577db5 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 11:19:32 +0800 Subject: [PATCH 16/25] Add git config to build dev --- .github/workflows/build-dev.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index c977ae256a..18ab636c4d 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -69,6 +69,7 @@ jobs: steps: - uses: actions/checkout@v4 + - run: git config --global --add safe.directory '*' - name: Populate environment run: ./make.sh ci-export-vars From 0469cf855c2bd9e0c4bf94b206e208d6192d57b4 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 11:20:46 +0800 Subject: [PATCH 17/25] Better rename --- .github/workflows/build-release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml index 52ca8a0266..6c4cba3507 100644 --- a/.github/workflows/build-release.yaml +++ b/.github/workflows/build-release.yaml @@ -77,7 +77,7 @@ jobs: asset_name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }}.${{ env.PKG_TYPE }}.SHA256 asset_content_type: text/plain - docker-release: + create-docker-release: runs-on: ubuntu-latest needs: [create-release] env: From 2ae88f5219f5c75ab3412b60be2c23e5a36abd55 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 11:22:34 +0800 Subject: [PATCH 18/25] Remove sudo privilege --- .github/workflows/tests-frontier.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests-frontier.yml b/.github/workflows/tests-frontier.yml index a0a11bafec..fd389b0152 100644 --- a/.github/workflows/tests-frontier.yml +++ b/.github/workflows/tests-frontier.yml @@ -25,7 +25,7 @@ jobs: run: ./make.sh ci-export-vars - name: Setup dependencies - run: sudo ./make.sh ci-setup-deps + run: ./make.sh ci-setup-deps - name: Setup user dependencies run: ./make.sh ci-setup-user-deps From 3dfb40d8cebf8f8af4477145c795303cff08767f Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 12:02:05 +0800 Subject: [PATCH 19/25] remove relative path --- contrib/dockerfiles/defi.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index c50946e79c..413d6e022e 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -9,7 +9,7 @@ LABEL org.defichain.name="defichain" LABEL org.defichain.arch=${TARGET} WORKDIR /app -COPY ./${PKG_PATH} ./ +COPY ${PKG_PATH} ./ RUN tar -xvzf ${PACKAGE} --strip-components 1 RUN useradd --create-home defi && \ From 219f8f28cf7368c7a56a9b33c254d10bba50387e Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 12:18:22 +0800 Subject: [PATCH 20/25] Better rename --- contrib/dockerfiles/defi.dockerfile | 4 ++-- make.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index 413d6e022e..53b7f10357 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -2,14 +2,14 @@ ARG TARGET=x86_64-pc-linux-gnu FROM --platform=linux/amd64 ubuntu:latest as defi ARG TARGET -ARG PKG_PATH ARG PACKAGE +ARG PACKAGE_PATH ENV PATH=/app/bin:$PATH LABEL org.defichain.name="defichain" LABEL org.defichain.arch=${TARGET} WORKDIR /app -COPY ${PKG_PATH} ./ +COPY ${PACKAGE_PATH} ./ RUN tar -xvzf ${PACKAGE} --strip-components 1 RUN useradd --create-home defi && \ diff --git a/make.sh b/make.sh index 46073afb72..b287d162f7 100755 --- a/make.sh +++ b/make.sh @@ -340,8 +340,8 @@ docker_defi_build() { echo "> docker defi build: ${img}" docker build -f "${docker_file}" \ - --build-arg PKG_PATH="${pkg_dir}/${pkg_name}" \ --build-arg PACKAGE="${pkg_name}" \ + --build-arg PACKAGE_PATH="${pkg_dir}/${pkg_name}" \ -t "${img}" "${docker_context}" } From a8987c17f4295069574fb0fd5c2339721931a5c0 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 12:42:59 +0800 Subject: [PATCH 21/25] Debug log --- .github/workflows/build-dev.yaml | 6 +++++- contrib/dockerfiles/defi.dockerfile | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index 18ab636c4d..9892fd0b41 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -30,7 +30,8 @@ jobs: container: defi/ain-builder:latest strategy: matrix: - target: [x86_64-pc-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin] + target: [x86_64-pc-linux-gnu] + # target: [x86_64-pc-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin] env: TARGET: ${{matrix.target}} @@ -79,6 +80,9 @@ jobs: with: name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} + - name: Debug + run: ls -R + - name: Build defi image run: rm .dockerignore && ./make.sh docker-defi-build diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index 53b7f10357..10e55bdab3 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -22,4 +22,4 @@ VOLUME ["/data"] USER defi:defi CMD [ "/app/bin/defid" ] -EXPOSE 8554 8550 8551 18554 18550 18551 19554 19550 19551 20554 20550 20551 \ No newline at end of file +EXPOSE 8554 8550 8551 18554 18550 18551 19554 19550 19551 20554 20550 20551 From b504033cb90caea2b83fe5835fde49a18a91cf44 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 12:50:37 +0800 Subject: [PATCH 22/25] Fix package path --- contrib/dockerfiles/defi.dockerfile | 2 -- make.sh | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index 10e55bdab3..f468630e73 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -2,7 +2,6 @@ ARG TARGET=x86_64-pc-linux-gnu FROM --platform=linux/amd64 ubuntu:latest as defi ARG TARGET -ARG PACKAGE ARG PACKAGE_PATH ENV PATH=/app/bin:$PATH LABEL org.defichain.name="defichain" @@ -10,7 +9,6 @@ LABEL org.defichain.arch=${TARGET} WORKDIR /app COPY ${PACKAGE_PATH} ./ -RUN tar -xvzf ${PACKAGE} --strip-components 1 RUN useradd --create-home defi && \ mkdir -p /data && \ diff --git a/make.sh b/make.sh index b287d162f7..bc963705f1 100755 --- a/make.sh +++ b/make.sh @@ -327,8 +327,8 @@ docker_defi_build() { local img_prefix="${IMAGE_PREFIX}" local img_version="${IMAGE_VERSION}" - local pkg_name="${img_prefix}-${img_version}-${target}.tar.gz" local pkg_dir="${PACKAGE_DIR}" + local pkg_name="${img_prefix}-${img_version}-${target}" local docker_context="${DOCKER_ROOT_CONTEXT}" local docker_file="${DEFI_DOCKERFILE}" @@ -340,7 +340,6 @@ docker_defi_build() { echo "> docker defi build: ${img}" docker build -f "${docker_file}" \ - --build-arg PACKAGE="${pkg_name}" \ --build-arg PACKAGE_PATH="${pkg_dir}/${pkg_name}" \ -t "${img}" "${docker_context}" } From 16eefada033cacd4c6c0272f3f135da9849a77aa Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 12:53:44 +0800 Subject: [PATCH 23/25] Better refactor --- contrib/dockerfiles/defi.dockerfile | 4 ++-- make.sh | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index f468630e73..397dd0409b 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -2,13 +2,13 @@ ARG TARGET=x86_64-pc-linux-gnu FROM --platform=linux/amd64 ubuntu:latest as defi ARG TARGET -ARG PACKAGE_PATH +ARG PACKAGE_DIR ENV PATH=/app/bin:$PATH LABEL org.defichain.name="defichain" LABEL org.defichain.arch=${TARGET} WORKDIR /app -COPY ${PACKAGE_PATH} ./ +COPY ${PACKAGE_DIR} ./ RUN useradd --create-home defi && \ mkdir -p /data && \ diff --git a/make.sh b/make.sh index bc963705f1..a762dea006 100755 --- a/make.sh +++ b/make.sh @@ -28,8 +28,6 @@ setup_vars() { BUILD_DIR=${BUILD_DIR:-"./build"} BUILD_DIR="$(_canonicalize "$BUILD_DIR")" - PACKAGE_DIR=${PACKAGE_DIR:-"./"} - PACKAGE_DIR="$(_canonicalize "$PACKAGE_DIR")" # Was previously ${BUILD_DIR}/$TARGET for host specific # But simplifying this since autotools conf ends up in reconf and # rebuilds anyway, might as well just point manually if needed @@ -327,8 +325,10 @@ docker_defi_build() { local img_prefix="${IMAGE_PREFIX}" local img_version="${IMAGE_VERSION}" - local pkg_dir="${PACKAGE_DIR}" local pkg_name="${img_prefix}-${img_version}-${target}" + PACKAGE_DIR=${PACKAGE_DIR:-"./${pkg_name}"} + PACKAGE_DIR="$(_canonicalize "$PACKAGE_DIR")" + local pkg_dir="${PACKAGE_DIR}" local docker_context="${DOCKER_ROOT_CONTEXT}" local docker_file="${DEFI_DOCKERFILE}" @@ -340,7 +340,7 @@ docker_defi_build() { echo "> docker defi build: ${img}" docker build -f "${docker_file}" \ - --build-arg PACKAGE_PATH="${pkg_dir}/${pkg_name}" \ + --build-arg PACKAGE_DIR="${pkg_dir}" \ -t "${img}" "${docker_context}" } From 090fc7cb33c434a4f4c9b420852499e138b65349 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 13:30:38 +0800 Subject: [PATCH 24/25] Fix docker build --- .github/workflows/build-dev.yaml | 6 +----- contrib/dockerfiles/defi.dockerfile | 5 +++-- make.sh | 7 ++----- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-dev.yaml b/.github/workflows/build-dev.yaml index 9892fd0b41..18ab636c4d 100644 --- a/.github/workflows/build-dev.yaml +++ b/.github/workflows/build-dev.yaml @@ -30,8 +30,7 @@ jobs: container: defi/ain-builder:latest strategy: matrix: - target: [x86_64-pc-linux-gnu] - # target: [x86_64-pc-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin] + target: [x86_64-pc-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin] env: TARGET: ${{matrix.target}} @@ -80,9 +79,6 @@ jobs: with: name: defichain-${{ env.BUILD_VERSION }}-${{ env.TARGET }} - - name: Debug - run: ls -R - - name: Build defi image run: rm .dockerignore && ./make.sh docker-defi-build diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index 397dd0409b..18d96b93e3 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -2,13 +2,14 @@ ARG TARGET=x86_64-pc-linux-gnu FROM --platform=linux/amd64 ubuntu:latest as defi ARG TARGET -ARG PACKAGE_DIR +ARG PACKAGE ENV PATH=/app/bin:$PATH LABEL org.defichain.name="defichain" LABEL org.defichain.arch=${TARGET} WORKDIR /app -COPY ${PACKAGE_DIR} ./ +COPY ./${PACKAGE} ./ +RUN tar -xvzf ${PACKAGE} --strip-components 1 RUN useradd --create-home defi && \ mkdir -p /data && \ diff --git a/make.sh b/make.sh index a762dea006..832873a696 100755 --- a/make.sh +++ b/make.sh @@ -325,10 +325,7 @@ docker_defi_build() { local img_prefix="${IMAGE_PREFIX}" local img_version="${IMAGE_VERSION}" - local pkg_name="${img_prefix}-${img_version}-${target}" - PACKAGE_DIR=${PACKAGE_DIR:-"./${pkg_name}"} - PACKAGE_DIR="$(_canonicalize "$PACKAGE_DIR")" - local pkg_dir="${PACKAGE_DIR}" + local pkg_name="${img_prefix}-${img_version}-${target}.tar.gz" local docker_context="${DOCKER_ROOT_CONTEXT}" local docker_file="${DEFI_DOCKERFILE}" @@ -340,7 +337,7 @@ docker_defi_build() { echo "> docker defi build: ${img}" docker build -f "${docker_file}" \ - --build-arg PACKAGE_DIR="${pkg_dir}" \ + --build-arg PACKAGE="${pkg_name}" \ -t "${img}" "${docker_context}" } From bcbaa6f93fbcdfe1d3a053cb1781b97a3fc989b5 Mon Sep 17 00:00:00 2001 From: Niven Date: Fri, 24 Nov 2023 14:17:53 +0800 Subject: [PATCH 25/25] Fix relative path --- contrib/dockerfiles/defi.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/dockerfiles/defi.dockerfile b/contrib/dockerfiles/defi.dockerfile index 18d96b93e3..40db80d80a 100644 --- a/contrib/dockerfiles/defi.dockerfile +++ b/contrib/dockerfiles/defi.dockerfile @@ -8,7 +8,7 @@ LABEL org.defichain.name="defichain" LABEL org.defichain.arch=${TARGET} WORKDIR /app -COPY ./${PACKAGE} ./ +COPY ${PACKAGE} ./ RUN tar -xvzf ${PACKAGE} --strip-components 1 RUN useradd --create-home defi && \