Merge pull request #3 from nikita-bykov/migrate-go-versions

Migrate go versions
pull/10/head
Nikita Bykov 5 years ago committed by GitHub
commit de60860b59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,12 +1,11 @@
name: Generate Go.js
name: Generate Go package
on:
# TODO: currently workflow dispatch endpoint does not work. I will investigate
workflow_dispatch:
inputs:
VERSION:
description: 'Go version to build and upload'
required: true
default: '14.2.0'
default: '1.15.0'
PUBLISH_RELEASES:
description: 'Whether to publish releases'
required: true
@ -14,12 +13,13 @@ on:
env:
VERSION: ${{ github.event.inputs.VERSION }}
ARCHITECTURE: x64
jobs:
build_go:
name: Build Go ${{ github.event.inputs.VERSION }} ${{ matrix.platform }}
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:
@ -29,57 +29,44 @@ jobs:
with:
submodules: true
- name: Create artifact directories
run: |
binariesDirectory=$RUNNER_WORKSPACE/binaries
echo ::set-env name=BINARIES_DIRECTORY::$binariesDirectory
mkdir $binariesDirectory
artifactDirectory=$RUNNER_WORKSPACE/artifact
echo ::set-env name=ARTIFACT_DIRECTORY::$artifactDirectory
mkdir $artifactDirectory
- name: Build Go ${{ env.VERSION }}
shell: pwsh
run: |
./builders/build-go.ps1 -Version $env:VERSION `
-Platform ${{ matrix.platform }} `
-Architecture $env:ARCHITECTURE
shell: pwsh
-Platform ${{ matrix.platform }}
- name: Publish artifact
uses: actions/upload-artifact@v2
with:
name: go-${{ env.VERSION }}-${{ matrix.platform }}
path: /home/runner/work/go-versions/artifact
name: ${{ env.ARTIFACT_NAME }}
path: ${{ runner.temp }}/artifact
test_go:
name: Test Go ${{ github.event.inputs.VERSION }} ${{ matrix.platform }}
name: Test Go ${{ github.event.inputs.VERSION }} [${{ matrix.platform }}]
needs: build_go
runs-on: ${{ matrix.os }}-latest
runs-on: ${{ matrix.os }}
defaults:
run:
shell: pwsh
env:
ARTIFACT_NAME: go-${{ github.event.inputs.VERSION }}-${{ matrix.platform }}-x64
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu
- os: ubuntu-latest
platform: linux
- os: macos
- os: macos-latest
platform: darwin
- os: windows
- os: windows-latest
platform: win32
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Set AGENT_TOOLSDIRECTORY variable
if: matrix.platform == 'win32'
run: |
# GitHub Windows images don't have `AGENT_TOOLSDIRECTORY` variable
echo ::set-env name=AGENT_TOOLSDIRECTORY::$RUNNER_TOOL_CACHE
shell: bash
- name: Fully cleanup the toolcache directory before testing
run: |
./helpers/clean-toolcache.ps1 -ToolName "go"
shell: pwsh
run: ./helpers/clean-toolcache.ps1 -ToolName "go"
- name: Download artifact
uses: actions/download-artifact@v2
@ -89,20 +76,18 @@ jobs:
- name: Extract files
run: |
if ('${{ matrix.platform }}' -eq 'win32') {
$artifactName = "go-${{ env.VERSION }}-${{ matrix.platform }}-${{ env.ARCHITECTURE }}.7z"
$artifactName = "${{ env.ARTIFACT_NAME }}.7z"
7z.exe x "$artifactName" -y | Out-Null
} else {
$artifactName = "go-${{ env.VERSION }}-${{ matrix.platform }}-${{ env.ARCHITECTURE }}.tar.gz"
$artifactName = "${{ env.ARTIFACT_NAME }}.tar.gz"
tar -xzf $artifactName
}
working-directory: ${{ runner.temp }}/go-${{ env.VERSION }}-${{ matrix.platform }}
shell: pwsh
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 }}/go-${{ env.VERSION }}-${{ matrix.platform }}
shell: pwsh
working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
- name: Setup Go ${{ env.VERSION }}
uses: actions/setup-go@v2.1.1
@ -115,7 +100,8 @@ jobs:
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"
shell: pwsh
Write-Host "Random values:"
for ($i = 0; $i -lt 200; $i++) { Get-Random }
- name: Run tests
run: |
@ -127,9 +113,8 @@ jobs:
Version="$env:VERSION";
}
}
Invoke-Pester -Script $pesterParams -EnableExit -OutputFile "test_results.xml" -OutputFormat NUnitXml
Invoke-Pester -Script $pesterParams -EnableExit
working-directory: ./tests
shell: pwsh
publish_release:
name: Publish release
@ -139,6 +124,8 @@ jobs:
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
@ -148,50 +135,36 @@ jobs:
tag_name: ${{ env.VERSION }}-${{ github.run_id }}
release_name: ${{ env.VERSION }}
body: |
Upload Go.js ${{ env.VERSION }}
upload_assets:
name: Upload assets for ${{ matrix.platform }}
needs: publish_release
runs-on: ubuntu-latest
env:
UPLOAD_URL: ${{ needs.publish_release.outputs.upload_url }}
strategy:
matrix:
extension: ['tar.gz']
platform: [linux, darwin]
include:
- platform: win32
extension: 7z
steps:
- uses: actions/download-artifact@v2
with:
name: go-${{ env.VERSION }}-${{ matrix.platform }}
Upload Go ${{ env.VERSION }}
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload release assets
uses: actions/github-script@v2
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ./go-${{ env.VERSION }}-${{ matrix.platform }}-${{ env.ARCHITECTURE }}.${{ matrix.extension }}
asset_name: go-${{ env.VERSION }}-${{ matrix.platform }}-${{ env.ARCHITECTURE }}.${{ matrix.extension }}
asset_content_type: application/zip
create_pr:
name: Create Pull Request
needs: upload_assets
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:
- uses: actions/checkout@v2
with:
submodules: true
- name: Trigger "Create Pull Request" workflow
uses: actions/github-script@v2
with:
github-token: ${{ secrets.PERSONAL_TOKEN }}
script: |
# TODO: currently 'actions.createWorkflowDispatch' function does not work. I will investigate
github.repos.createDispatchEvent({
owner: context.repo.owner,
repo: context.repo.repo,

@ -1,14 +1,11 @@
name: Create Pull Request
on:
# TODO: currently workflow dispatch endpoint does not work. I will investigate
on:
repository_dispatch:
types: [create-pr]
workflow_dispatch:
jobs:
build:
create_pr:
name: Create Pull Request
env:
REPOSITORY_NAME: 'go-versions'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
@ -18,18 +15,16 @@ jobs:
- name: Create versions-manifest.json
shell: pwsh
run: |
./helpers/packages-generation/manifest-generator.ps1 -GitHubRepositoryOwner "${{github.repository_owner}}" `
-GitHubRepositoryName "$env:REPOSITORY_NAME"`
-GitHubAccessToken "${{secrets.GITHUB_TOKEN}}"`
-OutputFile "./versions-manifest.json"`
./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
shell: pwsh
run: |
$formattedDate = Get-Date -Format "MM/dd/yyyy"
./helpers/github/create-pull-request.ps1 `
-RepositoryOwner "${{github.repository_owner}}" `
-RepositoryName "$env:REPOSITORY_NAME" `
-RepositoryFullName "$env:GITHUB_REPOSITORY" `
-AccessToken "${{secrets.GITHUB_TOKEN}}" `
-BranchName "update-versions-manifest-file" `
-CommitMessage "Update versions-manifest" `

2
.gitmodules vendored

@ -1,4 +1,4 @@
[submodule "helpers"]
path = helpers
url = https://github.com/actions/versions-package-tools
branch = main
branch = v-mazhuk/test-branch

@ -1,25 +1,25 @@
class GoBuilder {
<#
.SYNOPSIS
Base Go builder class.
Base Node.js builder class.
.DESCRIPTION
Base Go builder class that contains general builder methods.
Base Node.js builder class that contains general builder methods.
.PARAMETER Version
The version of Go that should be built.
The version of Node.js that should be built.
.PARAMETER Platform
The platform of Go that should be built.
The platform of Node.js that should be built.
.PARAMETER Architecture
The architecture with which Go should be built.
The architecture with which Node.js should be built.
.PARAMETER TempFolderLocation
The location of temporary files that will be used during Go package generation. Using system BUILD_STAGINGDIRECTORY variable value.
The location of temporary files that will be used during Node.js package generation.
.PARAMETER ArtifactLocation
The location of generated Go artifact. Using system environment BUILD_BINARIESDIRECTORY variable value.
The location of generated Node.js artifact.
.PARAMETER InstallationTemplatesLocation
The location of installation script template. Using "installers" folder from current repository.
@ -40,9 +40,8 @@ class GoBuilder {
$this.Architecture = $architecture
$this.TempFolderLocation = [IO.Path]::GetTempPath()
$this.WorkFolderLocation = $env:BINARIES_DIRECTORY
$this.ArtifactFolderLocation = $env:ARTIFACT_DIRECTORY
$this.WorkFolderLocation = Join-Path $env:RUNNER_TEMP "binaries"
$this.ArtifactFolderLocation = Join-Path $env:RUNNER_TEMP "artifact"
$this.InstallationTemplatesLocation = Join-Path -Path $PSScriptRoot -ChildPath "../installers"
}
@ -95,6 +94,10 @@ class GoBuilder {
Generates Go artifact from downloaded binaries.
#>
Write-Host "Create WorkFolderLocation and ArtifactFolderLocation folders"
New-Item -Path $this.WorkFolderLocation -ItemType "directory"
New-Item -Path $this.ArtifactFolderLocation -ItemType "directory"
Write-Host "Download Go $($this.Version) [$($this.Architecture)] executable..."
$binariesArchivePath = $this.Download()

@ -1 +1 @@
Subproject commit 68072bedefb41436c6b70ddfa9adb8e631a3b6cf
Subproject commit 1314c6de07d9052cb47c157e2babe11e9396ba23

@ -7,17 +7,13 @@ Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
Import-Module (Join-Path $PSScriptRoot "../helpers/common-helpers.psm1")
function Get-UseGoLogs {
$homeDir = $env:HOME
if ([string]::IsNullOrEmpty($homeDir)) {
# GitHub Windows images don't have `HOME` variable
$homeDir = $env:HOMEDRIVE
}
# GitHub Windows images don't have `HOME` variable
$homeDir = $env:HOME ?? $env:HOMEDRIVE
$logsFolderPath = Join-Path -Path $homeDir -ChildPath "runners/*/_diag/pages" -Resolve
$useGoLogFile = Get-ChildItem -Path $logsFolderPath | Where-Object {
$logContent = Get-Content $_.Fullname -Raw
return $logContent -match "GoTool"
return $logContent -match "setup-go@v"
} | Select-Object -First 1
return $useGoLogFile.Fullname
}
@ -39,7 +35,10 @@ Describe "Go" {
It "is used from tool-cache" {
$goPath = (Get-Command "go").Path
$goPath | Should -Not -BeNullOrEmpty
$expectedPath = Join-Path -Path $env:AGENT_TOOLSDIRECTORY -ChildPath "go"
# GitHub Windows images don't have `AGENT_TOOLSDIRECTORY` variable
$toolcacheDir = $env:AGENT_TOOLSDIRECTORY ?? $env:RUNNER_TOOL_CACHE
$expectedPath = Join-Path -Path $toolcacheDir -ChildPath "go"
$goPath.startsWith($expectedPath) | Should -BeTrue -Because "'$goPath' is not started with '$expectedPath'"
}
@ -48,7 +47,7 @@ Describe "Go" {
$useGoLogFile = Get-UseGoLogs
$useGoLogFile | Should -Exist
$useGoLogContent = Get-Content $useGoLogFile -Raw
$useGoLogContent | Should -Match "Found tool in cache"
$useGoLogContent | Should -Match "Found in cache"
}
Set-Location -Path "source"

Loading…
Cancel
Save