Update branding
This commit is contained in:
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
@@ -1 +1 @@
|
|||||||
* @valet-customers/reviewers
|
* @actions/importer
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/azure_devops.md
vendored
2
.github/ISSUE_TEMPLATE/azure_devops.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: Azure DevOps
|
name: Azure DevOps
|
||||||
about: Migrate Azure DevOps pipelines to GitHub Actions with Valet
|
about: Migrate Azure DevOps pipelines to GitHub Actions
|
||||||
title: "[Azure DevOps]:"
|
title: "[Azure DevOps]:"
|
||||||
labels: azure-devops
|
labels: azure-devops
|
||||||
assignees: ""
|
assignees: ""
|
||||||
|
|||||||
8
.github/ISSUE_TEMPLATE/circle_ci.md
vendored
8
.github/ISSUE_TEMPLATE/circle_ci.md
vendored
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
name: Circle CI
|
name: CircleCI
|
||||||
about: Migrate Circle CI pipelines to GitHub Actions with Valet
|
about: Migrate CircleCI pipelines to GitHub Actions
|
||||||
title: "[Circle CI]:"
|
title: "[CircleCI]:"
|
||||||
labels: circle-ci
|
labels: circle-ci
|
||||||
assignees: ""
|
assignees: ""
|
||||||
---
|
---
|
||||||
@@ -10,7 +10,7 @@ assignees: ""
|
|||||||
|
|
||||||
Provide the following required inputs:
|
Provide the following required inputs:
|
||||||
|
|
||||||
Organization: _The Circle CI organization to migrate pipelines from._
|
Organization: _The CircleCI organization to migrate pipelines from._
|
||||||
|
|
||||||
## Available commands
|
## Available commands
|
||||||
|
|
||||||
|
|||||||
8
.github/ISSUE_TEMPLATE/gitlab_ci.md
vendored
8
.github/ISSUE_TEMPLATE/gitlab_ci.md
vendored
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
name: GitLab CI
|
name: GitLab
|
||||||
about: Migrate GitLab CI pipelines to GitHub Actions with Valet
|
about: Migrate GitLab pipelines to GitHub Actions
|
||||||
title: "[GitLab CI]:"
|
title: "[GitLab]:"
|
||||||
labels: gitlab
|
labels: gitlab
|
||||||
assignees: ""
|
assignees: ""
|
||||||
---
|
---
|
||||||
@@ -11,7 +11,7 @@ assignees: ""
|
|||||||
Provide the following required inputs:
|
Provide the following required inputs:
|
||||||
|
|
||||||
Namespace:
|
Namespace:
|
||||||
_The GitLab CI namespace (or group) to migrate pipelines from._
|
_The GitLab namespace (or group) to migrate pipelines from._
|
||||||
|
|
||||||
## Available commands
|
## Available commands
|
||||||
|
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/jenkins.md
vendored
2
.github/ISSUE_TEMPLATE/jenkins.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: Jenkins
|
name: Jenkins
|
||||||
about: Migrate Jenkins jobs to GitHub Actions with Valet
|
about: Migrate Jenkins jobs to GitHub Actions
|
||||||
title: "[Jenkins]:"
|
title: "[Jenkins]:"
|
||||||
labels: jenkins
|
labels: jenkins
|
||||||
assignees: ""
|
assignees: ""
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/support.md
vendored
2
.github/ISSUE_TEMPLATE/support.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: Request support
|
name: Request support
|
||||||
about: Request support or assistance from the Valet team
|
about: Request support or assistance
|
||||||
title: ""
|
title: ""
|
||||||
labels: support
|
labels: support
|
||||||
assignees: ""
|
assignees: ""
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/travis_ci.md
vendored
2
.github/ISSUE_TEMPLATE/travis_ci.md
vendored
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: Travis CI
|
name: Travis CI
|
||||||
about: Migrate Travis CI pipelines to GitHub Actions with Valet
|
about: Migrate Travis CI pipelines to GitHub Actions
|
||||||
title: "[Travis CI]:"
|
title: "[Travis CI]:"
|
||||||
labels: travis-ci
|
labels: travis-ci
|
||||||
assignees: ""
|
assignees: ""
|
||||||
|
|||||||
50
.github/workflows/issue_ops.yml
vendored
50
.github/workflows/issue_ops.yml
vendored
@@ -1,4 +1,4 @@
|
|||||||
name: valet-issue-ops
|
name: actions-importer-issue-ops
|
||||||
|
|
||||||
on:
|
on:
|
||||||
issue_comment:
|
issue_comment:
|
||||||
@@ -23,24 +23,24 @@ env:
|
|||||||
CIRCLE_CI_SOURCE_GITHUB_ACCESS_TOKEN: ${{ secrets.circle_ci_source_github_access_token }}
|
CIRCLE_CI_SOURCE_GITHUB_ACCESS_TOKEN: ${{ secrets.circle_ci_source_github_access_token }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
execute-valet:
|
execute-actions-importer:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
command: ${{ steps.prepare.outputs.command }}
|
command: ${{ steps.prepare.outputs.command }}
|
||||||
log-filename: ${{ steps.logs.outputs.filename }}
|
log-filename: ${{ steps.logs.outputs.filename }}
|
||||||
steps:
|
steps:
|
||||||
- name: Install Valet CLI
|
- name: Install GitHub Actions Importer
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
gh extension install github/gh-valet
|
gh extension install github/gh-actions-importer
|
||||||
gh valet update --username ${{ secrets.valet_ghcr_username }} --password ${{ secrets.valet_ghcr_password }}
|
echo ${{ secrets.ghcr_password }} | gh actions-importer update --username ${{ secrets.ghcr_username }} --password-stdin
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.valet_ghcr_password }}
|
GITHUB_TOKEN: ${{ secrets.ghcr_password }}
|
||||||
- uses: actions-ecosystem/action-add-labels@v1
|
- uses: actions-ecosystem/action-add-labels@v1
|
||||||
if: always()
|
if: always()
|
||||||
with:
|
with:
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
labels: valet-running
|
labels: actions-importer-running
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: ruby/setup-ruby@v1
|
- uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
@@ -55,15 +55,15 @@ jobs:
|
|||||||
- name: Validate arguments
|
- name: Validate arguments
|
||||||
run: |
|
run: |
|
||||||
if [ -z "${{ steps.prepare.outputs.provider }}" ]; then
|
if [ -z "${{ steps.prepare.outputs.provider }}" ]; then
|
||||||
echo "Unable to determine provider"
|
echo "Unable to determine provider"
|
||||||
exit 1
|
exit 1
|
||||||
elif [ -z "${{ steps.prepare.outputs.command }}" ]; then
|
elif [ -z "${{ steps.prepare.outputs.command }}" ]; then
|
||||||
echo "Unable to determine command"
|
echo "Unable to determine command"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
- name: execute valet
|
- name: execute actions-importer
|
||||||
run: |
|
run: |
|
||||||
gh valet ${{ steps.prepare.outputs.command }} ${{ steps.prepare.outputs.provider }} \
|
gh actions-importer ${{ steps.prepare.outputs.command }} ${{ steps.prepare.outputs.provider }} \
|
||||||
${{ steps.prepare.outputs.args }} \
|
${{ steps.prepare.outputs.args }} \
|
||||||
--output-dir output
|
--output-dir output
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
@@ -86,8 +86,8 @@ jobs:
|
|||||||
|
|
||||||
audit:
|
audit:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: needs.execute-valet.outputs.command == 'audit'
|
if: needs.execute-actions-importer.outputs.command == 'audit'
|
||||||
needs: execute-valet
|
needs: execute-actions-importer
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v2
|
- uses: actions/download-artifact@v2
|
||||||
if: always()
|
if: always()
|
||||||
@@ -121,8 +121,8 @@ jobs:
|
|||||||
})
|
})
|
||||||
dry-run:
|
dry-run:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: needs.execute-valet.outputs.command == 'dry-run'
|
if: needs.execute-actions-importer.outputs.command == 'dry-run'
|
||||||
needs: execute-valet
|
needs: execute-actions-importer
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v2
|
- uses: actions/download-artifact@v2
|
||||||
if: always()
|
if: always()
|
||||||
@@ -177,8 +177,8 @@ jobs:
|
|||||||
|
|
||||||
migrate:
|
migrate:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: needs.execute-valet.outputs.command == 'migrate'
|
if: needs.execute-actions-importer.outputs.command == 'migrate'
|
||||||
needs: execute-valet
|
needs: execute-actions-importer
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v2
|
- uses: actions/download-artifact@v2
|
||||||
if: always()
|
if: always()
|
||||||
@@ -186,7 +186,7 @@ jobs:
|
|||||||
name: logs
|
name: logs
|
||||||
- id: pull-request-url
|
- id: pull-request-url
|
||||||
run: |
|
run: |
|
||||||
pullRequest=$(grep "${{ env.pullRequestPattern }}" ${{ needs.execute-valet.outputs.log-filename }} | sed -rn "s/^.*${{ env.pullRequestPattern }}'(.+)'.*$/\1/p")
|
pullRequest=$(grep "${{ env.pullRequestPattern }}" ${{ needs.execute-actions-importer.outputs.log-filename }} | sed -rn "s/^.*${{ env.pullRequestPattern }}'(.+)'.*$/\1/p")
|
||||||
echo $pullRequest
|
echo $pullRequest
|
||||||
echo ::set-output name=output::$pullRequest
|
echo ::set-output name=output::$pullRequest
|
||||||
env:
|
env:
|
||||||
@@ -213,20 +213,20 @@ jobs:
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [execute-valet, audit, migrate, dry-run]
|
needs: [execute-actions-importer, audit, migrate, dry-run]
|
||||||
if: always()
|
if: always()
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v2
|
- uses: actions/download-artifact@v2
|
||||||
if: always() && needs.execute-valet.result == 'failure'
|
if: always() && needs.execute-actions-importer.result == 'failure'
|
||||||
with:
|
with:
|
||||||
name: logs
|
name: logs
|
||||||
- uses: actions/github-script@v5
|
- uses: actions/github-script@v5
|
||||||
if: always() && needs.execute-valet.result == 'failure'
|
if: always() && needs.execute-actions-importer.result == 'failure'
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
const MAX_LENGTH = 64000
|
const MAX_LENGTH = 64000
|
||||||
const logData = fs.readFileSync("${{ needs.execute-valet.outputs.log-filename }}", "utf8")
|
const logData = fs.readFileSync("${{ needs.execute-actions-importer.outputs.log-filename }}", "utf8")
|
||||||
const body = `Something went wrong. Please check the logs for more information.
|
const body = `Something went wrong. Please check the logs for more information.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@@ -247,4 +247,4 @@ jobs:
|
|||||||
if: always()
|
if: always()
|
||||||
with:
|
with:
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
labels: valet-running
|
labels: actions-importer-running
|
||||||
|
|||||||
@@ -10,4 +10,4 @@ Here's some helpful notes on how to contribute to this project, including detail
|
|||||||
|
|
||||||
## How to submit a bug or request a feature
|
## How to submit a bug or request a feature
|
||||||
|
|
||||||
If you think you've found a bug or have a great idea for new functionality please create an Issue in the [repo](https://github.com/valet-customers/issue-ops/issues/new).
|
If you think you've found a bug or have a great idea for new functionality please create an Issue in the [repo](https://github.com/actions/importer-issue-ops/issues/new).
|
||||||
|
|||||||
38
Readme.md
38
Readme.md
@@ -1,31 +1,29 @@
|
|||||||
# Valet Issue Ops
|
# GitHub Actions Importer IssueOps
|
||||||
|
|
||||||
The Valet IssueOps template repository provides the functionality necessary to run Valet commands through GitHub Actions and Issues, allowing you to migrate your CI/CD workflows without needing to install software on your local machine. This approach is especially useful for organizations that want to enable self-service migrations to GitHub Actions.
|
The GitHub Actions Importer IssueOps repository demonstrates the functionality necessary to run GitHub Actions Importer commands through Actions and Issues, allowing you to migrate your CI/CD workflows without needing to install software on your local machine. This approach is especially useful for organizations that want to enable self-service migrations to GitHub Actions.
|
||||||
|
|
||||||
Valet helps facilitate the migration of Azure DevOps, Circle CI, GitLab CI, Jenkins, and Travis CI pipelines to GitHub Actions. Valet is distributed as a CLI and offers three commands you can use to migrate pipelines:
|
GitHub Actions Importer helps plan and automate the migration of Azure DevOps, circleci, GitLab, Jenkins, and Travis CI pipelines to GitHub Actions. GitHub Actions Importer is distributed as a CLI and offers various commands you can use to migrate pipelines:
|
||||||
|
|
||||||
- `audit`: An audit will fetch all the pipelines defined in an existing CI server, convert each pipeline to its equivalent in GitHub Actions, and write a report that summarizes how complete of a migration Valet can provide.
|
- `audit`: An audit will fetch all the pipelines defined in an existing CI server, convert each pipeline to its equivalent in GitHub Actions, and write a report that summarizes how complete of a migration the GitHub Actions Importer can provide.
|
||||||
- `dry-run`: A dry run will fetch a single pipeline definition, convert it to its equivalent in GitHub Actions, and write a file (or files) to disk containing the converted workflow.
|
- `dry-run`: A dry run will fetch a single pipeline definition, convert it to its equivalent in GitHub Actions, and write a file (or files) to disk containing the converted workflow.
|
||||||
- `migrate`: A migration will fetch a single pipeline definition, convert it to its equivalent in GitHub Actions, and open a pull request to a repository with the converted workflow.
|
- `migrate`: A migration will fetch a single pipeline definition, convert it to its equivalent in GitHub Actions, and open a pull request to a repository with the converted workflow.
|
||||||
|
|
||||||
> Because Valet is in private preview, customers must be onboarded prior to using the Valet IssueOps workflow. Please reach out to GitHub Sales to inquire about being added to the private preview.
|
> **Note**: GitHub Actions Importer is currently available as a public preview. Visit the [sign up page](https://github.com/features/actions-importer/signup) to request access to the preview.
|
||||||
|
|
||||||
**Note**: You can request support by using [this](https://github.com/valet-customers/issue-ops/issues/new?assignees=&labels=support&template=support.md&title=) template to create an issue. The Valet team responds to support requests Monday through Friday between the hours of 9AM EST and 5PM PST.
|
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
Complete the following steps:
|
Complete the following steps:
|
||||||
|
|
||||||
1. Create a new repository using this repository as the template by clicking [here](https://github.com/valet-customers/issue-ops/generate).
|
1. Create a new repository using this repository as the template by clicking [here](https://github.com/actions/importer-issue-ops/generate).
|
||||||
2. Create the following labels in this new repository: `jenkins`, `azure-devops`, `circle-ci`, `gitlab`, `travis-ci`, and `valet-running`.
|
2. Create the following labels in this new repository: `jenkins`, `azure-devops`, `circle-ci`, `gitlab`, `travis-ci`, and `actions-importer-running`.
|
||||||
3. Add the repository secrets described below that are relevant to the CI/CD providers being migrated:
|
3. Add the repository secrets described below that are relevant to the CI/CD providers being migrated:
|
||||||
|
|
||||||
### All CI/CD providers
|
### All CI/CD providers
|
||||||
|
|
||||||
The following secrets are required:
|
The following secrets are required:
|
||||||
|
|
||||||
- `VALET_GHCR_USERNAME`: The username to access the `valet` container.
|
- `GHCR_USERNAME`: The username to access the GitHub Actions Importer container.
|
||||||
- `VALET_GHCR_PASSWORD`: The password to access the `valet` container (requires `read:packages` scope).
|
- `GHCR_PASSWORD`: The password to access the GitHub Actions Importer container (requires `read:packages` scope).
|
||||||
- `GH_ACCESS_TOKEN`: GitHub personal access token to create pull requests (requires `repo` and `workflow` scopes).
|
- `GH_ACCESS_TOKEN`: GitHub personal access token to create pull requests (requires `repo` and `workflow` scopes).
|
||||||
|
|
||||||
Optionally, the following environment variables can be set:
|
Optionally, the following environment variables can be set:
|
||||||
@@ -37,36 +35,38 @@ Optionally, the following environment variables can be set:
|
|||||||
The following secrets are required:
|
The following secrets are required:
|
||||||
|
|
||||||
- `AZURE_DEVOPS_ACCESS_TOKEN`: The personal access token to access the Azure DevOps instance. This token requires the following scopes:
|
- `AZURE_DEVOPS_ACCESS_TOKEN`: The personal access token to access the Azure DevOps instance. This token requires the following scopes:
|
||||||
- Build (Read & Execute)
|
- Build (Read)
|
||||||
|
- Agent Pools (Read)
|
||||||
- Code (Read)
|
- Code (Read)
|
||||||
- Release (Read)
|
- Release (Read)
|
||||||
- Service Connections (Read)
|
- Service Connections (Read)
|
||||||
|
- Task Groups (Read)
|
||||||
- Variable Groups (Read)
|
- Variable Groups (Read)
|
||||||
|
|
||||||
Optionally, the following environment variables can be set:
|
Optionally, the following environment variables can be set:
|
||||||
|
|
||||||
- `AZURE_DEVOPS_INSTANCE_URL`: The base URL of your Azure DevOps instance (only required if it is **not** <https://dev.azure.com>).
|
- `AZURE_DEVOPS_INSTANCE_URL`: The base URL of your Azure DevOps instance (only required if it is **not** <https://dev.azure.com>).
|
||||||
|
|
||||||
### Circle CI
|
### CircleCI
|
||||||
|
|
||||||
The following secrets are required:
|
The following secrets are required:
|
||||||
|
|
||||||
- `CIRCLE_CI_ACCESS_TOKEN`: The personal access token to access the Circle CI instance.
|
- `CIRCLE_CI_ACCESS_TOKEN`: The personal access token to access the CircleCI instance.
|
||||||
- `CIRCLE_CI_SOURCE_GITHUB_ACCESS_TOKEN`: The personal access token to access pipeline files stored in GitHub.
|
- `CIRCLE_CI_SOURCE_GITHUB_ACCESS_TOKEN`: The personal access token to access pipeline files stored in GitHub.
|
||||||
|
|
||||||
Optionally, the following environment variables can be set:
|
Optionally, the following environment variables can be set:
|
||||||
|
|
||||||
- `CIRCLE_CI_INSTANCE_URL`: The base URL of your Circle CI instance (only required if it is **not** <https://circleci.com>).
|
- `CIRCLE_CI_INSTANCE_URL`: The base URL of your CircleCI instance (only required if it is **not** <https://circleci.com>).
|
||||||
|
|
||||||
### GitLab CI
|
### GitLab
|
||||||
|
|
||||||
The following secrets are required:
|
The following secrets are required:
|
||||||
|
|
||||||
- `GITLAB_ACCESS_TOKEN`: The personal access token to access the GitLab CI instance (requires `read_api` scope).
|
- `GITLAB_ACCESS_TOKEN`: The personal access token to access the GitLab instance (requires `read_api` scope).
|
||||||
|
|
||||||
Optionally, the following environment variables can be set:
|
Optionally, the following environment variables can be set:
|
||||||
|
|
||||||
- `GITLAB_INSTANCE_URL`: The base URL of your GitLab CI instance (only required if it is **not** <https://gitlab.com>).
|
- `GITLAB_INSTANCE_URL`: The base URL of your GitLab instance (only required if it is **not** <https://gitlab.com>).
|
||||||
|
|
||||||
### Jenkins
|
### Jenkins
|
||||||
|
|
||||||
@@ -97,6 +97,6 @@ Once configured, pipelines can be migrated to GitHub Actions by opening an issue
|
|||||||
|
|
||||||
## Privacy statement
|
## Privacy statement
|
||||||
|
|
||||||
Valet will collect anonymous telemetry when running to help us improve the tool. This can be disabled by adding the `--no-telemetry` flag to any command provided to the Valet CLI.
|
GitHub Actions Importer will collect anonymous telemetry when running to help us improve the tool. This can be disabled by adding the `--no-telemetry` flag to any command provided to the GitHub Actions Importer CLI.
|
||||||
|
|
||||||
Additionally, by using this repository you agree to GitHub's [Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement#data-retention-and-deletion-of-data) and the [additional terms for Actions](https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#actions).
|
Additionally, by using this repository you agree to GitHub's [Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement#data-retention-and-deletion-of-data) and the [additional terms for Actions](https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#actions).
|
||||||
|
|||||||
Reference in New Issue
Block a user