From 0684e2e6d46c57d118f4b49e2b44ef89ed3d7587 Mon Sep 17 00:00:00 2001 From: ppawlowski Date: Fri, 15 Mar 2024 12:50:23 +0100 Subject: [PATCH 1/5] Add Dockerfile for Node-RED 4.0.0-beta.1-18 --- node-red-container/Dockerfile-4.0 | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 node-red-container/Dockerfile-4.0 diff --git a/node-red-container/Dockerfile-4.0 b/node-red-container/Dockerfile-4.0 new file mode 100644 index 00000000..0906b0ca --- /dev/null +++ b/node-red-container/Dockerfile-4.0 @@ -0,0 +1,35 @@ +FROM nodered/node-red:4.0.0-beta.1-18 + +ARG REGISTRY +ARG REGISTRY_TOKEN +ARG BUILD_TAG=latest +RUN if [[ ! -z "$REGISTRY_TOKEN" ]]; then echo "//$REGISTRY/:_authToken=$REGISTRY_TOKEN" >> ~/.npmrc ; fi +RUN if [[ ! -z "$REGISTRY" ]] ; then npm config set @flowfuse:registry "https://$REGISTRY"; fi + +COPY healthcheck.js /healthcheck.js + +COPY package.json /data +WORKDIR /data +RUN mkdir node_modules +RUN npm install + +USER root + +WORKDIR /usr/src/flowforge-nr-launcher +RUN chown -R node-red:node-red /usr/src/flowforge-nr-launcher + +USER node-red +RUN npm install @flowfuse/nr-launcher@${BUILD_TAG} + +USER root +RUN chmod -R g+w /data/* /data/.npm/* +RUN chown -R node-red:root /data/* /data/.npm/* + +USER node-red + +ENV NODE_PATH=/usr/src/node-red +ENV HOME=/usr/src/node-red + +EXPOSE 2880 + +ENTRYPOINT ["./node_modules/.bin/flowfuse-node-red", "-p", "2880", "-n", "/usr/src/node-red"] \ No newline at end of file From 3b02f56830f4685de08c5759b342bcc0433b79af Mon Sep 17 00:00:00 2001 From: ppawlowski Date: Fri, 15 Mar 2024 12:50:33 +0100 Subject: [PATCH 2/5] Add build and upload workflows for Node-RED 4.0.x container images --- .github/workflows/nodered-container.yml | 61 +++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/.github/workflows/nodered-container.yml b/.github/workflows/nodered-container.yml index 9770ac0a..8ff75ef6 100644 --- a/.github/workflows/nodered-container.yml +++ b/.github/workflows/nodered-container.yml @@ -209,3 +209,64 @@ jobs: aws_secret_access_key: ${{ secrets.AWS_ACCESS_KEY_SECRET }} temporary_registry_token: ${{ secrets.GITHUB_TOKEN }} eks_cluster_name: ${{ secrets.EKS_CLUSTER_NAME }} + + build-40: + name: Build 4.0.x container images + uses: flowfuse/github-actions-workflows/.github/workflows/build_container_image.yml@v0.8.0 + with: + image_name: 'node-red' + dockerfile_path: Dockerfile-4.0 + image_tag_prefix: '4.0.x-' + package_dependencies: | + @flowforge/nr-project-nodes + build_context: 'node-red-container' + npm_registry_url: ${{ vars.PUBLIC_NPM_REGISTRY_URL }} + scan_image: true + secrets: + npm_registry_auth_token: ${{ secrets.NPM_PUBLISH_TOKEN }} + temporary_registry_token: ${{ secrets.GITHUB_TOKEN }} + build-40-multi-architecture: + name: Build multi-architecture container image + needs: build-40 + uses: flowfuse/github-actions-workflows/.github/workflows/merge_multiarch_images.yml@v0.8.0 + with: + image_name: 'node-red' + image_tag_prefix: '4.0.x-' + secrets: + temporary_registry_token: ${{ secrets.GITHUB_TOKEN }} + upload-40-stage: + name: Upload image to staging ECR + if: github.ref_name == 'main' + needs: build-40-multi-architecture + uses: flowfuse/github-actions-workflows/.github/workflows/deploy_container_image.yml@v0.8.0 + with: + environment: stage + service_name: 'node-red' + deployment_name: 'node-red' + container_name: 'node-red' + deploy: false + image: ${{ needs.build-40-multi-architecture.outputs.image }} + image_tag_prefix: '4.0.x-' + secrets: + aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_ACCESS_KEY_SECRET }} + temporary_registry_token: ${{ secrets.GITHUB_TOKEN }} + eks_cluster_name: ${{ secrets.EKS_CLUSTER_NAME }} + upload-40-prod: + name: Upload image to production ECR + if: github.ref_name == 'main' + needs: build-40-multi-architecture + uses: flowfuse/github-actions-workflows/.github/workflows/deploy_container_image.yml@v0.8.0 + with: + environment: production + service_name: 'node-red' + deployment_name: 'node-red' + container_name: 'node-red' + deploy: false + image: ${{ needs.build-40-multi-architecture.outputs.image }} + image_tag_prefix: '4.0.x-' + secrets: + aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_ACCESS_KEY_SECRET }} + temporary_registry_token: ${{ secrets.GITHUB_TOKEN }} + eks_cluster_name: ${{ secrets.EKS_CLUSTER_NAME }} From 46287bc8f4a19ffbdfb83d01e683d72229f0eaae Mon Sep 17 00:00:00 2001 From: ppawlowski Date: Fri, 15 Mar 2024 12:53:21 +0100 Subject: [PATCH 3/5] Update Dockerfile to use node-red-dev image --- node-red-container/Dockerfile-4.0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node-red-container/Dockerfile-4.0 b/node-red-container/Dockerfile-4.0 index 0906b0ca..48c0834a 100644 --- a/node-red-container/Dockerfile-4.0 +++ b/node-red-container/Dockerfile-4.0 @@ -1,4 +1,4 @@ -FROM nodered/node-red:4.0.0-beta.1-18 +FROM nodered/node-red-dev:4.0.0-beta.1-18 ARG REGISTRY ARG REGISTRY_TOKEN From 19ecfd247d33c49d6dbb28ab4f47ace94cae8725 Mon Sep 17 00:00:00 2001 From: ppawlowski Date: Fri, 15 Mar 2024 13:28:36 +0100 Subject: [PATCH 4/5] Update Dockerfile-4.0 to use nodered/node-red-dev:4.0.0-beta.1 image --- node-red-container/Dockerfile-4.0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node-red-container/Dockerfile-4.0 b/node-red-container/Dockerfile-4.0 index 48c0834a..a958f0ac 100644 --- a/node-red-container/Dockerfile-4.0 +++ b/node-red-container/Dockerfile-4.0 @@ -1,4 +1,4 @@ -FROM nodered/node-red-dev:4.0.0-beta.1-18 +FROM nodered/node-red-dev:4.0.0-beta.1 ARG REGISTRY ARG REGISTRY_TOKEN From 396d595b6f2a0c960962105367af8e92bf29450b Mon Sep 17 00:00:00 2001 From: ppawlowski Date: Fri, 15 Mar 2024 13:31:04 +0100 Subject: [PATCH 5/5] Update Dockerfile-4.0 to use nodered/node-red-dev:v4.0.0-beta.1 image --- node-red-container/Dockerfile-4.0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node-red-container/Dockerfile-4.0 b/node-red-container/Dockerfile-4.0 index a958f0ac..cd1b9565 100644 --- a/node-red-container/Dockerfile-4.0 +++ b/node-red-container/Dockerfile-4.0 @@ -1,4 +1,4 @@ -FROM nodered/node-red-dev:4.0.0-beta.1 +FROM nodered/node-red-dev:v4.0.0-beta.1 ARG REGISTRY ARG REGISTRY_TOKEN