MDBF-850 - Backup PROD master tag #154
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: bbm-build-container | |
on: | |
workflow_dispatch: | |
push: | |
paths: | |
- "Dockerfile" | |
- .github/workflows/bbm_build_container.yml | |
pull_request: | |
paths: | |
- "Dockerfile" | |
- .github/workflows/bbm_build_container.yml | |
jobs: | |
build: | |
runs-on: ubuntu-22.04 | |
name: build | |
env: | |
MAIN_BRANCH: false | |
services: | |
registry: | |
image: registry:2 | |
ports: | |
- 5000:5000 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Enable Production release - no rebuild | |
run: echo "MAIN_BRANCH=true" >> $GITHUB_ENV | |
if: github.ref == 'refs/heads/main' | |
- name: Set up env vars | |
run: | | |
echo "REPO=bb-master" >>$GITHUB_ENV | |
- name: Check Dockerfile with hadolint | |
if: ${{ env.MAIN_BRANCH == 'false' }} | |
run: | | |
docker run -i -v $(pwd):/mnt -w /mnt ghcr.io/hadolint/hadolint:latest hadolint /mnt/Dockerfile | |
- name: Build master image | |
if: ${{ env.MAIN_BRANCH == 'false' }} | |
run: | | |
podman build . --tag ${{ env.REPO }}:master | |
- name: Build master-web image | |
if: ${{ env.MAIN_BRANCH == 'false' }} | |
run: | | |
podman build . --tag ${{ env.REPO }}:master-web \ | |
--build-arg master_type=master-web | |
- name: Push images to local registry | |
if: ${{ env.MAIN_BRANCH == 'false' }} | |
run: | | |
for img in master master-web; do | |
podman push --tls-verify=0 \ | |
${{ env.REPO }}:$img \ | |
docker://localhost:5000/${{ env.REPO }}:$img | |
done | |
- name: Check images | |
if: ${{ env.MAIN_BRANCH == 'false' }} | |
run: | | |
docker run -i localhost:5000/${{ env.REPO }}:master buildbot --version | |
#//TEMP there is probably a better way for master-web here | |
docker run -i localhost:5000/${{ env.REPO }}:master-web buildbot --version | |
- name: Check for registry credentials | |
if: > | |
github.repository == 'MariaDB/buildbot' | |
run: | | |
missing=() | |
[[ -n "${{ secrets.QUAY_USER }}" ]] || missing+=(QUAY_USER) | |
[[ -n "${{ secrets.QUAY_TOKEN }}" ]] || missing+=(QUAY_TOKEN) | |
for i in "${missing[@]}"; do | |
echo "Missing github secret: $i" | |
done | |
if (( ${#missing[@]} == 0 )); then | |
echo "DEPLOY_IMAGES=true" >> $GITHUB_ENV | |
else | |
echo "Not pushing images to registry" | |
fi | |
- name: Login to ghcr.io | |
if: ${{ env.DEPLOY_IMAGES == 'true' }} | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Push DEV images to ghcr.io | |
if: ${{ env.DEPLOY_IMAGES == 'true' && env.MAIN_BRANCH == 'false' }} | |
run: | | |
for image in master master-web; do | |
msg="Push docker image to ghcr.io (${image})" | |
line="${msg//?/=}" | |
printf "\n${line}\n${msg}\n${line}\n" | |
skopeo copy --all --src-tls-verify=0 \ | |
docker://localhost:5000/${{ env.REPO }}:${image} \ | |
docker://ghcr.io/mariadb/buildbot:dev_${image} | |
done | |
- name: ghcr.io - backup Production tag | |
if: ${{ env.DEPLOY_IMAGES == 'true' && env.MAIN_BRANCH =='true' }} | |
run: | |
for image in master master-web; do | |
msg="Create backup for ${image} on ghcr.io" | |
line="${msg//?/=}" | |
printf "\n${line}\n${msg}\n${line}\n" | |
skopeo copy --all --src-tls-verify=0 \ | |
docker://ghcr.io/mariadb/buildbot:${image} \ | |
docker://ghcr.io/mariadb/buildbot:previous_${image} | |
done | |
- name: Login to quay.io | |
if: ${{ env.DEPLOY_IMAGES == 'true' }} | |
uses: docker/login-action@v2 | |
with: | |
registry: quay.io | |
username: ${{ secrets.QUAY_USER }} | |
password: ${{ secrets.QUAY_TOKEN }} | |
- name: Push DEV images to quay.io | |
if: ${{ env.DEPLOY_IMAGES == 'true' && env.MAIN_BRANCH == 'false' }} | |
run: | | |
for image in master master-web; do | |
msg="Push docker image to quay.io (${image})" | |
line="${msg//?/=}" | |
printf "\n${line}\n${msg}\n${line}\n" | |
skopeo copy --all --src-tls-verify=0 \ | |
docker://localhost:5000/${{ env.REPO }}:${image} \ | |
docker://quay.io/mariadb-foundation/${{ env.REPO }}:dev_${image} | |
done | |
- name: quay.io - backup Production tag | |
if: ${{ env.DEPLOY_IMAGES == 'true' && env.MAIN_BRANCH =='true' }} | |
run: | |
for image in master master-web; do | |
msg="Create backup for ${image} on quay.io" | |
line="${msg//?/=}" | |
printf "\n${line}\n${msg}\n${line}\n" | |
skopeo copy --all --src-tls-verify=0 \ | |
docker://quay.io/mariadb-foundation/${{ env.REPO }}:${image} \ | |
docker://quay.io/mariadb-foundation/${{ env.REPO }}:previous_${image} | |
done |