-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #82 from timrogers/timrogers/e2e
chore: add end-to-end tests for exports and imports on GitHub.com
- Loading branch information
Showing
3 changed files
with
257 additions
and
18 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
name: CI | ||
on: | ||
pull_request: | ||
branches: [main] | ||
push: | ||
branches: [main] | ||
tags: ['v**'] | ||
jobs: | ||
test_and_lint: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/[email protected] | ||
with: | ||
node-version: 18.x | ||
cache: 'npm' | ||
- run: npm ci | ||
- run: npm run lint | ||
package: | ||
name: Package binaries | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- name: Setup Node.js | ||
uses: actions/[email protected] | ||
with: | ||
node-version: 18.x | ||
cache: 'npm' | ||
- name: Install dependencies | ||
run: npm ci | ||
- name: Generate binaries for macOS, Linux and Windows | ||
run: npm run package | ||
- name: Rename macOS binary to conform to GitHub CLI extension rules | ||
run: mv bin/migrate-project-macos bin/gh-migrate-project-darwin-amd64 | ||
- name: Rename Windows binary to conform to GitHub CLI extension rules | ||
run: mv bin/migrate-project-win.exe bin/gh-migrate-project-windows-amd64.exe | ||
- name: Rename Linux binary to conform to GitHub CLI extension rules | ||
run: mv bin/migrate-project-linux bin/gh-migrate-project-linux-amd64 | ||
- name: Upload macOS binary as artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: package-macos | ||
path: bin/gh-migrate-project-darwin-amd64 | ||
- name: Upload Linux binary as artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: package-linux | ||
path: bin/gh-migrate-project-linux-amd64 | ||
- name: Upload Windows binary as artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: package-windows | ||
path: bin/gh-migrate-project-windows-amd64.exe | ||
create_release: | ||
name: Create release | ||
if: startsWith(github.ref, 'refs/tags/') | ||
runs-on: ubuntu-latest | ||
needs: ['package', 'test_and_lint'] | ||
|
||
permissions: | ||
contents: write | ||
|
||
steps: | ||
- name: Download Windows binary | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: package-windows | ||
path: bin | ||
- name: Download macOS binary | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: package-macos | ||
path: bin | ||
- name: Download Linux binary | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: package-linux | ||
path: bin | ||
- name: Create GitHub release | ||
uses: softprops/action-gh-release@v1 | ||
with: | ||
files: | | ||
bin/gh-migrate-project-darwin-amd64 | ||
bin/gh-migrate-project-linux-amd64 | ||
bin/gh-migrate-project-windows-amd64.exe | ||
generate_release_notes: true | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
name: End to end tests | ||
on: | ||
workflow_run: | ||
workflows: | ||
- "CI" | ||
types: | ||
- completed | ||
|
||
permissions: | ||
actions: read | ||
contents: read | ||
checks: write | ||
|
||
jobs: | ||
end_to_end_tests_macos: | ||
name: Run end to end tests (macOS/GitHub.com) | ||
runs-on: macos-latest | ||
env: | ||
check_name: End to end tests (macOS/GitHub.com) | ||
|
||
steps: | ||
- name: Download macOS binary | ||
uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e | ||
with: | ||
run_id: ${{ github.event.workflow_run.id }} | ||
name: package-macos | ||
path: bin | ||
- name: Create `output` directory | ||
run: mkdir output | ||
- name: Make macOS binary executable | ||
run: chmod +x bin/gh-migrate-project-darwin-amd64 | ||
- name: Export a project from GitHub.com | ||
run: ./bin/gh-migrate-project-darwin-amd64 export --project-owner gh-migrate-project-sandbox --project-number 1 | ||
env: | ||
EXPORT_GITHUB_TOKEN: ${{ secrets.GH_MIGRATE_PROJECT_SANDBOX_TOKEN }} | ||
- name: Copy outputs to output/ directory | ||
run: cp project.json output/ && cp repository-mappings.csv output/ | ||
- name: Print outputted project data | ||
run: cat project.json | ||
- name: Print repository mappings template | ||
run: cat repository-mappings.csv | ||
- name: Fill in repository mappings template | ||
run: | | ||
echo "source_repository,target_repository | ||
gh-migrate-project-sandbox/initial-repository,gh-migrate-project-sandbox/initial-repository" > completed-repository-mappings.csv | ||
- name: Import project to GitHub.com | ||
run: ./bin/gh-migrate-project-darwin-amd64 import --input-path project.json --repository-mappings-path completed-repository-mappings.csv --project-owner gh-migrate-project-sandbox | ||
env: | ||
IMPORT_GITHUB_TOKEN: ${{ secrets.GH_MIGRATE_PROJECT_SANDBOX_TOKEN }} | ||
- name: Upload outputs as artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: macos-outputs | ||
path: output | ||
- name: Set Status Check | ||
uses: LouisBrunner/checks-action@c6dbaea4f9c79ccfe67c038acddaf713518b255d | ||
if: always() | ||
with: | ||
sha: ${{ github.event.workflow_run.head_sha}} | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
name: ${{ env.check_name }} | ||
conclusion: ${{ job.status }} | ||
|
||
end_to_end_tests_linux: | ||
name: Run end to end tests (Linux/GitHub.com) | ||
runs-on: ubuntu-latest | ||
env: | ||
check_name: End to end tests (Linux/GitHub.com) | ||
|
||
steps: | ||
- name: Download Linux binary | ||
uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e | ||
with: | ||
run_id: ${{ github.event.workflow_run.id }} | ||
name: package-linux | ||
path: bin | ||
- name: Create `output` directory | ||
run: mkdir output | ||
- name: Make Linux binary executable | ||
run: chmod +x bin/gh-migrate-project-linux-amd64 | ||
- name: Export a project from GitHub.com | ||
run: ./bin/gh-migrate-project-linux-amd64 export --project-owner gh-migrate-project-sandbox --project-number 1 | ||
env: | ||
EXPORT_GITHUB_TOKEN: ${{ secrets.GH_MIGRATE_PROJECT_SANDBOX_TOKEN }} | ||
- name: Copy outputs to output/ directory | ||
run: cp project.json output/ && cp repository-mappings.csv output/ | ||
- name: Print outputted project data | ||
run: cat project.json | ||
- name: Print repository mappings template | ||
run: cat repository-mappings.csv | ||
- name: Fill in repository mappings template | ||
run: | | ||
echo "source_repository,target_repository | ||
gh-migrate-project-sandbox/initial-repository,gh-migrate-project-sandbox/initial-repository" > completed-repository-mappings.csv | ||
- name: Import project to GitHub.com | ||
run: ./bin/gh-migrate-project-linux-amd64 import --input-path project.json --repository-mappings-path completed-repository-mappings.csv --project-owner gh-migrate-project-sandbox | ||
env: | ||
IMPORT_GITHUB_TOKEN: ${{ secrets.GH_MIGRATE_PROJECT_SANDBOX_TOKEN }} | ||
- name: Upload outputs as artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: linux-outputs | ||
path: output | ||
- name: Upload | ||
if: always() | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: dbg | ||
retention-days: 1 | ||
path: ${{ github.event_path }} | ||
- name: Set Status Check | ||
uses: LouisBrunner/checks-action@c6dbaea4f9c79ccfe67c038acddaf713518b255d | ||
if: always() | ||
with: | ||
sha: ${{ github.event.workflow_run.head_sha}} | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
name: ${{ env.check_name }} | ||
conclusion: ${{ job.status }} | ||
|
||
end_to_end_tests_windows: | ||
name: Run end to end tests (Windows/GitHub.com) | ||
runs-on: windows-latest | ||
env: | ||
check_name: End to end tests (Windows/GitHub.com) | ||
|
||
steps: | ||
- name: Download Windows binary | ||
uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e | ||
with: | ||
run_id: ${{ github.event.workflow_run.id }} | ||
name: package-windows | ||
path: bin | ||
- name: Create `output` directory | ||
run: mkdir output | ||
- name: Export a project from GitHub.com | ||
run: bin/gh-migrate-project-windows-amd64.exe export --project-owner gh-migrate-project-sandbox --project-number 1 | ||
env: | ||
EXPORT_GITHUB_TOKEN: ${{ secrets.GH_MIGRATE_PROJECT_SANDBOX_TOKEN }} | ||
- name: Copy outputs to output/ directory | ||
run: cp project.json output/ && cp repository-mappings.csv output/ | ||
- name: Print outputted project data | ||
run: cat project.json | ||
- name: Print repository mappings template | ||
run: cat repository-mappings.csv | ||
- name: Fill in repository mappings template | ||
run: | | ||
echo "source_repository,target_repository | ||
gh-migrate-project-sandbox/initial-repository,gh-migrate-project-sandbox/initial-repository" > completed-repository-mappings.csv | ||
- name: Import project to GitHub.com | ||
run: bin/gh-migrate-project-windows-amd64.exe import --input-path project.json --repository-mappings-path completed-repository-mappings.csv --project-owner gh-migrate-project-sandbox | ||
env: | ||
IMPORT_GITHUB_TOKEN: ${{ secrets.GH_MIGRATE_PROJECT_SANDBOX_TOKEN }} | ||
- name: Upload outputs as artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: windows-outputs | ||
path: output | ||
- name: Set Status Check | ||
uses: LouisBrunner/checks-action@c6dbaea4f9c79ccfe67c038acddaf713518b255d | ||
if: always() | ||
with: | ||
sha: ${{ github.event.workflow_run.head_sha}} | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
name: ${{ env.check_name }} | ||
conclusion: ${{ job.status }} |