-
Notifications
You must be signed in to change notification settings - Fork 69
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migrate go-versions CI to GitHub Actions (#12)
* migrated Go to GA * commented tests * commented tests * fixed upload * fixed trigger_pr * fixed trigger_pr * fixed tests * removed comment * updated build-go-packages and create-pr * update * updated helpers * fixed build-go-packages * updated build-go-packages.yml * updated build-go.ps1 * updated Go.Tests.ps1 * fixed tests * fixed go tests * fixed go tests * fixed tests * fixed "version is correct" test * updated "version is correct" test * fixed Invoke-Expression * Remove Create-ArtifactDirectories function * fixed tests * fixed tests * fix test * fixed trigger_pr * Update to Pester 5 * update * updated * fixed test * fixed tests * fixed tests Co-authored-by: Nikita Bykov <[email protected]>
- Loading branch information
1 parent
2873528
commit c455148
Showing
9 changed files
with
237 additions
and
190 deletions.
There are no files selected for viewing
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,167 @@ | ||
name: Generate Go package | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
VERSION: | ||
description: 'Go version to build and upload' | ||
required: true | ||
default: '1.15.0' | ||
PUBLISH_RELEASES: | ||
description: 'Whether to publish releases' | ||
required: true | ||
default: 'false' | ||
|
||
env: | ||
VERSION: ${{ github.event.inputs.VERSION }} | ||
defaults: | ||
run: | ||
shell: pwsh | ||
|
||
jobs: | ||
build_go: | ||
name: Build Go ${{ github.event.inputs.VERSION }} [${{ matrix.platform }}] | ||
runs-on: ubuntu-latest | ||
env: | ||
ARTIFACT_NAME: go-${{ github.event.inputs.VERSION }}-${{ matrix.platform }}-x64 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
platform: [linux, darwin, win32] | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
|
||
- name: Build Go ${{ env.VERSION }} | ||
shell: pwsh | ||
run: | | ||
./builders/build-go.ps1 -Version $env:VERSION ` | ||
-Platform ${{ matrix.platform }} | ||
- name: Publish artifact | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: ${{ env.ARTIFACT_NAME }} | ||
path: ${{ runner.temp }}/artifact | ||
|
||
test_go: | ||
name: Test Go ${{ github.event.inputs.VERSION }} [${{ matrix.platform }}] | ||
needs: build_go | ||
runs-on: ${{ matrix.os }} | ||
env: | ||
ARTIFACT_NAME: go-${{ github.event.inputs.VERSION }}-${{ matrix.platform }}-x64 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- os: ubuntu-latest | ||
platform: linux | ||
- os: macos-latest | ||
platform: darwin | ||
- os: windows-latest | ||
platform: win32 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
|
||
- name: Fully cleanup the toolcache directory before testing | ||
run: ./helpers/clean-toolcache.ps1 -ToolName "go" | ||
|
||
- name: Download artifact | ||
uses: actions/download-artifact@v2 | ||
with: | ||
path: ${{ runner.temp }} | ||
|
||
- name: Extract files | ||
run: | | ||
if ('${{ matrix.platform }}' -eq 'win32') { | ||
$artifactName = "${{ env.ARTIFACT_NAME }}.zip" | ||
7z.exe x "$artifactName" -y | Out-Null | ||
} else { | ||
$artifactName = "${{ env.ARTIFACT_NAME }}.tar.gz" | ||
tar -xzf $artifactName | ||
} | ||
working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }} | ||
|
||
- name: Apply build artifact to the local machine | ||
run: | | ||
if ('${{ matrix.platform }}' -eq 'win32') { powershell ./setup.ps1 } else { sh ./setup.sh } | ||
working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }} | ||
|
||
- name: Setup Go ${{ env.VERSION }} | ||
uses: actions/[email protected] | ||
with: | ||
go-version: ${{ env.VERSION }} | ||
|
||
- name: Wait for the logs | ||
run: | | ||
Write-Host "Fake step that do nothing" | ||
Write-Host "We need it because log of previous step 'Setup Go' is not available here yet." | ||
Write-Host "In testing step (Go.Tests.ps1) we analyze build log of 'Setup Go' task" | ||
Write-Host "to determine if Go.js version was consumed from cache and was downloaded" | ||
Write-Host "Random values:" | ||
for ($i = 0; $i -lt 200; $i++) { Get-Random } | ||
- name: Run tests | ||
run: | | ||
Install-Module Pester -Force -Scope CurrentUser | ||
Import-Module Pester | ||
Invoke-Pester -Script ./Go.Tests.ps1 -EnableExit | ||
working-directory: ./tests | ||
|
||
publish_release: | ||
name: Publish release | ||
if: github.event.inputs.PUBLISH_RELEASES == 'true' | ||
needs: test_go | ||
runs-on: ubuntu-latest | ||
outputs: | ||
upload_url: ${{ steps.create_release.outputs.upload_url }} | ||
steps: | ||
- uses: actions/download-artifact@v2 | ||
|
||
- name: Publish Release ${{ env.VERSION }} | ||
id: create_release | ||
uses: actions/create-release@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{ env.VERSION }}-${{ github.run_id }} | ||
release_name: ${{ env.VERSION }} | ||
body: | | ||
Upload Go ${{ env.VERSION }} | ||
- name: Upload release assets | ||
uses: actions/github-script@v2 | ||
with: | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
script: | | ||
const fs = require('fs'); | ||
for (let artifactDir of fs.readdirSync('.')) { | ||
let artifactName = fs.readdirSync(`${artifactDir}`)[0]; | ||
console.log(`Upload ${artifactName} asset`); | ||
github.repos.uploadReleaseAsset({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
release_id: ${{ steps.create_release.outputs.id }}, | ||
name: artifactName, | ||
data: fs.readFileSync(`./${artifactDir}/${artifactName}`) | ||
}); | ||
} | ||
trigger_pr: | ||
name: Trigger "Create Pull Request" workflow | ||
needs: publish_release | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Trigger "Create Pull Request" workflow | ||
uses: actions/github-script@v2 | ||
with: | ||
github-token: ${{ secrets.PERSONAL_TOKEN }} | ||
script: | | ||
github.actions.createWorkflowDispatch({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
workflow_id: 'create-pr.yml', | ||
ref: 'main' | ||
}); |
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,33 @@ | ||
name: Create Pull Request | ||
on: | ||
workflow_dispatch: | ||
|
||
defaults: | ||
run: | ||
shell: pwsh | ||
|
||
jobs: | ||
create_pr: | ||
name: Create Pull Request | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
|
||
- name: Create versions-manifest.json | ||
run: | | ||
./helpers/packages-generation/manifest-generator.ps1 -RepositoryFullName "$env:GITHUB_REPOSITORY" ` | ||
-GitHubAccessToken "${{secrets.GITHUB_TOKEN}}" ` | ||
-OutputFile "./versions-manifest.json" ` | ||
-ConfigurationFile "./config/go-manifest-config.json" | ||
- name: Create GitHub PR | ||
run: | | ||
$formattedDate = Get-Date -Format "MM/dd/yyyy" | ||
./helpers/github/create-pull-request.ps1 ` | ||
-RepositoryFullName "$env:GITHUB_REPOSITORY" ` | ||
-AccessToken "${{secrets.GITHUB_TOKEN}}" ` | ||
-BranchName "update-versions-manifest-file" ` | ||
-CommitMessage "Update versions-manifest" ` | ||
-PullRequestTitle "[versions-manifest] Update for release from ${formattedDate}" ` | ||
-PullRequestBody "Update versions-manifest.json for release from ${formattedDate}" |
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
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.