From deee2b3513a88f1ec39a6b3f6169f382844c6895 Mon Sep 17 00:00:00 2001 From: rkuo-danswer Date: Thu, 26 Sep 2024 10:40:13 -0700 Subject: [PATCH] push to docker latest when git tag contains "latest", and tag nightly (#2564) * comment docker tag latest * make latest builds contingent on a "latest" keyword in the tag * v4 checkout * nightly tag push --- ...er-build-push-backend-container-on-tag.yml | 9 +++-- ...ild-push-model-server-container-on-tag.yml | 10 +++-- ...docker-build-push-web-container-on-tag.yml | 5 ++- .github/workflows/docker-tag-latest.yml | 3 ++ .github/workflows/tag-nightly.yml | 37 +++++++++++++++++++ 5 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/tag-nightly.yml diff --git a/.github/workflows/docker-build-push-backend-container-on-tag.yml b/.github/workflows/docker-build-push-backend-container-on-tag.yml index 3aa715153..cee4d5d65 100644 --- a/.github/workflows/docker-build-push-backend-container-on-tag.yml +++ b/.github/workflows/docker-build-push-backend-container-on-tag.yml @@ -7,7 +7,8 @@ on: env: REGISTRY_IMAGE: danswer/danswer-backend - + LATEST_TAG: ${{ contains(github.ref_name, 'latest') }} + jobs: build-and-push: # TODO: investigate a matrix build like the web container @@ -16,7 +17,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -31,7 +32,7 @@ jobs: run: | sudo apt-get update sudo apt-get install -y build-essential - + - name: Backend Image Docker Build and Push uses: docker/build-push-action@v5 with: @@ -41,7 +42,7 @@ jobs: push: true tags: | ${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }} - ${{ env.REGISTRY_IMAGE }}:latest + ${{ env.LATEST_TAG == 'true' && format('{0}:latest', env.REGISTRY_IMAGE) || '' }} build-args: | DANSWER_VERSION=${{ github.ref_name }} diff --git a/.github/workflows/docker-build-push-model-server-container-on-tag.yml b/.github/workflows/docker-build-push-model-server-container-on-tag.yml index 494c54061..7767be9c3 100644 --- a/.github/workflows/docker-build-push-model-server-container-on-tag.yml +++ b/.github/workflows/docker-build-push-model-server-container-on-tag.yml @@ -5,6 +5,10 @@ on: tags: - '*' +env: + REGISTRY_IMAGE: danswer/danswer-model-server + LATEST_TAG: ${{ contains(github.ref_name, 'latest') }} + jobs: build-and-push: # See https://runs-on.com/runners/linux/ @@ -12,7 +16,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -31,8 +35,8 @@ jobs: platforms: linux/amd64,linux/arm64 push: true tags: | - danswer/danswer-model-server:${{ github.ref_name }} - danswer/danswer-model-server:latest + ${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }} + ${{ env.LATEST_TAG == 'true' && format('{0}:latest', env.REGISTRY_IMAGE) || '' }} build-args: | DANSWER_VERSION=${{ github.ref_name }} diff --git a/.github/workflows/docker-build-push-web-container-on-tag.yml b/.github/workflows/docker-build-push-web-container-on-tag.yml index 0a97a01f7..591071da6 100644 --- a/.github/workflows/docker-build-push-web-container-on-tag.yml +++ b/.github/workflows/docker-build-push-web-container-on-tag.yml @@ -7,7 +7,8 @@ on: env: REGISTRY_IMAGE: danswer/danswer-web-server - + LATEST_TAG: ${{ contains(github.ref_name, 'latest') }} + jobs: build: runs-on: @@ -35,7 +36,7 @@ jobs: images: ${{ env.REGISTRY_IMAGE }} tags: | type=raw,value=${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }} - type=raw,value=${{ env.REGISTRY_IMAGE }}:latest + type=raw,value=${{ env.LATEST_TAG == 'true' && format('{0}:latest', env.REGISTRY_IMAGE) || '' }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/.github/workflows/docker-tag-latest.yml b/.github/workflows/docker-tag-latest.yml index c33c0e59e..e2c7c30f3 100644 --- a/.github/workflows/docker-tag-latest.yml +++ b/.github/workflows/docker-tag-latest.yml @@ -1,3 +1,6 @@ +# This workflow is set up to be manually triggered via the GitHub Action tab. +# Given a version, it will tag those backend and webserver images as "latest". + name: Tag Latest Version on: diff --git a/.github/workflows/tag-nightly.yml b/.github/workflows/tag-nightly.yml new file mode 100644 index 000000000..35a88e7a4 --- /dev/null +++ b/.github/workflows/tag-nightly.yml @@ -0,0 +1,37 @@ +name: Nightly Tag Push + +on: + schedule: + - cron: '0 0 * * *' # Runs every day at midnight UTC + +permissions: + contents: write # Allows pushing tags to the repository + +jobs: + create-and-push-tag: + runs-on: [runs-on,runner=2cpu-linux-x64,"run-id=${{ github.run_id }}"] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Git user + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + - name: Create Nightly Tag + env: + DATE: ${{ github.run_id }} + run: | + TAG_NAME="nightly-latest-$(date +'%Y%m%d')" + echo "Creating tag: $TAG_NAME" + git tag $TAG_NAME + + - name: Push Tag + run: | + TAG_NAME="nightly-latest-$(date +'%Y%m%d')" + git push origin $TAG_NAME + \ No newline at end of file