From 3f118bb3878bf0ef056558294f90b87b9ae7d642 Mon Sep 17 00:00:00 2001 From: Sayan Nandan Date: Sat, 8 Aug 2020 19:50:24 +0530 Subject: [PATCH] Add docker image build script --- .github/workflows/docker.yml | 72 ++++++++++++++++++++++++++++++++++++ Dockerfile | 15 +++----- 2 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/docker.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 00000000..0a235517 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,72 @@ +name: Build latest docker image + +on: + push: + # Publish `next` as Docker `latest` image. + branches: + - next + + # Publish `v1.2.3` tags as releases. + tags: + - v* + +env: + IMAGE_NAME: tdb + +jobs: + # Run tests. + # See also https://docs.docker.com/docker-hub/builds/automated-testing/ + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Run tests + run: | + if [ -f docker-compose.test.yml ]; then + docker-compose --file docker-compose.test.yml build + docker-compose --file docker-compose.test.yml run sut + else + docker build . --file Dockerfile + fi + + # Push image to GitHub Packages. + # See also https://docs.docker.com/docker-hub/builds/ + push: + # Ensure test job passes before pushing image. + needs: test + + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: docker build . --file Dockerfile --tag $IMAGE_NAME + + - name: Log into registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin + + - name: Push image + run: | + IMAGE_ID=docker.pkg.github.com/${{ github.repository }}/$IMAGE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name + [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "next" ] && VERSION=latest + + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION diff --git a/Dockerfile b/Dockerfile index 95f86577..63db7d38 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,23 +6,20 @@ FROM ubuntu:20.04 ENV TZ=america/central RUN \ ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ >/etc/timezone && \ - apt-get update && apt-get install git curl -y && \ + apt-get update && apt-get install git curl build-essential -y && \ cd /tmp && \ curl https://sh.rustup.rs -sSf | sh -s -- -y && \ git clone https://github.com/terrabasedb/terrabase.git && \ cd terrabase && \ git fetch --tags && \ - lt=$(git describe --tags $(git rev-list --tags --max-count=1)) && \ - git checkout $lt && \ - cargo build --release -p tdb && \ - apt-get remove rustc git curl -y && \ + lr=`git describe --tags --abbrev=0 --match v*` && \ + git checkout $lr && \ + $HOME/.cargo/bin/cargo build --release -p tdb && \ + apt-get remove git curl -y && \ apt-get autoremove -y && \ + $HOME/.cargo/bin/rustup self uninstall -y && \ cp -f target/release/tdb /usr/local/bin -VOLUME ["/data"] - -WORKDIR /data - CMD ["tdb"] EXPOSE 2003