-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: All in one docker image setup and build workflow (#4960)
* base images and action * fix base docker files * aio base image name change * aio action changes * aio base action cleanup * aio file name changes * base dockerfile updated for warning * fixes * action fix * wip * wip * added app build * checking aio app * fixes * fixes * fixes to app images * fix nginx * fix action * fix base * modified dockerfie * dockerfile fix * fix * pg-setup fix * fix dockerfile-app * fix * fix: dockerfile-app * added cache * fix dockerfile * wip * wip * wip * wip * wip * wip * wip * wip * wip * modified base action caching * modified aio-branch action * wip * feature action modified * action modified * test deployment * fix action * flatten branch name, uninstall helm before installing * wip * testing build * test build * action modified * updated action * feature helm deployment fix * removed feature build cache * enabled cache on aio app build * removed aio.sh
- Loading branch information
Showing
15 changed files
with
1,416 additions
and
472 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,36 +16,86 @@ jobs: | |
gh_buildx_version: ${{ steps.set_env_variables.outputs.BUILDX_VERSION }} | ||
gh_buildx_platforms: ${{ steps.set_env_variables.outputs.BUILDX_PLATFORMS }} | ||
gh_buildx_endpoint: ${{ steps.set_env_variables.outputs.BUILDX_ENDPOINT }} | ||
build_base: ${{ steps.changed_files.outputs.base_any_changed }} | ||
image_tag: ${{ steps.set_env_variables.outputs.IMAGE_TAG }} | ||
|
||
steps: | ||
- id: set_env_variables | ||
name: Set Environment Variables | ||
run: | | ||
echo "BUILDX_DRIVER=cloud" >> $GITHUB_OUTPUT | ||
echo "BUILDX_VERSION=lab:latest" >> $GITHUB_OUTPUT | ||
echo "BUILDX_PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT | ||
echo "BUILDX_ENDPOINT=makeplane/plane-dev" >> $GITHUB_OUTPUT | ||
echo "TARGET_BRANCH=${{ env.TARGET_BRANCH }}" >> $GITHUB_OUTPUT | ||
if [ "${{ env.TARGET_BRANCH }}" == "master" ]; then | ||
echo "BUILDX_DRIVER=cloud" >> $GITHUB_OUTPUT | ||
echo "BUILDX_VERSION=lab:latest" >> $GITHUB_OUTPUT | ||
echo "BUILDX_PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT | ||
echo "BUILDX_ENDPOINT=makeplane/plane-dev" >> $GITHUB_OUTPUT | ||
echo "TARGET_BRANCH=${{ env.TARGET_BRANCH }}" >> $GITHUB_OUTPUT | ||
echo "IMAGE_TAG=latest" >> $GITHUB_OUTPUT | ||
else | ||
echo "BUILDX_DRIVER=docker-container" >> $GITHUB_OUTPUT | ||
echo "BUILDX_VERSION=latest" >> $GITHUB_OUTPUT | ||
echo "BUILDX_PLATFORMS=linux/amd64" >> $GITHUB_OUTPUT | ||
echo "BUILDX_ENDPOINT=" >> $GITHUB_OUTPUT | ||
if [ "${{ env.TARGET_BRANCH }}" == "preview" ]; then | ||
echo "TARGET_BRANCH=preview" >> $GITHUB_OUTPUT | ||
echo "IMAGE_TAG=preview" >> $GITHUB_OUTPUT | ||
else | ||
echo "TARGET_BRANCH=develop" >> $GITHUB_OUTPUT | ||
echo "IMAGE_TAG=develop" >> $GITHUB_OUTPUT | ||
fi | ||
fi | ||
- id: checkout_files | ||
name: Checkout Files | ||
uses: actions/checkout@v4 | ||
|
||
- name: Get changed files | ||
id: changed_files | ||
uses: tj-actions/changed-files@v42 | ||
full_base_build_push: | ||
runs-on: ubuntu-latest | ||
needs: [base_build_setup] | ||
env: | ||
BASE_IMG_TAG: makeplane/plane-aio-base:full-${{ needs.base_build_setup.outputs.image_tag }} | ||
TARGET_BRANCH: ${{ needs.base_build_setup.outputs.gh_branch_name }} | ||
BUILDX_DRIVER: ${{ needs.base_build_setup.outputs.gh_buildx_driver }} | ||
BUILDX_VERSION: ${{ needs.base_build_setup.outputs.gh_buildx_version }} | ||
BUILDX_PLATFORMS: ${{ needs.base_build_setup.outputs.gh_buildx_platforms }} | ||
BUILDX_ENDPOINT: ${{ needs.base_build_setup.outputs.gh_buildx_endpoint }} | ||
steps: | ||
- name: Check out the repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: Login to Docker Hub | ||
uses: docker/login-action@v3 | ||
with: | ||
files_yaml: | | ||
base: | ||
- aio/Dockerfile.base | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
base_build_push: | ||
if: ${{ needs.base_build_setup.outputs.build_base == 'true' || github.event_name == 'workflow_dispatch' || needs.base_build_setup.outputs.gh_branch_name == 'master' }} | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
with: | ||
driver: ${{ env.BUILDX_DRIVER }} | ||
version: ${{ env.BUILDX_VERSION }} | ||
endpoint: ${{ env.BUILDX_ENDPOINT }} | ||
|
||
- name: Build and Push to Docker Hub | ||
uses: docker/[email protected] | ||
with: | ||
context: ./aio | ||
file: ./aio/Dockerfile-base-full | ||
platforms: ${{ env.BUILDX_PLATFORMS }} | ||
tags: ${{ env.BASE_IMG_TAG }} | ||
push: true | ||
cache-from: type=gha | ||
cache-to: type=gha,mode=max | ||
env: | ||
DOCKER_BUILDKIT: 1 | ||
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | ||
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
slim_base_build_push: | ||
runs-on: ubuntu-latest | ||
needs: [base_build_setup] | ||
env: | ||
BASE_IMG_TAG: makeplane/plane-aio-base:${{ needs.base_build_setup.outputs.gh_branch_name }} | ||
BASE_IMG_TAG: makeplane/plane-aio-base:slim-${{ needs.base_build_setup.outputs.image_tag }} | ||
TARGET_BRANCH: ${{ needs.base_build_setup.outputs.gh_branch_name }} | ||
BUILDX_DRIVER: ${{ needs.base_build_setup.outputs.gh_buildx_driver }} | ||
BUILDX_VERSION: ${{ needs.base_build_setup.outputs.gh_buildx_version }} | ||
|
@@ -55,15 +105,6 @@ jobs: | |
- name: Check out the repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set Docker Tag | ||
run: | | ||
if [ "${{ env.TARGET_BRANCH }}" == "master" ]; then | ||
TAG=makeplane/plane-aio-base:latest | ||
else | ||
TAG=${{ env.BASE_IMG_TAG }} | ||
fi | ||
echo "BASE_IMG_TAG=${TAG}" >> $GITHUB_ENV | ||
- name: Login to Docker Hub | ||
uses: docker/login-action@v3 | ||
with: | ||
|
@@ -81,10 +122,12 @@ jobs: | |
uses: docker/[email protected] | ||
with: | ||
context: ./aio | ||
file: ./aio/Dockerfile.base | ||
file: ./aio/Dockerfile-base-slim | ||
platforms: ${{ env.BUILDX_PLATFORMS }} | ||
tags: ${{ env.BASE_IMG_TAG }} | ||
push: true | ||
cache-from: type=gha | ||
cache-to: type=gha,mode=max | ||
env: | ||
DOCKER_BUILDKIT: 1 | ||
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,197 @@ | ||
name: Branch Build AIO | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
full: | ||
description: 'Run full build' | ||
type: boolean | ||
required: false | ||
default: false | ||
slim: | ||
description: 'Run slim build' | ||
type: boolean | ||
required: false | ||
default: false | ||
release: | ||
types: [released, prereleased] | ||
|
||
env: | ||
TARGET_BRANCH: ${{ github.ref_name || github.event.release.target_commitish }} | ||
FULL_BUILD_INPUT: ${{ github.event.inputs.full }} | ||
SLIM_BUILD_INPUT: ${{ github.event.inputs.slim }} | ||
|
||
jobs: | ||
branch_build_setup: | ||
name: Build Setup | ||
runs-on: ubuntu-latest | ||
outputs: | ||
gh_branch_name: ${{ steps.set_env_variables.outputs.TARGET_BRANCH }} | ||
gh_buildx_driver: ${{ steps.set_env_variables.outputs.BUILDX_DRIVER }} | ||
gh_buildx_version: ${{ steps.set_env_variables.outputs.BUILDX_VERSION }} | ||
gh_buildx_platforms: ${{ steps.set_env_variables.outputs.BUILDX_PLATFORMS }} | ||
gh_buildx_endpoint: ${{ steps.set_env_variables.outputs.BUILDX_ENDPOINT }} | ||
aio_base_tag: ${{ steps.set_env_variables.outputs.AIO_BASE_TAG }} | ||
do_full_build: ${{ steps.set_env_variables.outputs.DO_FULL_BUILD }} | ||
do_slim_build: ${{ steps.set_env_variables.outputs.DO_SLIM_BUILD }} | ||
|
||
steps: | ||
- id: set_env_variables | ||
name: Set Environment Variables | ||
run: | | ||
if [ "${{ env.TARGET_BRANCH }}" == "master" ] || [ "${{ github.event_name }}" == "release" ]; then | ||
echo "BUILDX_DRIVER=cloud" >> $GITHUB_OUTPUT | ||
echo "BUILDX_VERSION=lab:latest" >> $GITHUB_OUTPUT | ||
echo "BUILDX_PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT | ||
echo "BUILDX_ENDPOINT=makeplane/plane-dev" >> $GITHUB_OUTPUT | ||
echo "AIO_BASE_TAG=latest" >> $GITHUB_OUTPUT | ||
else | ||
echo "BUILDX_DRIVER=docker-container" >> $GITHUB_OUTPUT | ||
echo "BUILDX_VERSION=latest" >> $GITHUB_OUTPUT | ||
echo "BUILDX_PLATFORMS=linux/amd64" >> $GITHUB_OUTPUT | ||
echo "BUILDX_ENDPOINT=" >> $GITHUB_OUTPUT | ||
if [ "${{ env.TARGET_BRANCH }}" == "preview" ]; then | ||
echo "AIO_BASE_TAG=preview" >> $GITHUB_OUTPUT | ||
else | ||
echo "AIO_BASE_TAG=develop" >> $GITHUB_OUTPUT | ||
fi | ||
fi | ||
echo "TARGET_BRANCH=${{ env.TARGET_BRANCH }}" >> $GITHUB_OUTPUT | ||
if [ "${{ env.FULL_BUILD_INPUT }}" == "true" ] || [ "${{github.event_name}}" == "push" ] || [ "${{github.event_name}}" == "release" ]; then | ||
echo "DO_FULL_BUILD=true" >> $GITHUB_OUTPUT | ||
else | ||
echo "DO_FULL_BUILD=false" >> $GITHUB_OUTPUT | ||
fi | ||
if [ "${{ env.SLIM_BUILD_INPUT }}" == "true" ] || [ "${{github.event_name}}" == "push" ] || [ "${{github.event_name}}" == "release" ]; then | ||
echo "DO_SLIM_BUILD=true" >> $GITHUB_OUTPUT | ||
else | ||
echo "DO_SLIM_BUILD=false" >> $GITHUB_OUTPUT | ||
fi | ||
- id: checkout_files | ||
name: Checkout Files | ||
uses: actions/checkout@v4 | ||
|
||
full_build_push: | ||
if: ${{ needs.branch_build_setup.outputs.do_full_build == 'true' }} | ||
runs-on: ubuntu-20.04 | ||
needs: [branch_build_setup] | ||
env: | ||
BUILD_TYPE: full | ||
AIO_BASE_TAG: ${{ needs.branch_build_setup.outputs.aio_base_tag }} | ||
AIO_IMAGE_TAGS: makeplane/plane-aio:full-${{ needs.branch_build_setup.outputs.gh_branch_name }} | ||
TARGET_BRANCH: ${{ needs.branch_build_setup.outputs.gh_branch_name }} | ||
BUILDX_DRIVER: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }} | ||
BUILDX_VERSION: ${{ needs.branch_build_setup.outputs.gh_buildx_version }} | ||
BUILDX_PLATFORMS: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }} | ||
BUILDX_ENDPOINT: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }} | ||
steps: | ||
- name: Set Docker Tag | ||
run: | | ||
if [ "${{ github.event_name }}" == "release" ]; then | ||
TAG=makeplane/plane-aio:${{env.BUILD_TYPE}}-stable,makeplane/plane-aio:${{env.BUILD_TYPE}}-${{ github.event.release.tag_name }} | ||
elif [ "${{ env.TARGET_BRANCH }}" == "master" ]; then | ||
TAG=makeplane/plane-aio:${{env.BUILD_TYPE}}-latest | ||
else | ||
TAG=${{ env.AIO_IMAGE_TAGS }} | ||
fi | ||
echo "AIO_IMAGE_TAGS=${TAG}" >> $GITHUB_ENV | ||
- name: Login to Docker Hub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
with: | ||
driver: ${{ env.BUILDX_DRIVER }} | ||
version: ${{ env.BUILDX_VERSION }} | ||
endpoint: ${{ env.BUILDX_ENDPOINT }} | ||
|
||
- name: Check out the repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: Build and Push to Docker Hub | ||
uses: docker/[email protected] | ||
with: | ||
context: . | ||
file: ./aio/Dockerfile-app | ||
platforms: ${{ env.BUILDX_PLATFORMS }} | ||
tags: ${{ env.AIO_IMAGE_TAGS }} | ||
push: true | ||
build-args: | | ||
BUILD_TAG=${{ env.AIO_BASE_TAG }} | ||
BUILD_TYPE=${{env.BUILD_TYPE}} | ||
cache-from: type=gha | ||
cache-to: type=gha,mode=max | ||
|
||
env: | ||
DOCKER_BUILDKIT: 1 | ||
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | ||
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
slim_build_push: | ||
if: ${{ needs.branch_build_setup.outputs.do_slim_build == 'true' }} | ||
runs-on: ubuntu-20.04 | ||
needs: [branch_build_setup] | ||
env: | ||
BUILD_TYPE: slim | ||
AIO_BASE_TAG: ${{ needs.branch_build_setup.outputs.aio_base_tag }} | ||
AIO_IMAGE_TAGS: makeplane/plane-aio:slim-${{ needs.branch_build_setup.outputs.gh_branch_name }} | ||
TARGET_BRANCH: ${{ needs.branch_build_setup.outputs.gh_branch_name }} | ||
BUILDX_DRIVER: ${{ needs.branch_build_setup.outputs.gh_buildx_driver }} | ||
BUILDX_VERSION: ${{ needs.branch_build_setup.outputs.gh_buildx_version }} | ||
BUILDX_PLATFORMS: ${{ needs.branch_build_setup.outputs.gh_buildx_platforms }} | ||
BUILDX_ENDPOINT: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }} | ||
steps: | ||
- name: Set Docker Tag | ||
run: | | ||
if [ "${{ github.event_name }}" == "release" ]; then | ||
TAG=makeplane/plane-aio:${{env.BUILD_TYPE}}-stable,makeplane/plane-aio:${{env.BUILD_TYPE}}-${{ github.event.release.tag_name }} | ||
elif [ "${{ env.TARGET_BRANCH }}" == "master" ]; then | ||
TAG=makeplane/plane-aio:${{env.BUILD_TYPE}}-latest | ||
else | ||
TAG=${{ env.AIO_IMAGE_TAGS }} | ||
fi | ||
echo "AIO_IMAGE_TAGS=${TAG}" >> $GITHUB_ENV | ||
- name: Login to Docker Hub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
with: | ||
driver: ${{ env.BUILDX_DRIVER }} | ||
version: ${{ env.BUILDX_VERSION }} | ||
endpoint: ${{ env.BUILDX_ENDPOINT }} | ||
|
||
- name: Check out the repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: Build and Push to Docker Hub | ||
uses: docker/[email protected] | ||
with: | ||
context: . | ||
file: ./aio/Dockerfile-app | ||
platforms: ${{ env.BUILDX_PLATFORMS }} | ||
tags: ${{ env.AIO_IMAGE_TAGS }} | ||
push: true | ||
build-args: | | ||
BUILD_TAG=${{ env.AIO_BASE_TAG }} | ||
BUILD_TYPE=${{env.BUILD_TYPE}} | ||
cache-from: type=gha | ||
cache-to: type=gha,mode=max | ||
|
||
env: | ||
DOCKER_BUILDKIT: 1 | ||
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | ||
DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} |
Oops, something went wrong.