diff --git a/.ci.yml b/.ci.yml index 4125a256..7486e8e3 100644 --- a/.ci.yml +++ b/.ci.yml @@ -1,10 +1,25 @@ kind: pipeline -type: docker -name: default +name: Build and Test steps: - - name: Run tests - image: rust:latest + - name: run-tests + image: rust commands: - cargo build --verbose - cargo test --verbose + +--- +kind: pipeline +type: docker +name: Docker Image + +steps: + - name: Push to Docker Hub + image: plugins/docker + settings: + repo: terrabasedb/tdb + username: + from_secret: docker_username + password: + from_secret: docker_password + auto_tag: true diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index 9ab8ca4a..00000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: 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 - BUILD: "false" - -jobs: - # Run tests. - # See also https://docs.docker.com/docker-hub/builds/automated-testing/ - test: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 2 - - name: Setup environment - run: | - chmod +x ci/buildvars.sh - ci/buildvars.sh - - name: Build image - run: docker build . --file Dockerfile --tag $IMAGE_NAME - if: env.BUILD == 'true' || github.event_name == 'create' && startsWith(github.ref, 'refs/tags/v') - - name: Push to Docker Hub - uses: docker/build-push-action@v1 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - repository: terrabasedb/tdb - tags: latest - tag_with_ref: true - if: env.BUILD == 'true' || github.event_name == 'create' && startsWith(github.ref, 'refs/tags/v') - - - name: Log into GitHub Container Registry - run: echo "${{ secrets.CR_PAT }}" | docker login https://ghcr.io -u ${{ github.actor }} --password-stdin - if: env.BUILD == 'true' || github.event_name == 'create' && startsWith(github.ref, 'refs/tags/v') - - - name: Push image to GitHub Container Registry - run: | - IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$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 - if: env.BUILD == 'true' || github.event_name == 'create' && startsWith(github.ref, 'refs/tags/v') diff --git a/Dockerfile b/Dockerfile index 80c90598..aba2329a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,24 +2,19 @@ # The Dockerfile for the TerrabaseDB server tdb # -FROM ubuntu:20.04 -ENV TZ=america/central +FROM rust:latest RUN \ - ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ >/etc/timezone && \ - apt-get update && apt-get install git curl build-essential -y && \ + apt-get update && apt-get install git curl -y && \ cd /tmp && \ - curl https://sh.rustup.rs -sSf | sh -s -- -y && \ git clone https://github.com/terrabasedb/terrabasedb.git && \ cd terrabasedb && \ git checkout next && \ - $HOME/.cargo/bin/cargo build --release -p tdb && \ + cargo test --release -p tdb && \ + 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 CMD ["tdb", "-h", "0.0.0.0", "-p", "2003"] EXPOSE 2003/tcp - -ARG DEBIAN_FRONTEND=noninteractive