Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Update node and CI workflows #3582

Merged
merged 1 commit into from
Nov 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 3 additions & 43 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
with:
omniout-token: ${{ secrets.OMNIOUT_TOKEN }}
- name: Lint
run: docker-compose run --no-deps web yarn lint:nofix
run: docker compose run --no-deps web yarn lint:nofix

frontend:
name: Frontend
Expand All @@ -43,7 +43,7 @@ jobs:
with:
omniout-token: ${{ secrets.OMNIOUT_TOKEN }}
- name: Test frontend
run: docker-compose run --no-deps web yarn test:js:coverage
run: docker compose run --no-deps web yarn test:js:coverage
- name: Upload coverage artifact
uses: actions/upload-artifact@v3
with:
Expand All @@ -63,7 +63,7 @@ jobs:
- name: Test backend
# prettier-ignore
run: >
docker-compose run
docker compose run
-e DB_ENCRYPTION_KEY=MMkDMBfYL0Xoz3Xu1ENs3AkdCZdJoks5PNlUBkK7KDc=
-e DJANGO_DEBUG=false
-e SECURE_SSL_REDIRECT=false
Expand All @@ -80,43 +80,3 @@ jobs:
path: |
.coverage
coverage.xml

coverage:
name: Coverage
needs: [frontend, backend]
runs-on: SFDO-Tooling-Ubuntu
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
steps:
- uses: actions/checkout@v3
- uses: ./.github/setup-docker-compose
with:
omniout-token: ${{ secrets.OMNIOUT_TOKEN }}
- name: Download frontend coverage artifacts
uses: actions/download-artifact@v3
with:
name: frontend-coverage
path: coverage
- name: Download backend coverage artifacts
uses: actions/download-artifact@v3
with:
name: backend-coverage
- name: Upload coverage reports
if: env.COVERALLS_REPO_TOKEN
# prettier-ignore
run: >
docker-compose run
-e COVERALLS_REPO_TOKEN
-e COVERALLS_PARALLEL=true
-e COVERALLS_SERVICE_NUMBER="${{ github.run_id }}"
-e CI_BUILD_NUMBER="${{ github.run_id }}"
--no-deps
web bash -c '
yarn test:js:report-coverage &&
yarn test:py:report-coverage &&
python -m coveralls --finish
'
- name: Check coverage
run: |
docker-compose run --no-deps web yarn test:js:check-coverage
docker-compose run --no-deps web yarn test:py:check-coverage
41 changes: 32 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,39 @@
FROM ghcr.io/oddbird/pyjs:py3.9-node16

ARG BUILD_ENV=development
ARG PROD_ASSETS
ARG OMNIOUT_TOKEN
FROM node:22 AS node_base
FROM python:3.9

# Node and npm
COPY --from=node_base /usr/local/lib/node_modules /usr/local/lib/node_modules
COPY --from=node_base /usr/local/bin/node /usr/local/bin/node
COPY --from=node_base /opt/yarn-* /opt/yarn
RUN ln -s /usr/local/lib/node_modules/corepack/dist/corepack.js /usr/local/bin/corepack
RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
RUN ln -s /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx
RUN ln -s /opt/yarn/bin/yarn /usr/local/bin/yarn
RUN ln -s /opt/yarn/bin/yarnpkg /usr/local/bin/yarnpkg
RUN node --version && npm --version && yarn --version

# System setup:
RUN apt-get update \
&& apt-get install -y gettext redis-tools --no-install-recommends \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# Python context setup:
RUN pip install --no-cache-dir --upgrade pip pip-tools

# ================ ENVIRONMENT
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1

WORKDIR /app

# Env setup:
ENV PYTHONPATH /app
ENV DJANGO_SETTINGS_MODULE config.settings.production
ENV OMNIOUT_TOKEN ${OMNIOUT_TOKEN}
ENV PYTHONPATH=/app
ENV DJANGO_SETTINGS_MODULE=config.settings.production
ENV OMNIOUT_TOKEN=${OMNIOUT_TOKEN}

# Install sfdx
RUN npm install --location=global sfdx-cli --ignore-scripts
Expand All @@ -17,15 +42,13 @@ RUN npm install --location=global sfdx-cli --ignore-scripts
COPY ./requirements requirements
RUN pip install --no-cache-dir --upgrade pip pip-tools \
&& pip install --no-cache-dir -r requirements/prod.txt
RUN if [ "${BUILD_ENV}" = "development" ] ; then \
pip install --no-cache-dir -r requirements/dev.txt; \
fi
RUN pip install --no-cache-dir -r requirements/dev.txt

# JS client setup:
COPY ./.npmrc .npmrc
COPY ./package.json package.json
COPY ./yarn.lock yarn.lock
RUN yarn install --check-files
RUN yarn install --ignore-optional --check-files

COPY . /app

Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"url": "https://github.com/SFDO-Tooling/MetaDeploy.git"
},
"engines": {
"node": "^16",
"node": "22.x",
"yarn": "^1.22"
},
"scripts": {
Expand Down Expand Up @@ -39,7 +39,7 @@
"test:js:coverage": "JEST_JUNIT_OUTPUT_DIR='./coverage' jest --ci --runInBand --reporters=default --reporters=jest-junit",
"test:js:report-coverage": "cat ./coverage/lcov.info | coveralls",
"test:js:check-coverage": "nyc check-coverage --temp-directory coverage",
"test:py": "pytest",
"test:py": "python -m pytest",
"test:py:report-coverage": "python -m coveralls",
"test:py:check-coverage": "coverage report --fail-under=100",
"test:py:integration": "pytest -m 'integration'",
Expand Down Expand Up @@ -154,7 +154,7 @@
"webpack-merge": "^5.8.0"
},
"optionalDependencies": {
"@omnistudio/omniscript-lwc-compiler": "^244.4.0"
"@omnistudio/omniscript-lwc-compiler": "^252.6.0"
},
"resolutions": {
"@storybook/**/ansi-regex": "^5.0.1",
Expand Down
18 changes: 10 additions & 8 deletions src/js/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ import { createSocket } from '@/js/utils/websockets';

const history = createBrowserHistory();

console.log('>>> index.tsx');
log('>>> index.tsx');

const App = () => (
<DocumentTitle title={window.SITE_NAME}>
Expand Down Expand Up @@ -100,26 +100,28 @@ init_i18n((i18nError?: string) => {
log(i18nError);
}
const el = document.getElementById('app');
console.log('>>> fetched app element');
log('>>> fetched app element');
if (el) {
// Remove scratch org UUID from URL
const scratchOrgUUID = getUrlParam(SCRATCH_ORG_QS);
if (scratchOrgUUID) {
history.replace({ search: removeUrlParam(SCRATCH_ORG_QS) });
}

console.log('>>> creating app store');
log('>>> creating app store');
// Create store
const appStore = createStore(
reducer,
undefined,
composeWithDevTools(
// eslint-disable-next-line
// @ts-ignore
applyMiddleware(thunk.withExtraArgument(history), logger),
),
);
console.log('>>> appStore created');
log('>>> appStore created');

console.log('>>> connecting to websocket server');
log('>>> connecting to websocket server');
// Connect to WebSocket server
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
const host = window.location.host;
Expand All @@ -132,7 +134,7 @@ init_i18n((i18nError?: string) => {
},
},
});
console.log('>>> connected to websocket server');
log('>>> connected to websocket server');

// Get JS globals
let GLOBALS = {};
Expand Down Expand Up @@ -177,7 +179,7 @@ init_i18n((i18nError?: string) => {

// Set App element (used for react-SLDS modals)
settings.setAppElement(el);
console.log('>>> about to fetch products');
log('>>> about to fetch products');
// Fetch products before rendering App
(appStore.dispatch as ThunkDispatch)(fetchProducts()).finally(() => {
(appStore.dispatch as ThunkDispatch)(fetchOrgJobs());
Expand All @@ -200,6 +202,6 @@ init_i18n((i18nError?: string) => {
</Provider>,
);
});
console.log('>>> fetched products');
log('>>> fetched products');
}
});
Loading
Loading