Skip to content

Daily Release AtlasCLI Docker Image #100

Daily Release AtlasCLI Docker Image

Daily Release AtlasCLI Docker Image #100

name: Daily build
on:
schedule:
- cron: "0 1 * * *" # Every day at 1:00 AM
workflow_dispatch:
jobs:
release_image:
name: Build and publish docker image
runs-on: ubuntu-latest
env:
IMAGE_REPOSITORY: mongodb/atlas
PLATFORMS: linux/amd64,linux/arm64
QUAY: quay.io
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set date
id: set-date
run: |
DATE=$(date +'%Y-%m-%d')
echo DATE=${DATE} >> $GITHUB_ENV
- name: 'Get latest tag'
id: get-latest-tag
uses: oprypin/find-latest-tag@v1
with:
repository: mongodb/mongodb-atlas-cli
releases-only: true
regex: 'atlascli*'
- name: Extract version
run: |
release_tag=${{ steps.get-latest-tag.outputs.tag }}
echo "LATEST_VERSION=${release_tag#*/}" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: ${{ env.PLATFORMS }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
platforms: ${{ env.PLATFORMS }}
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: "${{ secrets.DOCKERHUB_USER }}"
password: "${{ secrets.DOCKERHUB_SECRET }}"
- name: Login to Quay
uses: docker/login-action@v2
with:
registry: "${{ env.QUAY }}"
username: "${{ secrets.QUAY_USER }}"
password: "${{ secrets.QUAY_TOKEN }}"
- name: Build and push container to Dockerhub
uses: docker/build-push-action@v5
with:
context: .
platforms: ${{ env.PLATFORMS }}
tags: ${{ env.IMAGE_REPOSITORY }}:latest ,
${{ env.IMAGE_REPOSITORY }}:${{ env.LATEST_VERSION }} ,
${{ env.IMAGE_REPOSITORY }}:${{ env.LATEST_VERSION }}-${{ env.DATE }}
file: Dockerfile
push: true
- name: Push container to quay
run: |
docker buildx imagetools create \
--tag ${{ env.QUAY }}/${{ env.IMAGE_REPOSITORY }}:latest \
--tag ${{ env.QUAY }}/${{ env.IMAGE_REPOSITORY }}:${{ env.LATEST_VERSION }} \
--tag ${{ env.QUAY }}/${{ env.IMAGE_REPOSITORY }}:${{ env.LATEST_VERSION }}-${{ env.DATE }} \
${{ env.IMAGE_REPOSITORY }}:latest