You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/copilot-instructions.md
+10-3Lines changed: 10 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,6 +46,13 @@ make build # Verify build
46
46
make test# Run tests
47
47
```
48
48
49
-
If you are intentionally modernizing syntax or APIs for Go 1.26+, run `go fix ./...` manually as a separate step.
50
-
51
-
Always keep `README.md` and `docs/` updated for any architectural changes, new commands/flags, removed flags, new packages, or changes to the development workflow. This includes command usage examples, flag tables, and CLI reference sections.
49
+
## Pre-PR Checklist
50
+
51
+
- never use the `main` branch for development. Always create a new feature branch from `main` for your changes.
52
+
- ensure your branch is up to date with `main` before creating a pull request
53
+
- write clear and descriptive commit messages that explain the purpose of each change
54
+
- ensure all tests pass locally before pushing your changes
55
+
- ask the version is going to be released as a patch, minor, or major update and ensure the change log reflects this
56
+
- update the `docs/Whats-New.md` file with a summary of the change, including the motivation and impact and the version it will be released in
57
+
- ensure the PR description is clear and concise, providing context for reviewers and linking to any relevant issues or documentation
58
+
- update the `README.md` file if the change affects usage instructions, configuration, or any other user-facing documentation
|[docs/AWS-SAM-Template.md](docs/AWS-SAM-Template.md)| Template parameters, generated resources, and Lambda environment mapping |
78
+
|[docs/Development.md](docs/Development.md)| Local development workflow, build steps, tests, and SAM-based cloud testing |
79
+
|[docs/Using-SSO.md](docs/Using-SSO.md)| Practical rollout guidance for AWS IAM Identity Center and Google Workspace group design |
80
+
|[docs/State-File-example.md](docs/State-File-example.md)| Example state file structure and notes about how sync state is stored |
81
+
|[docs/Demo.md](docs/Demo.md)| Visual walkthrough screenshots of the sync process and resulting AWS and Google Workspace data |
82
+
|[docs/Release.md](docs/Release.md)| Maintainer release flow based on semantic version tags and GitHub Actions |
83
+
|[docs/Whats-New.md](docs/Whats-New.md)| Release notes and notable changes across versions |
84
+
51
85
## 🚀 Getting Started
52
86
53
87
The easiest way to deploy and use this project is through the [AWS Serverless Application Repository](https://serverlessrepo.aws.amazon.com/applications/us-east-1/889836709304/idp-scim-sync).
@@ -74,112 +108,53 @@ You have several options to use this project:
* Deploy the application directly from the [AWS Serverless Application Repository](https://serverlessrepo.aws.amazon.com/applications/us-east-1/889836709304/idp-scim-sync).
111
+
* To update an existing deployment to a newer published version, reuse the same original application name that you entered when you first deployed it. Do not use the generated `serverlessrepo-...` stack name. See [docs/AWS-SAM.md](docs/AWS-SAM.md) for the full update flow.
77
112
78
113
***AWS SAM**
79
114
* Build and deploy the Lambda function from your local machine.
80
-
***Requirements:**
81
-
*[Git](https://git-scm.com/)
82
-
*[Go](https://go.dev/learn/)
83
-
*[AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)
84
-
***Commands:**
115
+
* Quick start:
85
116
86
117
```bash
87
-
# Set your AWS CLI profile and region
88
118
export AWS_PROFILE=<profile_name>
89
119
export AWS_REGION=<region>
90
-
91
-
# Validate the template
92
-
sam validate
93
-
94
-
# Build the project
95
-
sam build
96
-
97
-
# Deploy with a guided process
98
-
sam deploy --guided --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
120
+
GIT_VERSION=dev sam build
121
+
sam deploy --guided --stack-name idp-scim-sync --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
99
122
```
100
123
124
+
* For full validation, source deployment, publish, and update guidance, see [docs/AWS-SAM.md](docs/AWS-SAM.md) and [docs/AWS-SAM-Template.md](docs/AWS-SAM-Template.md).
125
+
101
126
### Locally
102
127
103
128
***Build from Source**
104
-
***Requirements:**
105
-
*[Git](https://git-scm.com/)
106
-
*[Go](https://go.dev/learn/)
107
-
*[Make](https://www.gnu.org/software/make/)
108
-
***Commands:**
129
+
* Quick start:
109
130
110
131
```bash
111
-
# Compile for your operating system
112
132
make
113
-
114
-
# Cross-compile for Windows, macOS, and Linux
115
-
make build-dist
133
+
./build/idpscim --help
134
+
./build/idpscimcli --help
116
135
```
117
136
137
+
***Run the programs**
138
+
***idpscim** runs the actual synchronization logic.
139
+
***idpscimcli** helps you validate your AWS SCIM and Google Workspace configuration before enabling automated sync.
140
+
* See [docs/idpscim.md](docs/idpscim.md), [docs/idpscimcli.md](docs/idpscimcli.md), [docs/Configuration.md](docs/Configuration.md), and [docs/Development.md](docs/Development.md) for examples, flags, and the full local workflow.
141
+
118
142
***Pre-built Binaries**
119
143
* Download the binaries from the [GitHub Releases](https://github.com/slashdevops/idp-scim-sync/releases).
120
144
121
145
***Container Image**
122
146
* Pull the image from the [GitHub Container Registry](https://github.com/slashdevops/idp-scim-sync/pkgs/container/idp-scim-sync).
147
+
* Container build and execution details are documented in [docs/idpscim.md](docs/idpscim.md), [docs/idpscimcli.md](docs/idpscimcli.md), and [docs/Development.md](docs/Development.md).
123
148
124
149
## Configurable User Fields
125
150
126
151
By default, all optional user attributes are synced from Google Workspace to AWS SSO SCIM. You can control which optional fields are included using the `sync_user_fields` configuration option.
Set the `SyncUserFields` parameter when deploying:
172
-
173
-
```bash
174
-
sam deploy --parameter-overrides SyncUserFields=phoneNumbers,addresses,enterpriseData
175
-
```
153
+
Supported optional fields include `phoneNumbers`, `addresses`, `title`, `preferredLanguage`, `locale`, `timezone`, `nickName`, `profileURL`, `userType`, and `enterpriseData`.
176
154
177
-
### Behavior Notes
155
+
Required fields are always synchronized: `name`, `userName`, `displayName`, `emails`, and `active`.
178
156
179
-
***Default (empty or not set):** When `sync_user_fields` is empty or not configured, all optional fields are synced. This preserves backward compatibility with existing deployments.
180
-
***Specifying fields:** Only the listed fields will be synced. For example, setting `sync_user_fields: [phoneNumbers]` will sync only phone numbers; addresses, enterprise data, and other optional attributes will not be sent to AWS SSO SCIM.
181
-
***Invalid field names:** If an invalid field name is provided, the application will fail at startup with a clear error message listing the unrecognized field.
182
-
***Changing on an existing deployment:** The first sync after modifying this configuration will detect all users as "changed" (due to hash differences) and update them in AWS SSO. This is expected behavior — it will clear the excluded fields from SCIM.
157
+
For config file examples, environment variable usage, CLI flags, SAM parameter usage, and behavior notes, see [docs/Configuration.md](docs/Configuration.md) and [docs/idpscim.md](docs/idpscim.md).
183
158
184
159
## 📦 Repositories
185
160
@@ -200,12 +175,6 @@ If you are coming from the [awslabs/ssosync](https://github.com/awslabs/ssosync)
200
175
* This project only implements filtering for Google Workspace Groups, not Users.
201
176
* This project supports selecting which optional user attributes to sync via `--sync-user-fields` (e.g., phone numbers, addresses, enterprise data).
202
177
* The flag names are different.
203
-
* Not all features of `ssosync` are implemented here, and they may not be in the future.
204
-
205
-
## 🧩 Components
206
-
207
-
***idpscim**: A program for keeping AWS IAM Identity Center groups and users synced with your Google Workspace directory. See the [idpscim documentation](docs/idpscim.md) for more details.
208
-
***idpscimcli**: A command-line tool to check and validate some of the functionalities implemented in `idpscim`. See the [idpscimcli documentation](docs/idpscimcli.md) for more details.
Since this project is always in development and updated to the last release of `go` and its dependencies, the vulnerabilities are always fixed in the last release, so we will support the last 1 major version and its patches.
0 commit comments