Compare commits
154 Commits
1.12.0-202
...
main
Author | SHA1 | Date |
---|---|---|
gitea-actions[bot] | d59ac60c2b | |
github-actions[bot] | 070c2a1b84 | |
github-actions[bot] | 06b75e6f50 | |
gowridurgad | 435e8c8778 | |
aparnajyothi-y | ef611dd539 | |
github-actions[bot] | b1013e0081 | |
github-actions[bot] | 3707979bc0 | |
github-actions[bot] | 74d3ad35e2 | |
github-actions[bot] | 497900d985 | |
github-actions[bot] | 5250a133e2 | |
github-actions[bot] | c0555276f6 | |
HarithaVattikuti | de9a0fc11e | |
Service account | 2344cc872a | |
github-actions[bot] | 1635b75524 | |
github-actions[bot] | 2935e07892 | |
github-actions[bot] | 8196b0fc6b | |
Dmitry Shibanov | 6de71f133a | |
github-actions[bot] | efc7cf9b98 | |
github-actions[bot] | 2965f72cec | |
github-actions[bot] | 6c844dd698 | |
github-actions[bot] | 54362b0923 | |
Dmitry Shibanov | 278f715aec | |
Marko Zivic | 873008f3a4 | |
Dusan Trickovic | 9950b4c24d | |
github-actions[bot] | 1871e111e3 | |
github-actions[bot] | 6461f1df09 | |
github-actions[bot] | 05b161f8b7 | |
Dmitry Shibanov | 0e4e5019c1 | |
github-actions[bot] | a42239e7a9 | |
github-actions[bot] | e0a0673ca1 | |
github-actions[bot] | f436eb1900 | |
Dmitry Shibanov | c2d6080d9a | |
Marko Zivic | 55fda57e98 | |
Service account | dd670b40fc | |
github-actions[bot] | c860efc7e5 | |
github-actions[bot] | 797449dd8e | |
github-actions[bot] | b27d67b686 | |
github-actions[bot] | 476ac2a1cb | |
github-actions[bot] | 4fbaddfe63 | |
github-actions[bot] | 244f8fdaff | |
Ivan | f999e556e9 | |
github-actions[bot] | 2f4bcf5e73 | |
Marko Zivic | 8666f92fad | |
Evgenii Korolevskii | 9ea2b986ed | |
Marko Zivic | 1a111f3e5c | |
MaksimZhukov | 1e50d2d968 | |
github-actions[bot] | c9ed2f9d11 | |
MaksimZhukov | e997e9e934 | |
github-actions[bot] | dca364fcdb | |
Marko Zivic | 8b01adb6c0 | |
Service account | 4c9c326cab | |
github-actions[bot] | 7fbc001811 | |
Marko Zivic | acce0a295a | |
github-actions[bot] | db588f6323 | |
github-actions[bot] | c3a220ac09 | |
github-actions[bot] | 58362e99d6 | |
github-actions[bot] | 82e37a11c9 | |
github-actions[bot] | 57ea5543a0 | |
Marko Zivic | 6ac541a152 | |
Service account | 710d16ce77 | |
aloviedo | a9a1e21f04 | |
Ethan Chiu | b591576203 | |
Ethan Chiu | b97793e13e | |
Brian Cristante | b844ed6c6d | |
Service account | 8a0545cb70 | |
Brian Cristante | 34306dce78 | |
Ethan Chiu | 2e49d3e53d | |
Ethan Chiu | c18c2ac1ac | |
github-actions[bot] | b2fe27c0b9 | |
github-actions[bot] | c27e49f619 | |
github-actions[bot] | 9d9bd2c789 | |
github-actions[bot] | 017e64abe3 | |
github-actions[bot] | dfb38cff48 | |
Nikolay Frolov | 4e55ba98df | |
MaksimZhukov | 6e78c4b835 | |
Service account | 6ab1ee80cb | |
MaksimZhukov | 6712407a7f | |
Nikolay Frolov | 91c89f70d1 | |
MaksimZhukov | 13c5817e5c | |
Yuriy-Kukushkin | 38f14f667d | |
Yuriy-Kukushkin | 5735a29e98 | |
MaksimZhukov | 25beb00b9f | |
Service account | 260b2b7fbc | |
Yuriy-Kukushkin | 187f998b00 | |
Yuriy-Kukushkin | 7dad0a857d | |
Yuriy-Kukushkin | bf5a404e5b | |
Yuriy-Kukushkin | 307dc6197a | |
MaksimZhukov | 868a8c05e8 | |
Nikita Bykov | df37e8bf8f | |
Nikita Bykov | b895c36713 | |
Nikita Bykov | d0f2864c56 | |
Nikita Bykov | c8892db080 | |
Nikita Bykov | dc914fd71a | |
github-actions[bot] | 293cbf311d | |
MaksimZhukov | 090a19ca59 | |
Service account | 00a50d6501 | |
github-actions[bot] | 562bf9fcb9 | |
Alena Sviridenko | 8ad5091061 | |
Service account | f18d1622a0 | |
Alena Sviridenko | e891add10b | |
Service account | 2021212951 | |
Alena Sviridenko | 814ab7ec6d | |
Service account | 68009643bb | |
MaksimZhukov | 9291170abe | |
Service account | ed61881ea7 | |
Maxim Lobanov | 15cbc5916e | |
Service account | 0e28055e56 | |
MaksimZhukov | d3edc80ad6 | |
Service account | 2689509c1b | |
MaksimZhukov | aa3776fc05 | |
Service account | f1bfe9ec2a | |
MaksimZhukov | 426f431301 | |
Maxim Lobanov | cf20b665a4 | |
Service account | 0783ef2ad9 | |
Maxim Lobanov | 7b21874c08 | |
Maxim Lobanov | 98429fb586 | |
Maxim Lobanov | ce802984c0 | |
Service account | abba187441 | |
MaksimZhukov | eab7225c23 | |
MaksimZhukov | ba4d1dead0 | |
MaksimZhukov | bbbdbbf479 | |
Service account | 078e4a8546 | |
MaksimZhukov | 690124df27 | |
Service account | 5d20670749 | |
MaksimZhukov | e89bc70e56 | |
MaksimZhukov | 889792e4fa | |
Maxim Lobanov | eba638186e | |
Service account | 808755602f | |
MaksimZhukov | 72a65bfa06 | |
MaksimZhukov | 37c1fbd5d5 | |
Service account | f7ed56c974 | |
MaksimZhukov | 19f60e7cf5 | |
MaksimZhukov | 333033608c | |
MaksimZhukov | 7cea0f8549 | |
Service account | 817f326783 | |
MaksimZhukov | 5b3b061dd1 | |
Nikita Bykov | e33ef4429e | |
Nikita Bykov | c455148af9 | |
Maxim Lobanov | 2873528ad9 | |
Service account | 772e7814a5 | |
Maxim Lobanov | 12335a5b75 | |
Service account | a4d6b93b68 | |
Maxim Lobanov | 41e5fabc82 | |
MaksimZhukov | af49bddae7 | |
Maxim Lobanov | dffccd4e4d | |
Service account | 02bb9f8abe | |
Maxim Lobanov | 83c2976bd0 | |
Maxim Lobanov | 2d148b3dfc | |
Service account | 773e210944 | |
Maxim Lobanov | 149df221c7 | |
Maxim Lobanov | b34c795b2c | |
Maxim Lobanov | 3234ea0ee4 | |
MaksimZhukov | 35de4ce5f5 | |
Service account | 4de67f5470 |
|
@ -0,0 +1 @@
|
||||||
|
* @actions/setup-actions-team
|
|
@ -0,0 +1,31 @@
|
||||||
|
name: Generate Go package
|
||||||
|
run-name: Generate Go ${{ inputs.VERSION || '1.19.0' }}
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
VERSION:
|
||||||
|
description: 'Go version to build and upload'
|
||||||
|
required: true
|
||||||
|
default: '1.19.0'
|
||||||
|
PUBLISH_RELEASES:
|
||||||
|
description: 'Whether to publish releases'
|
||||||
|
type: boolean
|
||||||
|
required: true
|
||||||
|
default: false
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- 'versions-manifest.json'
|
||||||
|
- 'LICENSE'
|
||||||
|
- '**.md'
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
go:
|
||||||
|
name: Go
|
||||||
|
uses: actions/versions-package-tools/.github/workflows/build-tool-packages.yml@main
|
||||||
|
with:
|
||||||
|
tool-name: "go"
|
||||||
|
tool-version: ${{ inputs.VERSION || '1.19.0' }}
|
||||||
|
publish-release: ${{ inputs.PUBLISH_RELEASES || false }}
|
||||||
|
secrets: inherit
|
|
@ -0,0 +1,16 @@
|
||||||
|
name: CodeQL analysis
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
schedule:
|
||||||
|
- cron: '0 3 * * 0'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call-codeQL-analysis:
|
||||||
|
name: CodeQL analysis
|
||||||
|
uses: actions/reusable-workflows/.github/workflows/codeql-analysis.yml@main
|
||||||
|
with:
|
||||||
|
languages: '["go"]'
|
|
@ -0,0 +1,10 @@
|
||||||
|
name: Create Pull Request
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-pr:
|
||||||
|
uses: actions/versions-package-tools/.github/workflows/create-pr-to-update-manifest.yml@main
|
||||||
|
with:
|
||||||
|
tool-name: "go"
|
||||||
|
secrets: inherit
|
|
@ -0,0 +1,13 @@
|
||||||
|
name: Get Go versions
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 3,15 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
get-new-go-versions:
|
||||||
|
uses: actions/versions-package-tools/.github/workflows/get-new-tool-versions.yml@main
|
||||||
|
with:
|
||||||
|
tool-name: "Go"
|
||||||
|
image-url: "https://go.dev/images/gopher-footer.jpg"
|
||||||
|
secrets: inherit
|
|
@ -0,0 +1,21 @@
|
||||||
|
name: Validate manifest
|
||||||
|
on:
|
||||||
|
# The GITHUB_TOKEN secret is used to create a PR
|
||||||
|
# The pull_request event will not be triggered by it
|
||||||
|
# That's one of the reasons we need the schedule to validate the versions-manifest.json file
|
||||||
|
schedule:
|
||||||
|
- cron: '0 8,20 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'versions-manifest.json'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
manifest:
|
||||||
|
uses: actions/versions-package-tools/.github/workflows/validate-manifest.yml@main
|
||||||
|
with:
|
||||||
|
tool-name: "Go"
|
||||||
|
image-url: "https://go.dev/images/gopher-footer.jpg"
|
||||||
|
secrets: inherit
|
|
@ -1,4 +1,4 @@
|
||||||
[submodule "helpers"]
|
[submodule "helpers"]
|
||||||
path = helpers
|
path = helpers
|
||||||
url = https://github.com/actions/versions-package-tools
|
url = https://github.com/actions/versions-package-tools
|
||||||
branch = master
|
branch = main
|
||||||
|
|
|
@ -29,22 +29,20 @@ Here are a few things you can do that will increase the likelihood of your pull
|
||||||
### Directory structure
|
### Directory structure
|
||||||
```
|
```
|
||||||
|
|
||||||
├── azure-pipelines/
|
├── .github/
|
||||||
| └──templates/
|
| └──workflows/
|
||||||
├── builders/
|
├── builders/
|
||||||
├── helpers/
|
├── helpers/
|
||||||
├── installers/
|
├── installers/
|
||||||
└── tests/
|
└── tests/
|
||||||
└──sources/
|
└──sources/
|
||||||
```
|
```
|
||||||
- `azure-pipelines*` - contains global YAML definitions for build pipelines. Reusable templates for specific jobs are located in `templates` subfolder.
|
- `.github/workflows` - contains repository workflow files.
|
||||||
- `builders` - contains Go builder classes and functions.
|
- `builders` - contains Go builder classes and functions.
|
||||||
- `helpers` - contains global helper functions and functions.
|
- `helpers` - contains global helper classes and functions.
|
||||||
- `installers` - contains installation script templates.
|
- `installers` - contains installation script templates.
|
||||||
- `tests` - contains test scripts. Required tests sources are located in `sources` subfolder.
|
- `tests` - contains test scripts. Required tests sources are located in `sources` subfolder.
|
||||||
|
|
||||||
\* _We use Azure Pipelines because there are a few features that Actions is still missing, we'll move to Actions as soon as possible_.
|
|
||||||
|
|
||||||
## Resources
|
## Resources
|
||||||
|
|
||||||
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
|
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
|
||||||
|
|
11
README.md
11
README.md
|
@ -1,15 +1,18 @@
|
||||||
# Go for Actions
|
# Go for Actions
|
||||||
This repository contains the code and scripts that we use to prepare Go packages used in [virtual-environments](https://github.com/actions/virtual-environments) and accessible through the [setup-go](https://github.com/actions/setup-go) Action.
|
This repository contains the code and scripts that we use to prepare Go packages used in [runner-images](https://github.com/actions/runner-images) and accessible through the [setup-go](https://github.com/actions/setup-go) Action.
|
||||||
The file [versions-manifest.json](./versions-manifest.json) contains the list of available and released versions.
|
The file [versions-manifest.json](./versions-manifest.json) contains the list of available and released versions.
|
||||||
|
|
||||||
> Caution: this is prepared for and only permitted for use by actions `virtual-environments` and `setup-go` action.
|
> Caution: this is prepared for and only permitted for use by actions `runner-images` and `setup-go` action.
|
||||||
|
|
||||||
**Status**: Currently under development and in use for beta and preview actions. This repo is undergoing rapid changes.
|
**Status**: Currently under development and in use for beta and preview actions. This repo is undergoing rapid changes.
|
||||||
|
|
||||||
Latest of LTS versions will be installed on the [virtual-environments](https://github.com/actions/virtual-environments) images. Other versions will be pulled JIT using the [`setup-go`](https://github.com/actions/setup-go) action.
|
Latest of LTS versions will be installed on the [runner-images](https://github.com/actions/runner-images) images. Other versions will be pulled JIT using the [`setup-go`](https://github.com/actions/setup-go) action.
|
||||||
|
|
||||||
## Adding new versions
|
## Adding new versions
|
||||||
We are trying to prepare packages for new versions of Go as soon as they are released. Please open an issue if any versions are missing.
|
We are trying to prepare packages for new versions of Go as soon as they are released. Please open an issue in [actions/runner-images](https://github.com/actions/runner-images) if any versions are missing.
|
||||||
|
|
||||||
|
## Support Notification Policy
|
||||||
|
Beginning **approximately six months prior** to the removal of a Go version from the [versions-manifest.json](https://github.com/actions/go-versions/blob/main/versions-manifest.json) file, a pinned issue will be created in the [setup-go](https://github.com/actions/setup-go) repository. This pinned issue will provide important details about the upcoming end of support, including the specific date, as well as any other notes, relevant updates or alternatives. We encourage users to regularly check pinned issues for updates on tool versions they are using for maximum transparency, security, performance and overall compatibility with their projects.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure
|
Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
name: $(date:yyyyMMdd)$(rev:.r)-Go-$(VERSION)
|
|
||||||
trigger: none
|
|
||||||
pr:
|
|
||||||
autoCancel: true
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- master
|
|
||||||
paths:
|
|
||||||
exclude:
|
|
||||||
- versions-manifest.json
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- stage: Build_Go_Darwin
|
|
||||||
dependsOn: []
|
|
||||||
variables:
|
|
||||||
Platform: darwin
|
|
||||||
Architecture: x64
|
|
||||||
jobs:
|
|
||||||
- template: /azure-pipelines/templates/build-job.yml
|
|
||||||
|
|
||||||
- stage: Test_Go_Darwin
|
|
||||||
condition: succeeded()
|
|
||||||
dependsOn: Build_Go_Darwin
|
|
||||||
variables:
|
|
||||||
VmImage: macOS-latest
|
|
||||||
Platform: darwin
|
|
||||||
Architecture: x64
|
|
||||||
jobs:
|
|
||||||
- template: /azure-pipelines/templates/test-job.yml
|
|
||||||
|
|
||||||
- stage: Build_Go_Linux
|
|
||||||
dependsOn: []
|
|
||||||
variables:
|
|
||||||
Platform: linux
|
|
||||||
Architecture: x64
|
|
||||||
jobs:
|
|
||||||
- template: /azure-pipelines/templates/build-job.yml
|
|
||||||
|
|
||||||
- stage: Test_Go_Linux
|
|
||||||
condition: succeeded()
|
|
||||||
dependsOn: Build_Go_Linux
|
|
||||||
variables:
|
|
||||||
VmImage: ubuntu-latest
|
|
||||||
Platform: linux
|
|
||||||
Architecture: x64
|
|
||||||
jobs:
|
|
||||||
- template: /azure-pipelines/templates/test-job.yml
|
|
||||||
|
|
||||||
- stage: Build_Go_Windows
|
|
||||||
dependsOn: []
|
|
||||||
variables:
|
|
||||||
Platform: win32
|
|
||||||
Architecture: x64
|
|
||||||
jobs:
|
|
||||||
- template: /azure-pipelines/templates/build-job.yml
|
|
||||||
|
|
||||||
- stage: Test_Go_Windows
|
|
||||||
condition: succeeded()
|
|
||||||
dependsOn: Build_Go_Windows
|
|
||||||
variables:
|
|
||||||
VmImage: windows-latest
|
|
||||||
Platform: win32
|
|
||||||
Architecture: x64
|
|
||||||
jobs:
|
|
||||||
- template: /azure-pipelines/templates/test-job.yml
|
|
|
@ -1,21 +0,0 @@
|
||||||
jobs:
|
|
||||||
- job: Build_Go
|
|
||||||
timeoutInMinutes: 90
|
|
||||||
pool:
|
|
||||||
name: Azure Pipelines
|
|
||||||
vmImage: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- checkout: self
|
|
||||||
|
|
||||||
- task: PowerShell@2
|
|
||||||
displayName: 'Build Go $(Version)'
|
|
||||||
inputs:
|
|
||||||
targetType: filePath
|
|
||||||
filePath: './builders/build-go.ps1'
|
|
||||||
arguments: '-Version $(Version) -Platform $(Platform) -Architecture $(Architecture)'
|
|
||||||
|
|
||||||
- task: PublishPipelineArtifact@1
|
|
||||||
displayName: 'Publish Artifact: Go $(Version)'
|
|
||||||
inputs:
|
|
||||||
targetPath: '$(Build.ArtifactStagingDirectory)'
|
|
||||||
artifactName: 'go-$(Version)-$(Platform)-$(Architecture)'
|
|
|
@ -1,75 +0,0 @@
|
||||||
jobs:
|
|
||||||
- job: Test_Go
|
|
||||||
pool:
|
|
||||||
name: Azure Pipelines
|
|
||||||
vmImage: $(VmImage)
|
|
||||||
steps:
|
|
||||||
- checkout: self
|
|
||||||
submodules: true
|
|
||||||
|
|
||||||
- task: PowerShell@2
|
|
||||||
displayName: Fully cleanup the toolcache directory before testing
|
|
||||||
inputs:
|
|
||||||
targetType: filePath
|
|
||||||
filePath: helpers/clean-toolcache.ps1
|
|
||||||
arguments: -ToolName "go"
|
|
||||||
|
|
||||||
- task: DownloadPipelineArtifact@2
|
|
||||||
inputs:
|
|
||||||
source: 'current'
|
|
||||||
artifact: 'go-$(Version)-$(Platform)-$(Architecture)'
|
|
||||||
path: $(Build.ArtifactStagingDirectory)
|
|
||||||
|
|
||||||
- task: ExtractFiles@1
|
|
||||||
inputs:
|
|
||||||
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/go-$(Version)-$(Platform)-$(Architecture).*'
|
|
||||||
destinationFolder: $(Build.BinariesDirectory)
|
|
||||||
cleanDestinationFolder: false
|
|
||||||
|
|
||||||
- task: PowerShell@2
|
|
||||||
displayName: 'Apply build artifact to the local machines'
|
|
||||||
inputs:
|
|
||||||
targetType: inline
|
|
||||||
script: |
|
|
||||||
if ("$(Platform)" -match 'win32') { powershell ./setup.ps1 } else { sh ./setup.sh }
|
|
||||||
workingDirectory: '$(Build.BinariesDirectory)'
|
|
||||||
|
|
||||||
- task: GoTool@0
|
|
||||||
inputs:
|
|
||||||
version: '$(Version)'
|
|
||||||
|
|
||||||
- task: PowerShell@2
|
|
||||||
displayName: 'Wait for the logs'
|
|
||||||
inputs:
|
|
||||||
targetType: inline
|
|
||||||
script: |
|
|
||||||
Write-Host "Fake step that do nothing"
|
|
||||||
Write-Host "We need it because log of previous step 'Use Go' is not available here yet."
|
|
||||||
Write-Host "In testing step (Go.Tests.ps1) we analyze build log of 'GoTool' task"
|
|
||||||
Write-Host "to determine if Go version was consumed from cache and was downloaded"
|
|
||||||
|
|
||||||
- task: PowerShell@2
|
|
||||||
displayName: 'Run tests'
|
|
||||||
inputs:
|
|
||||||
TargetType: inline
|
|
||||||
script: |
|
|
||||||
Install-Module Pester -Force -Scope CurrentUser -RequiredVersion 4.10.1
|
|
||||||
Import-Module Pester
|
|
||||||
$pesterParams = @{
|
|
||||||
Path="./Go.Tests.ps1";
|
|
||||||
Parameters=@{
|
|
||||||
Version="$(Version)";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Invoke-Pester -Script $pesterParams -OutputFile "$(Build.SourcesDirectory)/tests/test_results.xml" -OutputFormat NUnitXml
|
|
||||||
workingDirectory: '$(Build.SourcesDirectory)/tests'
|
|
||||||
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: 'Publish test results'
|
|
||||||
inputs:
|
|
||||||
testResultsFiles: '*.xml'
|
|
||||||
testResultsFormat: NUnit
|
|
||||||
searchFolder: 'tests'
|
|
||||||
failTaskOnFailedTests: true
|
|
||||||
testRunTitle: "Go $(Version)-$(Platform)"
|
|
||||||
condition: always()
|
|
|
@ -1,5 +1,5 @@
|
||||||
using module "./builders/win-go-builder.psm1"
|
using module "./win-go-builder.psm1"
|
||||||
using module "./builders/nix-go-builder.psm1"
|
using module "./nix-go-builder.psm1"
|
||||||
|
|
||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.SYNOPSIS
|
||||||
|
|
|
@ -16,10 +16,13 @@ class GoBuilder {
|
||||||
The architecture with which Go should be built.
|
The architecture with which Go should be built.
|
||||||
|
|
||||||
.PARAMETER TempFolderLocation
|
.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 Go package generation.
|
||||||
|
|
||||||
.PARAMETER ArtifactLocation
|
.PARAMETER WorkFolderLocation
|
||||||
The location of generated Go artifact. Using system environment BUILD_BINARIESDIRECTORY variable value.
|
The location of installation files.
|
||||||
|
|
||||||
|
.PARAMETER ArtifactFolderLocation
|
||||||
|
The location of generated Go artifact.
|
||||||
|
|
||||||
.PARAMETER InstallationTemplatesLocation
|
.PARAMETER InstallationTemplatesLocation
|
||||||
The location of installation script template. Using "installers" folder from current repository.
|
The location of installation script template. Using "installers" folder from current repository.
|
||||||
|
@ -40,9 +43,8 @@ class GoBuilder {
|
||||||
$this.Architecture = $architecture
|
$this.Architecture = $architecture
|
||||||
|
|
||||||
$this.TempFolderLocation = [IO.Path]::GetTempPath()
|
$this.TempFolderLocation = [IO.Path]::GetTempPath()
|
||||||
$this.WorkFolderLocation = $env:BUILD_BINARIESDIRECTORY
|
$this.WorkFolderLocation = Join-Path $env:RUNNER_TEMP "binaries"
|
||||||
$this.ArtifactFolderLocation = $env:BUILD_STAGINGDIRECTORY
|
$this.ArtifactFolderLocation = Join-Path $env:RUNNER_TEMP "artifact"
|
||||||
|
|
||||||
|
|
||||||
$this.InstallationTemplatesLocation = Join-Path -Path $PSScriptRoot -ChildPath "../installers"
|
$this.InstallationTemplatesLocation = Join-Path -Path $PSScriptRoot -ChildPath "../installers"
|
||||||
}
|
}
|
||||||
|
@ -56,7 +58,7 @@ class GoBuilder {
|
||||||
$arch = ($this.Architecture -eq "x64") ? "amd64" : $this.Architecture
|
$arch = ($this.Architecture -eq "x64") ? "amd64" : $this.Architecture
|
||||||
$goPlatform = ($this.Platform -Match "win32") ? "windows" : $this.Platform
|
$goPlatform = ($this.Platform -Match "win32") ? "windows" : $this.Platform
|
||||||
$ArchiveType = ($this.Platform -Match "win32") ? "zip" : "tar.gz"
|
$ArchiveType = ($this.Platform -Match "win32") ? "zip" : "tar.gz"
|
||||||
If ($this.Version.Build -eq "0") {
|
If ($this.Version.Build -eq "0" -and $this.Version -lt "1.21.0") {
|
||||||
$goVersion = "go$($this.Version.ToString(2))"
|
$goVersion = "go$($this.Version.ToString(2))"
|
||||||
} else {
|
} else {
|
||||||
$goVersion = "go$($this.Version.ToString(3))"
|
$goVersion = "go$($this.Version.ToString(3))"
|
||||||
|
@ -95,6 +97,10 @@ class GoBuilder {
|
||||||
Generates Go artifact from downloaded binaries.
|
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..."
|
Write-Host "Download Go $($this.Version) [$($this.Architecture)] executable..."
|
||||||
$binariesArchivePath = $this.Download()
|
$binariesArchivePath = $this.Download()
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using module "./builders/go-builder.psm1"
|
using module "./go-builder.psm1"
|
||||||
|
|
||||||
class NixGoBuilder : GoBuilder {
|
class NixGoBuilder : GoBuilder {
|
||||||
<#
|
<#
|
||||||
|
@ -44,7 +44,7 @@ class NixGoBuilder : GoBuilder {
|
||||||
$installationTemplateLocation = Join-Path -Path $this.InstallationTemplatesLocation -ChildPath $this.InstallationTemplateName
|
$installationTemplateLocation = Join-Path -Path $this.InstallationTemplatesLocation -ChildPath $this.InstallationTemplateName
|
||||||
|
|
||||||
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
|
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
|
||||||
$installationTemplateContent = $installationTemplateContent -f $this.Version.ToString(3)
|
$installationTemplateContent = $installationTemplateContent -f $this.Version.ToString(3), $this.Architecture
|
||||||
$installationTemplateContent | Out-File -FilePath $installationScriptLocation
|
$installationTemplateContent | Out-File -FilePath $installationScriptLocation
|
||||||
|
|
||||||
Write-Debug "Done; Installation script location: $installationScriptLocation)"
|
Write-Debug "Done; Installation script location: $installationScriptLocation)"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using module "./builders/go-builder.psm1"
|
using module "./go-builder.psm1"
|
||||||
|
|
||||||
class WinGoBuilder : GoBuilder {
|
class WinGoBuilder : GoBuilder {
|
||||||
<#
|
<#
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"regex": "go-\\d+\\.\\d+\\.\\d+-(\\w+)-(x\\d+)",
|
"regex": "go-\\d+\\.\\d+\\.\\d+-(\\w+)-((x|arm)\\d+)",
|
||||||
"groups": {
|
"groups": {
|
||||||
"arch": 2,
|
"arch": 2,
|
||||||
"platform": 1
|
"platform": 1
|
||||||
|
|
2
helpers
2
helpers
|
@ -1 +1 @@
|
||||||
Subproject commit 350e2888aa8ba786f16e7e37479c41551326d25c
|
Subproject commit 6fbb1f0f2098254142702dba05fe75cd8e77c4ae
|
|
@ -1,10 +1,11 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
GO_VERSION={0}
|
GO_VERSION={0}
|
||||||
|
ARCH={1}
|
||||||
|
|
||||||
GO_TOOLCACHE_PATH=$AGENT_TOOLSDIRECTORY/go
|
GO_TOOLCACHE_PATH=$AGENT_TOOLSDIRECTORY/go
|
||||||
GO_TOOLCACHE_VERSION_PATH=$GO_TOOLCACHE_PATH/$GO_VERSION
|
GO_TOOLCACHE_VERSION_PATH=$GO_TOOLCACHE_PATH/$GO_VERSION
|
||||||
GO_TOOLCACHE_VERSION_ARCH_PATH=$GO_TOOLCACHE_VERSION_PATH/x64
|
GO_TOOLCACHE_VERSION_ARCH_PATH=$GO_TOOLCACHE_VERSION_PATH/$ARCH
|
||||||
|
|
||||||
echo "Check if Go hostedtoolcache folder exist..."
|
echo "Check if Go hostedtoolcache folder exist..."
|
||||||
if [ ! -d $GO_TOOLCACHE_PATH ]; then
|
if [ ! -d $GO_TOOLCACHE_PATH ]; then
|
||||||
|
@ -22,4 +23,4 @@ cp -R ./* $GO_TOOLCACHE_VERSION_ARCH_PATH
|
||||||
rm $GO_TOOLCACHE_VERSION_ARCH_PATH/setup.sh
|
rm $GO_TOOLCACHE_VERSION_ARCH_PATH/setup.sh
|
||||||
|
|
||||||
echo "Create complete file"
|
echo "Create complete file"
|
||||||
touch $GO_TOOLCACHE_VERSION_PATH/x64.complete
|
touch $GO_TOOLCACHE_VERSION_PATH/$ARCH.complete
|
||||||
|
|
|
@ -1,27 +1,31 @@
|
||||||
param (
|
|
||||||
[version] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
|
|
||||||
$Version
|
|
||||||
)
|
|
||||||
|
|
||||||
Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
|
Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
|
||||||
Import-Module (Join-Path $PSScriptRoot "../helpers/common-helpers.psm1")
|
Import-Module (Join-Path $PSScriptRoot "../helpers/common-helpers.psm1")
|
||||||
|
|
||||||
function Get-UseGoLogs {
|
Describe "Go" {
|
||||||
$logsFolderPath = Join-Path -Path $env:AGENT_HOMEDIRECTORY -ChildPath "_diag" | Join-Path -ChildPath "pages"
|
|
||||||
|
|
||||||
$useGoLogFile = Get-ChildItem -Path $logsFolderPath | Where-Object {
|
BeforeAll {
|
||||||
$logContent = Get-Content $_.Fullname -Raw
|
Set-Location -Path "source"
|
||||||
return $logContent -match "GoTool"
|
$sourceLocation = Get-Location
|
||||||
} | Select-Object -First 1
|
|
||||||
return $useGoLogFile.Fullname
|
function Get-UseGoLogs {
|
||||||
|
# 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 "setup-go@v"
|
||||||
|
} | Select-Object -First 1
|
||||||
|
return $useGoLogFile.Fullname
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Describe "Go" {
|
|
||||||
It "is available" {
|
It "is available" {
|
||||||
"go version" | Should -ReturnZeroExitCode
|
"go version" | Should -ReturnZeroExitCode
|
||||||
}
|
}
|
||||||
|
|
||||||
It "version is correct" {
|
It "version is correct" {
|
||||||
|
[version]$Version = $env:VERSION
|
||||||
$versionOutput = Invoke-Expression -Command "go version"
|
$versionOutput = Invoke-Expression -Command "go version"
|
||||||
$finalVersion = $Version.ToString(3)
|
$finalVersion = $Version.ToString(3)
|
||||||
If ($Version.Build -eq "0"){
|
If ($Version.Build -eq "0"){
|
||||||
|
@ -33,27 +37,43 @@ Describe "Go" {
|
||||||
It "is used from tool-cache" {
|
It "is used from tool-cache" {
|
||||||
$goPath = (Get-Command "go").Path
|
$goPath = (Get-Command "go").Path
|
||||||
$goPath | Should -Not -BeNullOrEmpty
|
$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'"
|
$goPath.startsWith($expectedPath) | Should -BeTrue -Because "'$goPath' is not started with '$expectedPath'"
|
||||||
}
|
}
|
||||||
|
|
||||||
It "cached version is used without downloading" {
|
It "cached version is used without downloading" {
|
||||||
|
|
||||||
|
if ($env:RUNNER_TYPE -eq "self-hosted") {
|
||||||
|
# Get the installed version of Go
|
||||||
|
$goVersion = Invoke-Expression "go version"
|
||||||
|
# Check if Go is installed
|
||||||
|
$goVersion | Should -Not -BeNullOrEmpty
|
||||||
|
# Check if the installed version of Go is the expected version
|
||||||
|
$installedVersion = $goVersion -split " " | Select-Object -Index 2
|
||||||
|
$installedVersion = $installedVersion -replace "go", "" -replace "v", ""
|
||||||
|
$expectedVersion = $env:VERSION -replace ".0", ""
|
||||||
|
$installedVersion | Should -BeLike "$expectedVersion*"
|
||||||
|
}else {
|
||||||
# Analyze output of previous steps to check if Go was consumed from cache or downloaded
|
# Analyze output of previous steps to check if Go was consumed from cache or downloaded
|
||||||
$useGoLogFile = Get-UseGoLogs
|
$useGoLogFile = Get-UseGoLogs
|
||||||
$useGoLogFile | Should -Exist
|
$useGoLogFile | Should -Exist
|
||||||
$useGoLogContent = Get-Content $useGoLogFile -Raw
|
$useGoLogContent = Get-Content $useGoLogFile -Raw
|
||||||
$useGoLogContent | Should -Match "Found tool in cache"
|
$useGoLogContent | Should -Match "Found in cache"
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Set-Location -Path "source"
|
|
||||||
$sourceLocation = Get-Location
|
|
||||||
|
|
||||||
It "Run simple code" {
|
It "Run simple code" {
|
||||||
$simpleLocation = Join-Path -Path $sourceLocation -ChildPath "simple"
|
$simpleLocation = Join-Path -Path $sourceLocation -ChildPath "simple"
|
||||||
Set-Location -Path $simpleLocation
|
Set-Location -Path $simpleLocation
|
||||||
"go run simple.go" | Should -ReturnZeroExitCode
|
"go run simple.go" | Should -ReturnZeroExitCode
|
||||||
"go build simple.go" | Should -ReturnZeroExitCode
|
"go build simple.go" | Should -ReturnZeroExitCode
|
||||||
"./simple" | Should -ReturnZeroExitCode
|
$compiledPackageName = "simple"
|
||||||
|
if ($IsWindows) { $compiledPackageName += ".exe" }
|
||||||
|
(Resolve-Path "./$compiledPackageName").Path | Should -ReturnZeroExitCode
|
||||||
}
|
}
|
||||||
|
|
||||||
It "Run maps code" {
|
It "Run maps code" {
|
||||||
|
@ -61,7 +81,9 @@ Describe "Go" {
|
||||||
Set-Location -Path $mapsLocation
|
Set-Location -Path $mapsLocation
|
||||||
"go run maps.go" | Should -ReturnZeroExitCode
|
"go run maps.go" | Should -ReturnZeroExitCode
|
||||||
"go build maps.go" | Should -ReturnZeroExitCode
|
"go build maps.go" | Should -ReturnZeroExitCode
|
||||||
"./maps" | Should -ReturnZeroExitCode
|
$compiledPackageName = "maps"
|
||||||
|
if ($IsWindows) { $compiledPackageName += ".exe" }
|
||||||
|
(Resolve-Path "./$compiledPackageName").Path | Should -ReturnZeroExitCode
|
||||||
}
|
}
|
||||||
|
|
||||||
It "Run methods code" {
|
It "Run methods code" {
|
||||||
|
@ -69,6 +91,8 @@ Describe "Go" {
|
||||||
Set-Location -Path $methodsLocation
|
Set-Location -Path $methodsLocation
|
||||||
"go run methods.go" | Should -ReturnZeroExitCode
|
"go run methods.go" | Should -ReturnZeroExitCode
|
||||||
"go build methods.go" | Should -ReturnZeroExitCode
|
"go build methods.go" | Should -ReturnZeroExitCode
|
||||||
"./methods" | Should -ReturnZeroExitCode
|
$compiledPackageName = "methods"
|
||||||
|
if ($IsWindows) { $compiledPackageName += ".exe" }
|
||||||
|
(Resolve-Path "./$compiledPackageName").Path | Should -ReturnZeroExitCode
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue