Skip to content

Commit 2e4bac3

Browse files
authored
Merge pull request #2702 from objectcomputing/release/0.8
Deploy v0.8.1 to develop
2 parents 8765195 + a8e4da7 commit 2e4bac3

File tree

10 files changed

+71
-58
lines changed

10 files changed

+71
-58
lines changed

.github/workflows/gradle-build-production.yml

Lines changed: 21 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,25 @@ on:
33
push:
44
branches:
55
- "master"
6-
76
env:
87
PROJECT_ID: ${{ secrets.RUN_PROJECT }}
98
RUN_REGION: us-central1
109
SERVICE_NAME: checkins-master
10+
TARGET_URL: https://checkins.objectcomputing.com
1111
jobs:
1212
build:
1313
runs-on: ubuntu-latest
1414
permissions:
15-
contents: read
16-
packages: write
15+
contents: 'read'
16+
id-token: 'write'
1717
environment:
1818
name: Production
19-
url: https://checkins.objectcomputing.com/
19+
url: ${{ env.TARGET_URL }}
2020
steps:
2121
- uses: actions/checkout@v4
2222
with:
2323
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
24-
- name: Set up Node Stable
24+
- name: Set up Node LTS
2525
uses: actions/setup-node@v4
2626
with:
2727
node-version: '22'
@@ -36,42 +36,29 @@ jobs:
3636
path: ~/.gradle/caches
3737
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
3838
restore-keys: ${{ runner.os }}-gradle
39-
- name: Validate Gradle wrapper
40-
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
41-
- name: Build with Gradle
42-
uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
39+
- name: Setup Gradle
40+
uses: gradle/actions/setup-gradle@v4
41+
- id: 'auth'
42+
uses: 'google-github-actions/auth@v2'
4343
with:
44-
arguments: assemble
45-
env:
46-
VITE_APP_API_URL: https://checkins.objectcomputing.com
47-
# - name: Publish package
48-
# uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
49-
# with:
50-
# arguments: publish
51-
# env:
52-
# GITHUB_TOKEN: ${{ secrets.GIT_HUB_TOKEN }}
53-
- name: Setup python
54-
run: |
55-
sudo apt-get install python2.7
56-
- name: Export gcloud related env variable
57-
run: export CLOUDSDK_PYTHON="/usr/bin/python2"
58-
- name: Setup gcloud CLI
59-
uses: google-github-actions/setup-gcloud@v0
44+
project_id: 'oci-intern-2019'
45+
workload_identity_provider: 'projects/832140020593/locations/global/workloadIdentityPools/github/providers/my-repo'
46+
- name: 'Set up Cloud SDK'
47+
uses: google-github-actions/setup-gcloud@v2
6048
with:
61-
version: "290.0.1"
62-
service_account_key: ${{ secrets.RUN_SA_KEY }}
63-
project_id: ${{ secrets.RUN_PROJECT }}
64-
- name: Auth Configure Docker
49+
version: '>= 363.0.0'
50+
- name: 'Auth Configure Docker'
6551
run: |-
6652
gcloud --quiet auth configure-docker
6753
- name: Build the Docker image
6854
run: |-
55+
./gradlew assemble
6956
cd server
7057
docker build --tag "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" .
58+
env:
59+
VITE_APP_API_URL: ${{ env.TARGET_URL }}
7160
- name: Push the Docker image to Google Container Registry
72-
run: |-
73-
cd server
74-
docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA"
61+
run: docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA"
7562
- name: Deploy image to Cloud Run
7663
run: |-
7764
gcloud run deploy "$SERVICE_NAME" \
@@ -89,21 +76,12 @@ jobs:
8976
--set-env-vars "OAUTH_CLIENT_SECRET=${{ secrets.OAUTH_CLIENT_SECRET }}" \
9077
--set-env-vars "OAUTH_CALLBACK_URI"=${{ secrets.OAUTH_CALLBACK_URI }} \
9178
--set-env-vars "DIRECTORY_ID=${{ secrets.DIRECTORY_ID }}" \
92-
--set-env-vars "TYPE=${{ secrets.SA_KEY_TYPE }}" \
93-
--set-env-vars "PROJECT_ID=${{ secrets.RUN_PROJECT }}" \
94-
--set-env-vars "PRIVATE_KEY_ID=${{ secrets.SA_PRIVATE_KEY_ID }}" \
95-
--set-env-vars "PRIVATE_KEY=${{ secrets.SA_PRIVATE_KEY }}" \
96-
--set-env-vars "CLIENT_EMAIL=${{ secrets.SA_CLIENT_EMAIL }}" \
97-
--set-env-vars "CLIENT_ID=${{ secrets.SA_CLIENT_ID }}" \
98-
--set-env-vars "AUTH_URI=${{ secrets.SA_AUTH_URI }}" \
99-
--set-env-vars "TOKEN_URI=${{ secrets.SA_TOKEN_URI }}" \
100-
--set-env-vars "AUTH_PROVIDER_X509_CERT_URL=${{ secrets.SA_AUTH_PROVIDER_X509_CERT_URL }}" \
101-
--set-env-vars "CLIENT_X509_CERT_URL=${{ secrets.SA_CLIENT_X509_CERT_URL }}" \
79+
--set-env-vars "SERVICE_ACCOUNT_CREDENTIALS=${{ secrets.SERVICE_ACCOUNT_CREDENTIALS }}" \
10280
--set-env-vars "GSUITE_SUPER_ADMIN=${{ secrets.GSUITE_SUPER_ADMIN }}" \
10381
--set-env-vars "MJ_APIKEY_PUBLIC=${{ secrets.MJ_APIKEY_PUBLIC }}" \
10482
--set-env-vars "MJ_APIKEY_PRIVATE=${{ secrets.MJ_APIKEY_PRIVATE }}" \
10583
--set-env-vars "GIT_HUB_TOKEN=${{ secrets.GIT_HUB_TOKEN }}" \
106-
--set-env-vars "WEB_ADDRESS=https://checkins.objectcomputing.com" \
84+
--set-env-vars "WEB_ADDRESS=${{ env.TARGET_URL }}" \
10785
--set-env-vars "[email protected]" \
10886
--set-env-vars "FROM_NAME=Check-Ins" \
10987
--set-env-vars "^@^MICRONAUT_ENVIRONMENTS=cloud,google,gcp" \

.github/workflows/gradle-deploy-develop.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
- name: Set up Node LTS
5050
uses: actions/setup-node@v4
5151
with:
52-
node-version: '20'
52+
node-version: '22'
5353
- name: Set up Temurin 21
5454
uses: actions/setup-java@v4
5555
with:

server/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
id "jacoco"
88
}
99

10-
version "0.7.0"
10+
version "0.8.1"
1111
group "com.objectcomputing.checkins"
1212

1313
repositories {

server/src/main/java/com/objectcomputing/checkins/services/role/member_roles/MemberRoleController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import io.micronaut.scheduling.annotation.ExecuteOn;
77
import io.micronaut.security.annotation.Secured;
88
import io.micronaut.security.rules.SecurityRule;
9+
import io.micronaut.cache.annotation.CacheInvalidate;
910
import jakarta.validation.constraints.NotNull;
1011

1112
import java.util.List;
@@ -34,6 +35,7 @@ HttpResponse<?> deleteMemberRole(@NotNull UUID roleId, @NotNull UUID memberId){
3435
}
3536

3637
@Post
38+
@CacheInvalidate(cacheNames = {"role-permission-cache"})
3739
HttpResponse<MemberRole> saveMemberRole(@NotNull @Body MemberRoleId id){
3840
MemberRole memberRole = memberRoleServices.saveByIds(id.getMemberId(), id.getRoleId());
3941
return HttpResponse.ok(memberRole);

web-ui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "web-ui",
3-
"version": "0.7.0",
3+
"version": "0.8.1",
44
"private": true,
55
"type": "module",
66
"dependencies": {

web-ui/src/components/settings/types/boolean.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const SettingsBoolean = ({ name, description, value, handleChange }) => {
2626
</label>
2727
{description && <p>{description}</p>}
2828
<Switch
29+
disableRipple
2930
id={labelId}
3031
className="settings-control"
3132
type="checkbox"

web-ui/src/pages/AnniversaryReportPage.jsx

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
noPermission,
1919
} from '../context/selectors';
2020
import { useQueryParameters } from '../helpers/query-parameters';
21+
import SkeletonLoader from '../components/skeleton_loader/SkeletonLoader';
2122

2223
const months = [
2324
'January',
@@ -43,6 +44,7 @@ const AnniversaryReportPage = () => {
4344
const [searchAnniversaryResults, setSearchAnniversaryResults] = useState([]);
4445
const [selectedMonths, setSelectedMonths] = useState(defaultMonths);
4546
const [hasSearched, setHasSearched] = useState(false);
47+
const [loading, setLoading] = useState(false);
4648

4749
useQueryParameters([
4850
{
@@ -57,9 +59,22 @@ const AnniversaryReportPage = () => {
5759
]);
5860

5961
const handleSearch = async monthsToSearch => {
60-
const anniversaryResults = await getAnniversaries(monthsToSearch, csrf);
61-
setSearchAnniversaryResults(sortAnniversaries(anniversaryResults));
62-
setHasSearched(true);
62+
setLoading(true);
63+
try {
64+
const anniversaryResults = await getAnniversaries(monthsToSearch, csrf);
65+
setSearchAnniversaryResults(sortAnniversaries(anniversaryResults));
66+
setHasSearched(true);
67+
} catch(e) {
68+
console.error(e);
69+
window.snackDispatch({
70+
type: UPDATE_TOAST,
71+
payload: {
72+
severity: 'error',
73+
toast: e,
74+
}
75+
});
76+
}
77+
setLoading(false);
6378
};
6479

6580
function onMonthChange(event, newValue) {
@@ -111,6 +126,10 @@ const AnniversaryReportPage = () => {
111126
</div>
112127
<div>
113128
{
129+
loading ?
130+
Array.from({ length: 10 }).map((_, index) => (
131+
<SkeletonLoader key={index} type="feedback_requests" />
132+
)) :
114133
<div className="search-results">
115134
<SearchBirthdayAnniversaryResults
116135
hasSearched={hasSearched}

web-ui/src/pages/BirthdayReportPage.jsx

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { getBirthdays } from '../api/birthdayanniversary';
1111
import { UPDATE_TOAST } from '../context/actions';
1212
import SearchBirthdayAnniversaryResults from '../components/search-results/SearchBirthdayAnniversaryResults';
1313
import { sortBirthdays } from '../context/util';
14+
import SkeletonLoader from '../components/skeleton_loader/SkeletonLoader';
1415

1516
import {
1617
selectCsrfToken,
@@ -43,6 +44,7 @@ const BirthdayReportPage = () => {
4344
const [searchBirthdayResults, setSearchBirthdayResults] = useState([]);
4445
const [selectedMonths, setSelectedMonths] = useState(defaultMonths);
4546
const [hasSearched, setHasSearched] = useState(false);
47+
const [loading, setLoading] = useState(false);
4648

4749
useQueryParameters([
4850
{
@@ -57,9 +59,21 @@ const BirthdayReportPage = () => {
5759
]);
5860

5961
const handleSearch = async monthsToSearch => {
60-
const birthdayResults = await getBirthdays(monthsToSearch, csrf);
61-
setSearchBirthdayResults(sortBirthdays(birthdayResults));
62-
setHasSearched(true);
62+
setLoading(true);
63+
try {
64+
const birthdayResults = await getBirthdays(monthsToSearch, csrf);
65+
setSearchBirthdayResults(sortBirthdays(birthdayResults));
66+
setHasSearched(true);
67+
} catch(e) {
68+
window.snackDispatch({
69+
type: UPDATE_TOAST,
70+
payload: {
71+
severity: 'error',
72+
toast: e,
73+
}
74+
});
75+
}
76+
setLoading(false);
6377
};
6478

6579
function onMonthChange(event, newValue) {
@@ -111,6 +125,10 @@ const BirthdayReportPage = () => {
111125
</div>
112126
<div>
113127
{
128+
loading ?
129+
Array.from({ length: 10 }).map((_, index) => (
130+
<SkeletonLoader key={index} type="feedback_requests" />
131+
)) :
114132
<div className="search-results">
115133
<SearchBirthdayAnniversaryResults
116134
hasSearched={hasSearched}

web-ui/src/pages/SettingsPage.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ const SettingsPage = () => {
214214
selectHasAdministerSettingsPermission(state) &&
215215
<div className="buttons">
216216
<Button
217+
disableRipple
217218
color="primary"
218219
onClick={save}>
219220
Save

web-ui/src/pages/__snapshots__/SettingsPage.test.jsx.snap

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,6 @@ exports[`SettingsPage > renders correctly 1`] = `
4848
<span
4949
class="MuiSwitch-thumb css-jsexje-MuiSwitch-thumb"
5050
/>
51-
<span
52-
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
53-
/>
5451
</span>
5552
<span
5653
class="MuiSwitch-track css-1yjjitx-MuiSwitch-track"
@@ -125,9 +122,6 @@ exports[`SettingsPage > renders correctly 1`] = `
125122
type="button"
126123
>
127124
Save
128-
<span
129-
class="MuiTouchRipple-root css-8je8zh-MuiTouchRipple-root"
130-
/>
131125
</button>
132126
</div>
133127
</div>

0 commit comments

Comments
 (0)