From 1e68467d36f5047e61a6b96b4db5a0e17d867081 Mon Sep 17 00:00:00 2001 From: Abraham Toriz Date: Sat, 26 Nov 2022 01:07:47 -0600 Subject: [PATCH] a container image capable of building tiempo consistently --- .gitignore | 3 ++ .gitlab-ci.yml | 33 ++------------------- Containerfile | 12 ++++++++ README.md | 14 +++++++++ scripts/build.sh | 40 ++++++++++++++++++++++++++ debpackage.sh => scripts/debpackage.sh | 0 6 files changed, 71 insertions(+), 31 deletions(-) create mode 100644 Containerfile create mode 100755 scripts/build.sh rename debpackage.sh => scripts/debpackage.sh (100%) diff --git a/.gitignore b/.gitignore index b021c43..453d44d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ docs/*/build/ dev_config.toml Pipfile* +artifacts/ +build/ +debian-package/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e869bdb..adc8c3c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,7 +26,6 @@ build-doc: - gzip build/man/tiempo.1 rules: - if: $CI_COMMIT_BRANCH == "main" - - if: $CI_COMMIT_TAG =~ /^v*/ artifacts: paths: - docs/build/html @@ -46,37 +45,9 @@ publish-doc: build: stage: build - image: categulario/rust-cli-image:latest + image: categulario/tiempo-build-env:1.65 script: - # build the binary - - cargo build --locked --release - # create the tar package - - mkdir -p build/bin build/share/doc/tiempo build/share/man/man1 build/share/bash-completion/completions build/share/zsh/site-functions build/share/fish/vendor_completions.d - # move binary - - cp target/release/t build/bin/ - # move documentation - - cp CHANGELOG.md build/share/doc/tiempo/ - - cp README.md build/share/doc/tiempo/ - - cp LICENSE build/share/doc/tiempo/ - - cp -R docs/build/html build/share/doc/tiempo/ - # move man page - - cp docs/build/man/tiempo.1.gz build/share/man/man1/ - # move completions - - cp completions/bash/t build/share/bash-completion/completions/ - - cp completions/fish/t.fish build/share/fish/vendor_completions.d/ - - cp completions/zsh/_t build/share/zsh/site-functions/ - # compress the tar file - - tar -cvzf tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz build/ - # makes the debian archive - - ./debpackage.sh - # computes the sums - - sha256sum tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz > tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz.sum - - sha256sum debian-package/tiempo_${CI_COMMIT_TAG:1}_amd64.deb > tiempo_${CI_COMMIT_TAG:1}_amd64.deb.sum - - mkdir artifacts - - mv tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz artifacts/ - - mv debian-package/tiempo_${CI_COMMIT_TAG:1}_amd64.deb artifacts/ - - mv tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz.sum artifacts/ - - mv tiempo_${CI_COMMIT_TAG:1}_amd64.deb.sum artifacts/ + - ./scripts/build.sh artifacts: paths: - artifacts/ diff --git a/Containerfile b/Containerfile new file mode 100644 index 0000000..9bc4668 --- /dev/null +++ b/Containerfile @@ -0,0 +1,12 @@ +# This Containerfile builds the tiempo-build-env container image used to build +# tiempo in CI and local environments. +FROM docker.io/rust:1.65 + +RUN apt-get update && apt-get upgrade -y && \ + apt-get install -y --no-install-recommends \ + fakeroot \ + python3-minimal \ + python3-sphinx \ + python3-tomlkit \ + && apt-get -q clean \ + && rm -rf /var/lib/apt/lists/* diff --git a/README.md b/README.md index 9a20c75..6310291 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,20 @@ The contents of the man page are located in `docs/source/index.rst`, formatted as [reStructuredText](https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html). +### Building the packages like in CI but locally + +First pull the image: + + podman pull tiempo-build-env + +Or build it yourself from this repo: + + podman build -t tiempo-build-env . + +Then build the packages: + + podman run -it --rm -w /app -v ./:/app -e CI_COMMIT_TAG=v2.0.0 tiempo-build-env ./scripts/build.sh + ## Special Thanks To [timetrap](https://github.com/samg/timetrap) for existing, to diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..2e1faab --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Fail if any of the commands fail +set -e + +# Build the docs +cd docs/ +make man +gzip -f build/man/tiempo.1 +cd .. + +# build the binary +cargo build --locked --release + +# create the tar package +mkdir -p build/bin build/share/doc/tiempo build/share/man/man1 build/share/bash-completion/completions build/share/zsh/site-functions build/share/fish/vendor_completions.d +# move binary +cp target/release/t build/bin/ +# move documentation +cp CHANGELOG.md build/share/doc/tiempo/ +cp README.md build/share/doc/tiempo/ +cp LICENSE build/share/doc/tiempo/ +# move man page +cp docs/build/man/tiempo.1.gz build/share/man/man1/ +# move completions +cp completions/bash/t build/share/bash-completion/completions/ +cp completions/fish/t.fish build/share/fish/vendor_completions.d/ +cp completions/zsh/_t build/share/zsh/site-functions/ +# compress the tar file +tar -cvzf tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz build/ +# makes the debian archive +./scripts/debpackage.sh +# computes the sums +sha256sum tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz > tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz.sum +sha256sum debian-package/tiempo_${CI_COMMIT_TAG:1}_amd64.deb > tiempo_${CI_COMMIT_TAG:1}_amd64.deb.sum +mkdir -p artifacts +mv tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz artifacts/ +mv debian-package/tiempo_${CI_COMMIT_TAG:1}_amd64.deb artifacts/ +mv tiempo-${CI_COMMIT_TAG:1}-x86_64.tar.gz.sum artifacts/ +mv tiempo_${CI_COMMIT_TAG:1}_amd64.deb.sum artifacts/ diff --git a/debpackage.sh b/scripts/debpackage.sh similarity index 100% rename from debpackage.sh rename to scripts/debpackage.sh