Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
419 commits
Select commit Hold shift + click to select a range
52d0491
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
d58d44a
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
fb1acaa
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
e7e8eca
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
9da8352
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
244d14d
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
5e1003f
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
bf2055f
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
d82fbe3
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
8ec54c0
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
e13a2cc
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
ea24f7b
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
b62f1a0
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
444e277
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
856f86d
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
243f7c9
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
341361b
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
a6d3267
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
a360b6e
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
8d79b57
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
b47c8ee
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
435e97b
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
27988b5
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
57b3a5c
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
8b8c171
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
feb78fe
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
f814255
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
3dc76ad
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
3008f45
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
94fe512
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
46aa573
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
a92ebb8
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
de0b98a
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
d765fdd
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
8bf9764
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
5273fcc
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
98361dd
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
96b0778
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 27, 2025
bb13160
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
6d1b786
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
e20bdec
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
d204b90
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
a380967
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
e7f155b
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
5aea81b
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
3ec77b2
Create docker-image-v4.yml
rhdmalone Jun 30, 2025
6bfe5e7
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
4180526
Create docker-image-v5.yml
rhdmalone Jun 30, 2025
6fe137b
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
9827084
Create docker-image-v6.yml
rhdmalone Jun 30, 2025
4c021f9
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
c6e4af4
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
b613017
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
8c1d83c
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
90ca1a7
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
f5d9913
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
3e41bf8
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
c672eec
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
2050351
Vault integration
rh-akhatavk Jun 30, 2025
71a9a27
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
853c71d
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
e062031
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
0ec1518
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
a7ea8e5
Changed sts client creation to pick values from config variable, not env
rh-akhatavk Jun 30, 2025
3bb2994
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
04bdee5
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
a8ceae1
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
8fb7a74
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
e75e9df
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
463ef00
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
ee03441
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
a2a5dcf
Merge pull request #30 from rissh/feat/openstack-create-vms
prabhapa Jun 30, 2025
ef13bc9
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
4e82635
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
7c91771
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
5bfb4f8
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
690ada0
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
cc2894d
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
b2137fc
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
12a7500
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
5d35184
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
4fcd986
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
740abd9
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
6bc1c90
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
67dea38
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
7f398a9
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
8f79bce
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
c6ca2d6
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
e954e5f
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
216b433
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
7eb4be9
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
9a5243b
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
6ad2141
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
2711932
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
79ca60a
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
e741c19
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
e398c3b
Merge branch 'main' into vault-integration
rh-akhatavk Jun 30, 2025
ce1e249
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
ea8e13a
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
4fb067d
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
98e35a0
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
03e82f2
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
8d1259f
Merge branch 'openshift-sustaining:main' into main
rhdmalone Jun 30, 2025
62c5487
Changed tests
rh-akhatavk Jul 1, 2025
23544fb
Added dynaconf to requirements
rh-akhatavk Jul 1, 2025
ad39cee
Revert "Changed tests"
rh-akhatavk Jul 1, 2025
6c32cdf
Added new env variables to tests
rh-akhatavk Jul 1, 2025
4b4e5d6
SUSTAINING-754 - create docker build pipeline
rhdmalone Jul 1, 2025
61384af
SUSTAINING-754 - create docker build pipeline
rhdmalone Jul 1, 2025
a3b09df
SUSTAINING-754 - create docker build pipeline
rhdmalone Jun 30, 2025
6056fe3
Merge pull request #35 from rhdmalone/main_20250630
prabhapa Jul 1, 2025
8606068
SUSTAINING-754 - create docker build pipeline
rhdmalone Jul 1, 2025
7814acc
SUSTAINING-754 - create docker build pipeline
rhdmalone Jul 1, 2025
3f58068
Added a way to override vault data using env vars
rh-akhatavk Jul 1, 2025
cef0195
Linter changes
rh-akhatavk Jul 1, 2025
c234781
SUSTAINING-754 - create docker build pipeline
rhdmalone Jul 1, 2025
dc5b90e
Added exception specific handling
rh-akhatavk Jul 1, 2025
272d675
Merge branch 'main' into main
rhdmalone Jul 1, 2025
6846649
SUSTAINING-754 - create docker build pipeline
rhdmalone Jul 1, 2025
5d16233
Merge pull request #36 from rhdmalone/main
prabhapa Jul 2, 2025
b9a150e
SUSTAINING-754 - create docker build pipeline
rhdmalone Jul 2, 2025
4de79c4
Merge branch 'main' of github.com:rhdmalone/ocp-sustaining-bot
rhdmalone Jul 2, 2025
991e3d3
SUSTAINING-754 - create docker build pipeline
rhdmalone Jul 2, 2025
82af349
SUSTAINING-754 - create docker build pipeline - adding build-args
rhdmalone Jul 2, 2025
9cf196a
Revert "SUSTAINING-754 - create docker build pipeline - adding build-…
rhdmalone Jul 2, 2025
c89ee82
Removed bare except
rh-akhatavk Jul 2, 2025
e3cb162
Fixed test failures caused because of network error
rh-akhatavk Jul 2, 2025
8f57484
Merge pull request #37 from rhdmalone/main
prabhapa Jul 3, 2025
126428b
Merge pull request #34 from rh-akhatavk/vault-integration
prabhapa Jul 3, 2025
d3bc5b4
SUSTAINING-1093 reorganise code so that the dictionary of params is c…
rhdmalone Jul 3, 2025
12bb837
Merge branch 'main' into SUSTAINING-1093-ParamsDict
rhdmalone Jul 4, 2025
faf3bd9
Update and add unit tests for OpenStack create_vm and list_vms functions
rissh Jul 3, 2025
b1ee223
Clean up redundant comments in OpenStack VM test cases
rissh Jul 4, 2025
9e7b807
Merge pull request #38 from rissh/test/update-openstack-vm-tests
prabhapa Jul 7, 2025
b2b1fd9
Merge branch 'main' into SUSTAINING-1093-ParamsDict
rhdmalone Jul 7, 2025
feef45e
Added fallback for no vault related environment variables
rh-akhatavk Jul 7, 2025
52547a1
Merge pull request #40 from rh-akhatavk/vault-integration
rh-akhatavk Jul 7, 2025
279d874
README.MD updates 7th July 2025
rhdmalone Jul 7, 2025
a7e3218
Dynaconf treats ALLOW_ALL_WORKSPACE_USERS setting as an int, so the c…
rhdmalone Jul 7, 2025
c4a0187
Merge pull request #42 from rhdmalone/allow-all-workspace-users
prabhapa Jul 8, 2025
8ba4369
Merge branch 'main' into readme_updates_dmv1
rhdmalone Jul 8, 2025
857f5e8
Merge pull request #41 from rhdmalone/readme_updates_dmv1
rhdmalone Jul 8, 2025
05fdea3
SUSTAINING-967- changed to list important team links command
katekeiroz-dev Jul 8, 2025
a6a5b20
Merge branch 'main' into SUSTAINING-1093-ParamsDict
rhdmalone Jul 8, 2025
92f1743
Merge pull request #39 from rhdmalone/SUSTAINING-1093-ParamsDict
rhdmalone Jul 8, 2025
c6fc6c0
Rename TEAM_LINKS to USEFUL_PROJECT_LINKS and update handler
katekeiroz-dev Jul 8, 2025
aa5269f
add new command aws-modify-vm
de1987 Jun 25, 2025
bc3401d
Merge pull request #33 from de1987/feature-aws-modify-vm
prabhapa Jul 9, 2025
ce54b54
Merge branch 'main' into team-links
katekeiroz-dev Jul 9, 2025
96cd9cd
Merge pull request #43 from katekeiroz-dev/team-links
prabhapa Jul 10, 2025
80c6183
add test step for slack handlers
de1987 Jul 14, 2025
9ac5218
Merge pull request #45 from de1987/test-step-slack-handlers
prabhapa Jul 15, 2025
12c0144
Refactor help command to display dynamic list of registered Slackbot …
rissh Jul 14, 2025
bb50eb4
Removed un-used import
rissh Jul 14, 2025
54dca87
Optimize help system: cache commands, centralize help checks
rissh Jul 14, 2025
8f0015b
Refine help system: rename 'decorator', review instance types for AWS
rissh Jul 15, 2025
fbb6bb9
Add static choices for OpenStack flavor field in help metadata
rissh Jul 16, 2025
29388d4
Merge pull request #44 from rissh/feat/slackbot-help-refactor
prabhapa Jul 17, 2025
70e0175
Added openstack keypair generation and rebased on top of master branch
rh-akhatavk Jul 15, 2025
ec4222e
Added checks for empty variables
rh-akhatavk Jul 16, 2025
3b3d7c7
Removed unused variable
rh-akhatavk Jul 17, 2025
3c50b28
Refactored to comply with new `help` command
rh-akhatavk Jul 17, 2025
7b63447
Linter changes
rh-akhatavk Jul 17, 2025
a03b56f
Merge pull request #46 from rh-akhatavk/openstack-keypair
prabhapa Jul 17, 2025
69d4114
allow parameters that are not key/value pairs at the start of the sub…
rhdmalone Jul 22, 2025
a811f83
allow parameters that are not key/value pairs at the start of the sub…
rhdmalone Jul 23, 2025
02ed3a8
Merge pull request #50 from rhdmalone/allow-params-no-hyphens
prabhapa Jul 25, 2025
35a7748
SUSTAINING-949: add trivy scan to docker image creation workflow
rhdmalone Jul 25, 2025
fa6d69a
Merge pull request #52 from rhdmalone/trivy-scan2
prabhapa Jul 25, 2025
237e15d
Update create-slackbot-docker-image.yml
prabhapa Jul 25, 2025
8c4d547
Update build pipeline with simple trivy gating
prabhapa Jul 25, 2025
ce6876e
Update create-slackbot-docker-image.yml
prabhapa Jul 25, 2025
666ab2f
refactor: commands pattern
de1987 Jul 23, 2025
595d628
Merge pull request #51 from de1987/sustaining-1113-commands-pattern
prabhapa Jul 30, 2025
e2aa78c
feat(openstack): Added stop, start and delete Openstack VM commond su…
rissh Jul 31, 2025
da92b43
test(openstack): add tests for stop, start and delete Openstack VM co…
rissh Jul 31, 2025
5d9379d
test(openstack): Add handler tests for stop, start and delete Opensta…
rissh Jul 31, 2025
f3546d0
test(openstack): Handles some ruff changes
rissh Jul 31, 2025
8d83bf4
Added rota integration
rh-akhatavk Aug 6, 2025
5ebbd7b
linting changes
rh-akhatavk Aug 6, 2025
00688d6
Added help for rota
rh-akhatavk Aug 12, 2025
8062110
Fixed tests
rh-akhatavk Aug 12, 2025
3839f1e
linting changes
rh-akhatavk Aug 12, 2025
7d0d7d7
Added a new changes in the list-team-links
Jul 31, 2025
bc9d61c
Merge pull request #54 from UdayYendva/imp_team_links
prabhapa Aug 13, 2025
fa5e700
Update tests/test_runner.py
rh-akhatavk Aug 13, 2025
19785ef
Update pr-checks.yaml
prabhapa Aug 13, 2025
c4aad01
Merge pull request #53 from rissh/feat/openstack-vm-actions
prabhapa Aug 13, 2025
1d1a25a
add linter ignore
rh-akhatavk Aug 14, 2025
87d7d07
Merge branch 'main' into rota-integration
rh-akhatavk Aug 14, 2025
293e815
linting changes
rh-akhatavk Aug 14, 2025
96d86b2
Merge pull request #55 from rh-akhatavk/rota-integration
prabhapa Aug 18, 2025
2c5efc6
cenrtificate text variable is not working in the current shape.For th…
prabhapa Aug 18, 2025
17169df
commented the cert printing for sec reasons
prabhapa Aug 18, 2025
e04b4a7
formatting + github workflow fix
prabhapa Aug 18, 2025
07ab278
cater for the case where the gsheet config items are not yet setup in…
rhdmalone Aug 18, 2025
e8c3b18
lint fix
rhdmalone Aug 18, 2025
9465843
Merge pull request #58 from rhdmalone/main
prabhapa Aug 19, 2025
499ab9a
Merge pull request #57 from openshift-sustaining/rh-cert-fix
prabhapa Aug 19, 2025
ff95e11
Added logging back
rh-akhatavk Aug 19, 2025
15769d8
Merge pull request #59 from rh-akhatavk/logging-fix
prabhapa Aug 19, 2025
2383a71
quick gsheet import fix
rh-akhatavk Aug 20, 2025
d95b9b2
Merge pull request #60 from rh-akhatavk/quick-gsheet-fix
prabhapa Aug 20, 2025
d13cbe9
local cleanup
rhdmalone Sep 3, 2025
29a23e7
Update .github/workflows/create-slackbot-docker-image.yml
rhdmalone Sep 5, 2025
9707c99
additional checks for rota command
rh-akhatavk Sep 9, 2025
d070829
Added a way to handle `N/A` in release version
rh-akhatavk Sep 10, 2025
c7e4346
Merge pull request #62 from rh-akhatavk/fix_rota_minor_errors
prabhapa Sep 17, 2025
1916586
Merge branch 'main' into main
rhdmalone Oct 7, 2025
5266507
Merge pull request #61 from rhdmalone/main
prabhapa Oct 8, 2025
f09d448
Quick fix if rota variables are not present in `.env`
rh-akhatavk Oct 10, 2025
080d248
lint fix
rh-akhatavk Oct 10, 2025
6dccfd0
Merge pull request #63 from rh-akhatavk/gsheet-fallback
prabhapa Oct 10, 2025
078ae7a
SUSTAINING-832: Build API structure
Atharva-Shinde Aug 11, 2025
219c44c
Merge pull request #56 from Atharva-Shinde/api
prabhapa Jan 8, 2026
2204452
SUSTAINING-1642: Make AWS AMIs configurable via env variables
rh-soboh Feb 19, 2026
71ff1a1
Rename get_aws_os_names to get_aws_os_ami_names
rh-soboh Feb 27, 2026
89ea2fd
Fix ruff formatting in handlers.py
rh-soboh Mar 2, 2026
0950080
Merge pull request #69 from rh-soboh/SUSTAINING-1642
prabhapa Mar 2, 2026
18b3d29
root/config.py dropped
Mar 4, 2026
0fdab57
Merge pull request #68 from Moebasim/smartsheetsync
prabhapa Mar 5, 2026
93b6eee
slack worker issues fixed : requirement.txt , config. , gsheet
prabhapa Mar 5, 2026
3b1e3eb
config py changes : synching with the root config.py approach
prabhapa Mar 5, 2026
cbbfafa
2 more required keys added : LOCK_DIR,TIMEZONE
prabhapa Mar 5, 2026
0a38328
SUSTAINING-1644 - GCP integration
rhdmalone Mar 10, 2026
cb7c957
Merge branch 'main' into main
rhdmalone Mar 10, 2026
4b29905
SUSTAINING-1644 - GCP integration
rhdmalone Mar 10, 2026
85d5568
SUSTAINING-1644 - GCP integration
rhdmalone Mar 10, 2026
7d88b2c
SUSTAINING-1644 - GCP integration
rhdmalone Mar 10, 2026
c84d90c
LOCK_TIMEOUT added and strip()func is removed
Mar 11, 2026
9b0d51f
Merge pull request #73 from openshift-sustaining/smartsheetsync
prabhapa Mar 11, 2026
e7ef312
migrate ROTA notifications from text labels to date-based filtering
Mar 18, 2026
0276782
SUSTAINING-1644 - GCP integration
rhdmalone Mar 20, 2026
33bda9f
Merge branch 'main' into main
rhdmalone Mar 20, 2026
6175fdf
Merge pull request #74 from Moebasim/smartsheetsync
prabhapa Mar 26, 2026
d49bc5b
Merge branch 'main' into main
prabhapa Apr 1, 2026
821cbdb
Merge pull request #71 from rhdmalone/main
prabhapa Apr 1, 2026
70847c7
Refactor ROTA with columns change & single QE model
Apr 8, 2026
0f093ad
Merge pull request #75 from mrbesseh/refactor/single-qe
prabhapa Apr 10, 2026
880cab9
Docker slack_worker image playbook
Apr 10, 2026
5c0835c
change to version of trivy image
rhdmalone Apr 15, 2026
43e8333
Merge pull request #77 from rhdmalone/main
prabhapa Apr 16, 2026
b7a085d
safe trivy
Apr 22, 2026
a9bf295
add PR checks
Apr 22, 2026
c24860e
slack_worker core-tests
Apr 23, 2026
264e889
update on slack_worker core-tests
Apr 23, 2026
3667691
update on slack_worker core-tests
Apr 23, 2026
a210f45
paths edits
Apr 23, 2026
9905ed9
Fix CI failures: test conftest timing, lint error, and missing exports
rh-soboh Apr 27, 2026
b149f39
Merge branch 'main' into workflow/image
rh-soboh Apr 27, 2026
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
87 changes: 87 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Slack Worker Environment Configuration
# Copy this file to .env and fill in with your actual values

# ============================================================================
# SLACK CONFIGURATION
# ============================================================================
# Slack bot token for sending messages and DMs
SLACK_BOT_TOKEN=xoxb-YOUR-BOT-TOKEN-HERE

# Slack channel ID for group reminders (e.g., #rota-notifications)
ROTA_GROUP_CHANNEL=C086RHFK7ED

# Slack user ID mapping (JSON format, without outer quotes in .env)
# Maps display names to Slack user IDs for @mentions
ROTA_USERS={"user1": "U00000000001", "user2": "U00000000002", "user3": "U00000000003"}

# ============================================================================
# GOOGLE SHEETS CONFIGURATION
# ============================================================================
# Google Sheets spreadsheet ID (ROTA sheet)
SPREADSHEET_ID=YOUR-SPREADSHEET-ID-HERE

# Google service account credentials (JSON)
# Remove quotes from the JSON if pasted from .json file
ROTA_SERVICE_ACCOUNT={"type": "service_account", "project_id": "your-project-id", "private_key": "-----BEGIN PRIVATE KEY-----\nYOUR-PRIVATE-KEY-HERE\n-----END PRIVATE KEY-----", "client_email": "your-service-account@project.iam.gserviceaccount.com"}

# ============================================================================
# SMARTSHEET CONFIGURATION
# ============================================================================
# Smartsheet API access token
SMARTSHEET_ACCESS_TOKEN=YOUR-SMARTSHEET-TOKEN-HERE

# Smartsheet sheet IDs for each OCP version (Z-Stream releases)
# Get these from Smartsheet URL: https://app.smartsheet.com/sheets/{SHEET_ID}
#
# IMPORTANT: The sync job dynamically discovers versions from SMARTSHEET_SHEET_*_ID env vars.
# To add/remove versions:
# 1. Uncomment the SMARTSHEET_SHEET_X_XX_ID line
# 2. Add the actual sheet ID value
# 3. Job automatically discovers and syncs it
#
# Active versions (currently synced)
SMARTSHEET_SHEET_4_12_ID=7020066991564676
SMARTSHEET_SHEET_4_13_ID=3756051883052932
SMARTSHEET_SHEET_4_14_ID=868851797413764
SMARTSHEET_SHEET_4_15_ID=6000327677398916
SMARTSHEET_SHEET_4_16_ID=2840413782101892

# Future versions - uncomment to be automatically included in sync when needed!
# SMARTSHEET_SHEET_4_17_ID=7572774457397124
# SMARTSHEET_SHEET_4_18_ID=7994157331074948
# SMARTSHEET_SHEET_4_19_ID=8025934201311108
# SMARTSHEET_SHEET_4_20_ID=4695628593450884
# SMARTSHEET_SHEET_4_21_ID=YOUR-SHEET-ID-HERE
# SMARTSHEET_SHEET_4_22_ID=YOUR-SHEET-ID-HERE

# Release filtering configuration
# Number of months ahead from current month to include in release filter
# Default: 1 (current month + 1 month ahead)
# Examples:
# 1 = Feb 1 - Mar 31 (if today is Feb 26)
# 2 = Feb 1 - Apr 30
# 3 = Feb 1 - May 31
RELEASE_FILTER_MONTHS_AHEAD=1
# SMARTSHEET_SHEET_4_18_ID=7994157331074948
# SMARTSHEET_SHEET_4_19_ID=8025934201311108
# SMARTSHEET_SHEET_4_20_ID=4695628593450884

# ============================================================================
# SCHEDULER CONFIGURATION
# ============================================================================
# Cron expressions for scheduled jobs
# Format: minute hour day month day_of_week

# ROTA Jobs
SCHEDULE_ROTA_SHEET_SYNC=0 8 * * MON,THU
SCHEDULE_ROTA_NOTIFICATIONS=0 9 * * MON,THU

# To disable a job, set its schedule to empty:
# SCHEDULE_ROTA_SHEET_SYNC=
# SCHEDULE_ROTA_NOTIFICATIONS=

# ============================================================================
# LOGGING CONFIGURATION
# ============================================================================
# Log level (DEBUG, INFO, WARNING, ERROR)
LOG_LEVEL=INFO
135 changes: 135 additions & 0 deletions .github/workflows/create-slackbot-docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
name: Create Docker Image for Slackbot
on:
workflow_dispatch:
inputs:
quay_registry_username:
description: 'Username'
required: true
quay_registry_password:
description: 'Password'
required: true
tag_major_version:
description: 'Major Version'
required: true
default: "1"
tag_minor_version:
description: 'Minor Version'
required: true
default: "1"
push_when_critical_errors_in_scan:
description: 'Push when Critical Errors in Scan'
required: true
default: "false"
type: choice
options:
- "true"
- "false"
permissions:
contents: read
security-events: write
jobs:
build-and-push:
runs-on: ubuntu-latest
env:
IMAGE_NAME: "quay.io/ocp_sustaining_engineering/slack_backend"
TAG_PATCH_VERSION: 0
SLACKBOT_IMAGE_REPO_URL: "https://quay.io/api/v1/repository/ocp_sustaining_engineering/slack_backend/tag/"
steps:
- name: Validate inputs
run: |
if ! [[ "${{ inputs.tag_major_version }}" =~ ^[0-9]+$ ]]; then
echo "Major version must be numeric"
exit 1
fi
if ! [[ "${{ inputs.tag_minor_version }}" =~ ^[0-9]+$ ]]; then
echo "Minor version must be numeric"
exit 1
fi
- name: Checkout code
uses: actions/checkout@v4
- name: Get Next Tag Version
uses: nick-fields/retry@v2
with:
timeout_minutes: 5
max_attempts: 3
retry_on: error
command: |
PAGE=1
LIMIT=50
HAS_MORE=true
ALL_TAGS='[]'
FILTER_PARAMS="&onlyActiveTags=1&filter_tag_name=like:${{ inputs.tag_major_version }}.${{ inputs.tag_minor_version }}."
while [ "$HAS_MORE" = true ]; do
echo "Fetching page $PAGE..."
PAGE_AND_LIMIT_PARAMS="?limit=$LIMIT&page=$PAGE"
if ! JSON_RESPONSE=$(curl -s -f --max-time 300 "$SLACKBOT_IMAGE_REPO_URL$PAGE_AND_LIMIT_PARAMS$FILTER_PARAMS"); then
echo "Failed to fetch tags from API"
exit 1
fi
TAGS=$(echo "$JSON_RESPONSE" | jq '.tags')
ALL_TAGS=$(jq -s 'add' <(echo "$ALL_TAGS") <(echo "$TAGS"))
HAS_MORE=$(echo "$JSON_RESPONSE" | jq '.has_additional')
PAGE=$((PAGE + 1))
done
COUNT_EXISTING=$(echo "$ALL_TAGS" | jq '. | length')
if [ "$COUNT_EXISTING" -eq 0 ]; then
NEXT_TAG_VERSION="${{ inputs.tag_major_version }}.${{ inputs.tag_minor_version }}.${{ env.TAG_PATCH_VERSION }}"
else
MAX_VER=$(echo "$ALL_TAGS" | jq -r '.[].name'| sort -V | tail -n1)
IFS='.' read -r MAJOR MINOR PATCH <<< "$MAX_VER"
NEW_PATCH=$((PATCH + 1))
NEXT_TAG_VERSION="${{ inputs.tag_major_version }}.${{ inputs.tag_minor_version }}.${NEW_PATCH}"
fi
echo "NEXT_TAG_VERSION=$NEXT_TAG_VERSION" >> $GITHUB_ENV
echo "Computed image version: $NEXT_TAG_VERSION"
- name: Login to Quay.io
id: login
run: |
set -e
QUAY_PASSWORD=$(jq -r '.inputs.quay_registry_password' $GITHUB_EVENT_PATH)
echo ::add-mask::$QUAY_PASSWORD
QUAY_USERNAME=$(jq -r '.inputs.quay_registry_username' $GITHUB_EVENT_PATH)
echo ::add-mask::$QUAY_USERNAME
echo ":closed_lock_with_key: Logging in to quay.io..."
echo "$QUAY_PASSWORD" | docker login quay.io -u "$QUAY_USERNAME" --password-stdin
- name: Build Docker image locally
uses: docker/build-push-action@v5
with:
context: .
push: false
tags: ${{ env.IMAGE_NAME }}:${{ env.NEXT_TAG_VERSION }}
load: true
timeout-minutes: 30
- name: Trivy scan gating
run: |
if [ "$PUSH_ON_CRITICAL" == "true" ]; then
EXIT_CODE=0
else
EXIT_CODE=1
fi

echo "Using Trivy exit code: $EXIT_CODE"

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
aquasec/trivy:0.69.3 image \
--severity CRITICAL \
--format table \
--exit-code $EXIT_CODE \
${{ env.IMAGE_NAME }}:${{ env.NEXT_TAG_VERSION }}
env:
PUSH_ON_CRITICAL: ${{ inputs.push_when_critical_errors_in_scan }}

- name: Push Docker image to Quay
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ env.IMAGE_NAME }}:${{ env.NEXT_TAG_VERSION }}

- name: Clean up
if: ${{ always() }}
run: |
echo ":wastebasket: Removing temporary file etc"
rm -f /home/runner/.docker/config.json
docker logout quay.io || true

134 changes: 134 additions & 0 deletions .github/workflows/create-slackworker-docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
name: Create Docker Image for Slackworker
on:
workflow_dispatch:
inputs:
quay_registry_username:
description: 'Username'
required: true
quay_registry_password:
description: 'Password'
required: true
tag_major_version:
description: 'Major Version'
required: true
default: "1"
tag_minor_version:
description: 'Minor Version'
required: true
default: "1"
push_when_critical_errors_in_scan:
description: 'Push when Critical Errors in Scan'
required: true
default: "false"
type: choice
options:
- "true"
- "false"
permissions:
contents: read
security-events: write
jobs:
build-and-push:
runs-on: ubuntu-latest
env:
IMAGE_NAME: "quay.io/ocp_sustaining_engineering/slack_worker"
TAG_PATCH_VERSION: 0
SLACKWORKER_IMAGE_REPO_URL: "https://quay.io/api/v1/repository/ocp_sustaining_engineering/slack_worker/tag/"
steps:
- name: Validate inputs
run: |
if ! [[ "${{ inputs.tag_major_version }}" =~ ^[0-9]+$ ]]; then
echo "Major version must be numeric"
exit 1
fi
if ! [[ "${{ inputs.tag_minor_version }}" =~ ^[0-9]+$ ]]; then
echo "Minor version must be numeric"
exit 1
fi
- name: Checkout code
uses: actions/checkout@v4
- name: Get Next Tag Version
uses: nick-fields/retry@v2
with:
timeout_minutes: 5
max_attempts: 3
retry_on: error
command: |
PAGE=1
LIMIT=50
HAS_MORE=true
ALL_TAGS='[]'
FILTER_PARAMS="&onlyActiveTags=1&filter_tag_name=like:${{ inputs.tag_major_version }}.${{ inputs.tag_minor_version }}."
while [ "$HAS_MORE" = true ]; do
echo "Fetching page $PAGE..."
PAGE_AND_LIMIT_PARAMS="?limit=$LIMIT&page=$PAGE"
if ! JSON_RESPONSE=$(curl -s -f --max-time 300 "$SLACKWORKER_IMAGE_REPO_URL$PAGE_AND_LIMIT_PARAMS$FILTER_PARAMS"); then
echo "Failed to fetch tags from API"
exit 1
fi
TAGS=$(echo "$JSON_RESPONSE" | jq '.tags')
ALL_TAGS=$(jq -s 'add' <(echo "$ALL_TAGS") <(echo "$TAGS"))
HAS_MORE=$(echo "$JSON_RESPONSE" | jq '.has_additional')
PAGE=$((PAGE + 1))
done
COUNT_EXISTING=$(echo "$ALL_TAGS" | jq '. | length')
if [ "$COUNT_EXISTING" -eq 0 ]; then
NEXT_TAG_VERSION="${{ inputs.tag_major_version }}.${{ inputs.tag_minor_version }}.${{ env.TAG_PATCH_VERSION }}"
else
MAX_VER=$(echo "$ALL_TAGS" | jq -r '.[].name'| sort -V | tail -n1)
IFS='.' read -r MAJOR MINOR PATCH <<< "$MAX_VER"
NEW_PATCH=$((PATCH + 1))
NEXT_TAG_VERSION="${{ inputs.tag_major_version }}.${{ inputs.tag_minor_version }}.${NEW_PATCH}"
fi
echo "NEXT_TAG_VERSION=$NEXT_TAG_VERSION" >> $GITHUB_ENV
echo "Computed image version: $NEXT_TAG_VERSION"
- name: Login to Quay.io
id: login
run: |
set -e
QUAY_PASSWORD=$(jq -r '.inputs.quay_registry_password' $GITHUB_EVENT_PATH)
echo ::add-mask::$QUAY_PASSWORD
QUAY_USERNAME=$(jq -r '.inputs.quay_registry_username' $GITHUB_EVENT_PATH)
echo ::add-mask::$QUAY_USERNAME
echo ":closed_lock_with_key: Logging in to quay.io..."
echo "$QUAY_PASSWORD" | docker login quay.io -u "$QUAY_USERNAME" --password-stdin
- name: Build Docker image locally
uses: docker/build-push-action@v5
with:
context: slack_worker
push: false
tags: ${{ env.IMAGE_NAME }}:${{ env.NEXT_TAG_VERSION }}
load: true
timeout-minutes: 30
- name: Trivy scan gating
run: |
if [ "$PUSH_ON_CRITICAL" == "true" ]; then
EXIT_CODE=0
else
EXIT_CODE=1
fi

echo "Using Trivy exit code: $EXIT_CODE"

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
aquasec/trivy:0.69.3 image \
--severity CRITICAL \
--format table \
--exit-code $EXIT_CODE \
${{ env.IMAGE_NAME }}:${{ env.NEXT_TAG_VERSION }}
env:
PUSH_ON_CRITICAL: ${{ inputs.push_when_critical_errors_in_scan }}

- name: Push Docker image to Quay
uses: docker/build-push-action@v5
with:
context: slack_worker
push: true
tags: ${{ env.IMAGE_NAME }}:${{ env.NEXT_TAG_VERSION }}

- name: Clean up
if: ${{ always() }}
run: |
echo ":wastebasket: Removing temporary file etc"
rm -f /home/runner/.docker/config.json
docker logout quay.io || true
Loading