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

Build improvements #598

Merged
merged 2 commits into from
Sep 19, 2023

Conversation

EmilyShepherd
Copy link
Contributor

What this PR does / why we need it:

This PR makes two changes to the build system:

  1. The go build command is called with -trimpath to strip host build specific prefixes from the debug paths embedded into the final binary
  2. The Makefile supports injecting in optional GOTAGS to affect the build. Tags have been added to optionally exclude each of the sub commands (except help and version). For normal builds, this has no effect, as the default remains to build all. However it allows users who are custom building the binary for specific purposes to exclude features which are not required.

The current default is to compile all functionality into the
aws-iam-authenticator binary, however the tool is often used as
exclusively client-only (on nodes / local machines) or exclusively
server-only (ie in the EKS control plane).

We can dramatically reduce unneeded binary size by adding the option to
exclude subcommand which are known to be unneeeded at build time.

```
> make bin && ls -la _output/bin
-rwxrwxr-x 1 emily emily 53559296 May 13 13:54 _output/bin/aws-iam-authenticator

> make bin GOTAGS="no_init no_verify no_add no_server"
-rwxrwxr-x 1 emily emily 18907136 May 13 13:54 _output/bin/aws-iam-authenticator
```
This strips off build host specific prefixes from the debug paths
compiled into the binary.
@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label May 13, 2023
@k8s-ci-robot
Copy link
Contributor

Welcome @EmilyShepherd!

It looks like this is your first PR to kubernetes-sigs/aws-iam-authenticator 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-sigs/aws-iam-authenticator has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot k8s-ci-robot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label May 13, 2023
@k8s-ci-robot
Copy link
Contributor

Hi @EmilyShepherd. Thanks for your PR.

I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label May 13, 2023
EmilyShepherd added a commit to EmilyShepherd/kios-aws that referenced this pull request May 13, 2023
At the moment, this is a noop, however if the changes in the [upstream
pull request][PR] are merged, this will result in only the token
generation code being included in the final binary.

[PR]: kubernetes-sigs/aws-iam-authenticator#598
@dims
Copy link
Member

dims commented May 13, 2023

/ok-to-test

@k8s-ci-robot k8s-ci-robot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels May 13, 2023
@nckturner
Copy link
Contributor

/retest

@EmilyShepherd
Copy link
Contributor Author

@nckturner

@EmilyShepherd
Copy link
Contributor Author

/assign @nnmin-aws @DanielCKennedy @dims

@k8s-ci-robot
Copy link
Contributor

@EmilyShepherd: GitHub didn't allow me to assign the following users: DanielCKennedy.

Note that only kubernetes-sigs members with read permissions, repo collaborators and people who have commented on this issue/PR can be assigned. Additionally, issues/PRs can only have 10 assignees at the same time.
For more information please see the contributor guide

In response to this:

/assign @nnmin-aws @DanielCKennedy @dims

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@dims
Copy link
Member

dims commented Sep 18, 2023

/approve
/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Sep 18, 2023
@nckturner
Copy link
Contributor

/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dims, EmilyShepherd, nckturner

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Sep 19, 2023
@k8s-ci-robot k8s-ci-robot merged commit 69dae7c into kubernetes-sigs:master Sep 19, 2023
@EmilyShepherd EmilyShepherd deleted the build-improvements branch November 11, 2023 03:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. size/XS Denotes a PR that changes 0-9 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants