ci: Add CI workflow for building fat container (#7385)
This commit changes the client test workflow into building the fat container's image, and so builds server and RTS as well, in order to achieve that.
This commit is contained in:
parent
0b37812b56
commit
c6c5e4fef3
|
|
@ -1,4 +1,4 @@
|
|||
name: Appsmith Test Workflow
|
||||
name: Test, build and push Docker Image
|
||||
|
||||
on:
|
||||
# This line enables manual triggering of this workflow.
|
||||
|
|
@ -10,6 +10,7 @@ on:
|
|||
paths:
|
||||
- "app/client/**"
|
||||
- "app/server/**"
|
||||
- "app/rts/**"
|
||||
- "!app/client/cypress/manual_TestSuite/**"
|
||||
|
||||
# trigger for pushes to release and master
|
||||
|
|
@ -18,6 +19,7 @@ on:
|
|||
paths:
|
||||
- "app/client/**"
|
||||
- "app/server/**"
|
||||
- "app/rts/**"
|
||||
- "!app/client/cypress/manual_TestSuite/**"
|
||||
|
||||
# Change the working directory for all the jobs in this workflow
|
||||
|
|
@ -194,7 +196,7 @@ jobs:
|
|||
echo ::set-output name=version::$next_version-SNAPSHOT
|
||||
echo ::set-output name=tag::$(echo ${GITHUB_REF:11})
|
||||
|
||||
- name: Build package
|
||||
- name: Test and Build package
|
||||
env:
|
||||
APPSMITH_MONGODB_URI: "mongodb://localhost:27017/mobtools"
|
||||
APPSMITH_REDIS_URL: "redis://127.0.0.1:6379"
|
||||
|
|
@ -212,10 +214,65 @@ jobs:
|
|||
name: build
|
||||
path: app/server/dist/
|
||||
|
||||
buildRts:
|
||||
defaults:
|
||||
run:
|
||||
working-directory: app/rts
|
||||
runs-on: ubuntu-latest
|
||||
# Only run this workflow for internally triggered events
|
||||
if: |
|
||||
github.event.pull_request.head.repo.full_name == github.repository ||
|
||||
github.event_name == 'push' ||
|
||||
github.event_name == 'workflow_dispatch'
|
||||
|
||||
steps:
|
||||
# Checkout the code
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Use Node.js 14.15.4
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: "14.15.4"
|
||||
|
||||
# Here, the GITHUB_REF is of type /refs/head/<branch_name>. We extract branch_name from this by removing the
|
||||
# first 11 characters. This can be used to build images for several branches
|
||||
# Since this is an unreleased build, we get the latest released version number, increment the minor number in it,
|
||||
# append a `-SNAPSHOT` at it's end to prepare the snapshot version number. This is used as the project's version.
|
||||
- name: Get the version to tag the Docker image
|
||||
id: vars
|
||||
run: |
|
||||
# Since this is an unreleased build, we set the version to incremented version number with a
|
||||
# `-SNAPSHOT` suffix.
|
||||
latest_released_version="$(git tag --list 'v*' --sort=-version:refname | head -1)"
|
||||
echo "latest_released_version = $latest_released_version"
|
||||
next_version="$(echo "$latest_released_version" | awk -F. -v OFS=. '{ $NF++; print }')"
|
||||
echo "next_version = $next_version"
|
||||
echo ::set-output name=version::$next_version-SNAPSHOT
|
||||
echo ::set-output name=tag::$(echo ${GITHUB_REF:11})
|
||||
|
||||
- name: Build
|
||||
run: ./build.sh
|
||||
|
||||
# Upload the build artifact so that it can be used by the test & deploy job in the workflow
|
||||
- name: Upload server build bundle
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: build
|
||||
path: app/rts/dist/
|
||||
|
||||
ui-test:
|
||||
needs: [buildClient, buildServer]
|
||||
needs: [buildClient, buildServer, buildRts]
|
||||
# Only run if the build step is successful
|
||||
if: success()
|
||||
# If the build has been triggered manually via workflow_dispatch or via a push to protected branches
|
||||
# then we don't check for the PR approved state
|
||||
if: |
|
||||
success() &&
|
||||
(github.event_name == 'workflow_dispatch' ||
|
||||
github.event_name == 'push' ||
|
||||
(github.event_name == 'pull_request_review' &&
|
||||
github.event.review.state == 'approved'))
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
|
|
@ -292,7 +349,7 @@ jobs:
|
|||
echo ::set-output name=tag::$(echo ${GITHUB_REF:11})
|
||||
|
||||
# Start server
|
||||
- name: start server
|
||||
- name: Start server
|
||||
working-directory: app/server
|
||||
env:
|
||||
APPSMITH_MONGODB_URI: "mongodb://localhost:27017/mobtools"
|
||||
|
|
@ -313,8 +370,9 @@ jobs:
|
|||
run: |
|
||||
sleep 30s
|
||||
|
||||
- name: Exit if Server hasnt started
|
||||
- name: "Exit if Server hasn't started"
|
||||
run: |
|
||||
lsof -i :8080 || true;
|
||||
if [[ `ps -ef | grep "server-1.0-SNAPSHOT" | grep java |wc -l` == 0 ]]; then
|
||||
echo "Server Not Started";
|
||||
exit 1;
|
||||
|
|
@ -418,7 +476,6 @@ jobs:
|
|||
|
||||
ui-test-result:
|
||||
needs: ui-test
|
||||
# Only run if the ui-test with matrices step is successful
|
||||
if: always()
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
|
|
@ -467,6 +524,18 @@ jobs:
|
|||
name: build
|
||||
path: app/client/build
|
||||
|
||||
- name: Download the server build artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: build
|
||||
path: app/server/dist
|
||||
|
||||
- name: Download the server build artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: build
|
||||
path: app/rts/dist
|
||||
|
||||
# Here, the GITHUB_REF is of type /refs/head/<branch_name>. We extract branch_name from this by removing the
|
||||
# first 11 characters. This can be used to build images for several branches
|
||||
- name: Get the version to tag the Docker image
|
||||
|
|
@ -474,27 +543,82 @@ jobs:
|
|||
run: echo ::set-output name=tag::$(echo ${GITHUB_REF:11})
|
||||
|
||||
# Build release Docker image and push to Docker Hub
|
||||
- name: Push release image to Docker Hub
|
||||
- name: Push client release image to Docker Hub
|
||||
if: success() && github.ref == 'refs/heads/release' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
|
||||
run: |
|
||||
docker build -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-editor:${{steps.branch_name.outputs.tag}} .
|
||||
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-editor:${{steps.branch_name.outputs.tag}}
|
||||
|
||||
# Build release-frozen Docker image and push to Docker Hub
|
||||
- name: Push release-frozen image to Docker Hub
|
||||
if: success() && github.ref == 'refs/heads/release-frozen' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
|
||||
working-directory: app/client
|
||||
run: |
|
||||
docker build -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-editor:${{steps.branch_name.outputs.tag}} .
|
||||
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-editor:${{steps.branch_name.outputs.tag}}
|
||||
|
||||
# Build master Docker image and push to Docker Hub
|
||||
- name: Push production image to Docker Hub with commit tag
|
||||
- name: Push client master image to Docker Hub with commit tag
|
||||
if: success() && github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
|
||||
working-directory: app/client
|
||||
run: |
|
||||
docker build -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-editor:${GITHUB_SHA} .
|
||||
docker build -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-editor:nightly .
|
||||
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-editor:${GITHUB_SHA}
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-editor:nightly
|
||||
|
||||
# Build release Docker image and push to Docker Hub
|
||||
- name: Push server release image to Docker Hub
|
||||
if: success() && github.ref == 'refs/heads/release'
|
||||
working-directory: app/server
|
||||
run: |
|
||||
docker build --build-arg APPSMITH_SEGMENT_CE_KEY=${{ secrets.APPSMITH_SEGMENT_CE_KEY }} -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-server:${{steps.vars.outputs.tag}} .
|
||||
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-server:${{steps.vars.outputs.tag}}
|
||||
|
||||
# Build master Docker image and push to Docker Hub
|
||||
- name: Push server master image to Docker Hub with commit tag
|
||||
if: success() && github.ref == 'refs/heads/master'
|
||||
working-directory: app/server
|
||||
run: |
|
||||
docker build --build-arg APPSMITH_SEGMENT_CE_KEY=${{ secrets.APPSMITH_SEGMENT_CE_KEY }} -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-server:${GITHUB_SHA} .
|
||||
docker build --build-arg APPSMITH_SEGMENT_CE_KEY=${{ secrets.APPSMITH_SEGMENT_CE_KEY }} -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-server:nightly .
|
||||
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-server:${GITHUB_SHA}
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-server:nightly
|
||||
|
||||
# Build release Docker image and push to Docker Hub
|
||||
- name: Push RTS release image to Docker Hub
|
||||
if: success() && github.ref == 'refs/heads/release'
|
||||
working-directory: app/rts
|
||||
run: |
|
||||
docker build -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-rts:${{steps.vars.outputs.tag}} .
|
||||
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-rts:${{steps.vars.outputs.tag}}
|
||||
|
||||
# Build master Docker image and push to Docker Hub
|
||||
- name: Push RTS master image to Docker Hub with commit tag
|
||||
if: success() && github.ref == 'refs/heads/master'
|
||||
working-directory: app/rts
|
||||
run: |
|
||||
docker build -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-rts:${GITHUB_SHA} .
|
||||
docker build -t ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-rts:nightly .
|
||||
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-rts:${GITHUB_SHA}
|
||||
docker push ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-rts:nightly
|
||||
|
||||
- name: Build and push release image to Docker Hub
|
||||
if: success() && github.ref == 'refs/heads/release' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
|
||||
run: |
|
||||
docker build \
|
||||
--build-arg APPSMITH_SEGMENT_CE_KEY=${{ secrets.APPSMITH_SEGMENT_CE_KEY }} \
|
||||
--tag ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-ce:${{steps.branch_name.outputs.tag}} \
|
||||
.
|
||||
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
||||
docker push --all-tags ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-ce
|
||||
|
||||
- name: Build and push master image to Docker Hub with commit tag
|
||||
if: success() && github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
|
||||
run: |
|
||||
docker build \
|
||||
--build-arg APPSMITH_SEGMENT_CE_KEY=${{ secrets.APPSMITH_SEGMENT_CE_KEY }} \
|
||||
--tag ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-ce:${GITHUB_SHA} \
|
||||
--tag ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-ce:nightly \
|
||||
.
|
||||
echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
||||
docker push --all-tags ${{ secrets.DOCKER_HUB_ORGANIZATION }}/appsmith-ce
|
||||
|
|
@ -48,6 +48,14 @@ sleep 30
|
|||
|
||||
echo "Checking if the containers have started"
|
||||
sudo docker ps -a
|
||||
for fcid in $(sudo docker ps -a | awk '/Exited/ { print $1 }'); do
|
||||
echo "Logs for container '$fcid'."
|
||||
docker logs "$fcid"
|
||||
done
|
||||
if sudo docker ps -a | grep -q Exited; then
|
||||
echo "One or more containers failed to start." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Checking if the server has started"
|
||||
status_code=$(curl -o /dev/null -s -w "%{http_code}\n" https://dev.appsmith.com/api/v1/users)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user