-
Notifications
You must be signed in to change notification settings - Fork 15
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
Document first steps and how to setup github actions with Conductor #109
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,93 @@ | ||||||||||||
# Getting started with Conductor | ||||||||||||
## | ||||||||||||
|
||||||||||||
Conductor will group and schedule automated Dependency Updates on your own Continuous Integration platform. If the update succeeds, Conductor sends you a pull request to your code hosting platform (GitHub, GitLab, Bitbucket) with the changed composer.lock file and, if necessary, other files modified by Composer plugins or scripts. | ||||||||||||
|
||||||||||||
To use Conductor: | ||||||||||||
|
||||||||||||
- You need to be approved for early access to conductor. [Join to the waitlist](http://packagist.com.lo/features/conductor) and wait for approval. | ||||||||||||
- You need a Private Packagist trial or subscription (Cloud or Self-Hosted). | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Self-Hosted won't be supported until we have this somewhat stable/final. |
||||||||||||
- You need to add a workflow to your Continuous Integration platform to run Composer updates, described below. | ||||||||||||
|
||||||||||||
## First steps | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
Once you have a Private Packagist Subscription and Conductor is enabled for your subscription, log into your Private Packagist organization and click on the "Updates" tab in the main navigation. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This still mentions the need for a subscription. All they require is a Private Packagist organization. |
||||||||||||
Conductor will list packages: | ||||||||||||
- added to Private Packagist via synchronization | ||||||||||||
- having a composer.lock file commited to the repository | ||||||||||||
- having the Private Packagist repository added to the composer.json | ||||||||||||
Comment on lines
+15
to
+18
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Looking at the list it isn't clear if a package needs to match one or all of the criteria. As we are already working on the third point, I would drop that already. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Adding to Stephan's suggestion here, I would definitely make "via synchronization" a link to |
||||||||||||
|
||||||||||||
If you do not see your package, follow the instructions on your organization page to add the custom repository to the composer.json of your package. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This line can also be removed, then, since you're already working on removing the requirement of having the Private Packagist repository in composer.lock? (based on comments in earlier paragraph) |
||||||||||||
|
||||||||||||
Most convenient way to set up Conductor is to configure your CI in the Private Packagist UI. The manual steps are outlined below: | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
This sounds a bit like Private Packagist provides functionality to configure the CI directly. All we do is list steps that they need to follow to set up CI. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "The most convenient way" sounds to me as if there are other ways to set up Conductor too. There is no other path forward except adding the workflow to CI, right? Because you also mention that CI workflow is a requirement in the introduction, I would even consider removing this line. |
||||||||||||
|
||||||||||||
## Create a workflow on your CI | ||||||||||||
|
||||||||||||
### GitHub Actions | ||||||||||||
|
||||||||||||
Create a new GitHub Actions workflow in `.github/workflows/dependency-update.yaml` of your package repository using the template below: | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Replacing package repository as this is a bit ambiguous in the Composer world. Do we expect them to use the specific file or can they use any? |
||||||||||||
|
||||||||||||
CONDUCTOR_GITHUB_ACTIONS_WORKFLOW | ||||||||||||
|
||||||||||||
1. Adjust the PHP Version used in the "Install PHP" step | ||||||||||||
2. Commit and push the workflow to your main branch of your package repository | ||||||||||||
3. Review the steps to commit and push to your repository | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What does step 3 mean? |
||||||||||||
|
||||||||||||
Create a secret `COMPOSER_AUTH` with the Composer authentication configuration [as described here](https://getcomposer.org/doc/articles/authentication-for-private-packages.md#authentication-using-the-composer-auth-environment-variable) to access Private Packagist. | ||||||||||||
We recommend to create a dedicated authentication token with update access. You can copy and paste the contents for the secret from the Private Packagist UI while creating the token in "Settings" -> "Authentication Tokens". Remove the single quotes around the value. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Just to avoid confusion |
||||||||||||
|
||||||||||||
![Create Authentication Token](/Resources/public/img/docs/conductor/authentication-token.png) | ||||||||||||
|
||||||||||||
The contents of the variable should look like | ||||||||||||
|
||||||||||||
```json | ||||||||||||
{"http-basic": {"repo.packagist.com": {"username": "token", "password": "packagist_out_73a81c..." }}} | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The screenshot still shows a token |
||||||||||||
``` | ||||||||||||
|
||||||||||||
Conductor needs to verify your setup before you can [start receiving Pull Requests](#how-scheduling-works). | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Thinking the important part here is that CI need to be verified. |
||||||||||||
|
||||||||||||
## How scheduling works | ||||||||||||
|
||||||||||||
- Go to your package on the updates tab in your Private Packagist organization | ||||||||||||
- Click on the name of your package | ||||||||||||
Comment on lines
+51
to
+52
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
If we need to specify what to click, maybe the UI isn't clear enough but couldn't really come up with a better verb/selector There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Would also capitalize "Updates tab" |
||||||||||||
|
||||||||||||
The list shows groups of all available updates to be scheduled. Each group of updates is called a task. Conductor will schedule only one task at a time. All others are waiting for the task on top of the list to be successful or paused. | ||||||||||||
Once Conductor schedules a task it sends a payload to your CI platform that triggers the workflow you just added. The payload contains the commands Composer will run to update a group of dependencies from your package. | ||||||||||||
|
||||||||||||
The workflow consists of several steps: | ||||||||||||
|
||||||||||||
1. Checkout the code from your repository | ||||||||||||
2. Set up PHP | ||||||||||||
3. Run `composer install` | ||||||||||||
4. Run Composer update commands | ||||||||||||
5. Commit changed files (composer.lock, ...) | ||||||||||||
6. Push commits to a new branch (or force push an existing branch) | ||||||||||||
7. Send the status of the workflow to Private Packagist | ||||||||||||
|
||||||||||||
If all these steps succeeded, Private Packagist creates a pull request for the just pushed branch. The PR description will contain details about the update and changelogs from your dependencies. Conductor integrates with [Update Review](https://packagist.com/features/update-review) to present a reviewable list of all updated dependencies. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
![Conductor Pull Request](https://packagist.com/img/features/auto-updates/merged-PR-for-a-security-updated.png) | ||||||||||||
|
||||||||||||
Once you reviewed the changes and merged the PR, Conductor will schedule the next task. | ||||||||||||
If you close the PR, the task will be paused and Conductor will schedule the next task. This is the same effect as using the "Pause" button in the UI. Conductor won't attempt to update the dependency to this exact version, but will schedule updates with newer versions. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
If you want to, schedule any other task of the list by clicking on its name and using the button "Schedule now to create a PR". | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
Tasks fixing security issues have a higher priority. They will be moved to the top of the list and scheduled right away. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
||||||||||||
## Verify your CI setup | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would move this before the "How scheduling works" section, because you need to verify anyway before you can do anything else, and you also don't want to cause confusion if there are no updates yet anyway? |
||||||||||||
|
||||||||||||
![Task list with verification task](/Resources/public/img/docs/conductor/verification-task-list.png) | ||||||||||||
|
||||||||||||
Right now all tasks are waiting for the CI verification task on top of the list. Conductor will not start with the regular schedule until this verification task was successful. | ||||||||||||
The verification task will only execute `composer update nothing` and will not result in a PR to be sent to your code hosting platform. | ||||||||||||
|
||||||||||||
- Click on the task "Verify the continuous integration setup" | ||||||||||||
- Use the "Schedule now" button to test your setup | ||||||||||||
pscheit marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||
|
||||||||||||
You can see the state of your task and last events for the task. Once the task is executed, watch your CI platform: | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
You should see a run for the just added workflow. Examine the run if it succeeded. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Do you mean that you want the user to check it out regardless of the status, or really only take a look if it was successful? |
||||||||||||
|
||||||||||||
If it was successful your CI configuration is verified and complete. Conductor will trigger your workflow with the next task in the list. This time it will send a pull request. | ||||||||||||
|
||||||||||||
When you ran into errors, troubleshoot and fix. You can trigger the workflow again by restarting the CI verification task. The restart button is available after the first execution. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.