Compare commits

..

93 Commits

Author SHA1 Message Date
Ethan Chiu
b591576203 Merge pull request #51 from actions/ethanchewy/add-slack
Add back slack notification
2022-03-16 10:26:42 -07:00
Ethan Chiu
b97793e13e Add back slack notification 2022-03-16 10:11:36 -07:00
Brian Cristante
b844ed6c6d Merge pull request #50 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/15/2022
2022-03-16 11:00:54 -04:00
Service account
8a0545cb70 Update versions-manifest 2022-03-15 21:23:15 +00:00
Brian Cristante
34306dce78 Merge pull request #49 from ethanchewy/patch-1
Comment out slack channel posting
2022-03-15 16:39:58 -04:00
Ethan Chiu
2e49d3e53d add logging for message contents 2022-03-15 11:57:09 -07:00
Ethan Chiu
c18c2ac1ac Comment out slack channel posting
To unblock future go builds immediately
2022-03-15 11:45:08 -07:00
github-actions[bot]
b2fe27c0b9 Update versions-manifest (#47)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-02-11 10:48:18 +03:00
github-actions[bot]
c27e49f619 Update versions-manifest (#46)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-01-07 22:12:10 +03:00
github-actions[bot]
9d9bd2c789 Update versions-manifest (#45)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-12-09 20:03:07 +03:00
github-actions[bot]
017e64abe3 Update versions-manifest (#43) 2021-12-03 11:16:30 +03:00
github-actions[bot]
dfb38cff48 Update versions-manifest (#42)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-11-05 18:30:41 +03:00
Nikolay Frolov
4e55ba98df Uptake of the latest changes for helpers submodule (#41) 2021-10-14 16:57:30 +03:00
MaksimZhukov
6e78c4b835 Merge pull request #40 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 10/08/2021
2021-10-08 11:13:29 +03:00
Service account
6ab1ee80cb Update versions-manifest 2021-10-08 07:29:44 +00:00
MaksimZhukov
6712407a7f Merge pull request #39 from nikolai-frolov/helpers-update
Uptake of the latest changes for helpers submodule
2021-10-07 11:08:51 +03:00
Nikolay Frolov
91c89f70d1 Uptake of the latest changes for helpers submodule 2021-10-06 18:10:57 +03:00
MaksimZhukov
13c5817e5c Merge pull request #37 from Yuriy-Kukushkin/main
Move manifest validation pipeline from Azure DevOps
2021-09-15 14:07:34 +03:00
Yuriy-Kukushkin
38f14f667d Updated event 2021-09-15 13:58:37 +03:00
Yuriy-Kukushkin
5735a29e98 Updated submodule 2021-09-15 11:16:57 +03:00
MaksimZhukov
25beb00b9f Merge pull request #38 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/10/2021
2021-09-10 10:58:51 +03:00
Service account
260b2b7fbc Update versions-manifest 2021-09-10 07:24:49 +00:00
Yuriy-Kukushkin
187f998b00 Added token 2021-09-09 18:02:16 +03:00
Yuriy-Kukushkin
7dad0a857d Removed event 2021-09-02 10:12:37 +03:00
Yuriy-Kukushkin
bf5a404e5b Changed test data 2021-09-01 22:19:40 +03:00
Yuriy-Kukushkin
307dc6197a Added validate-manifest.yml 2021-09-01 22:05:11 +03:00
MaksimZhukov
868a8c05e8 Merge pull request #36 from nikita-bykov/move-get-go-versions-workflow
Move get-go-versions pipeline from Azure DevOps
2021-08-26 12:31:29 +03:00
Nikita Bykov
df37e8bf8f Update helpers 2021-08-26 12:20:41 +03:00
Nikita Bykov
b895c36713 Update Send Slack notification step to send a custom message 2021-08-25 15:29:09 +03:00
Nikita Bykov
d0f2864c56 Update get-go-versions forkflow 2021-08-20 17:33:06 +03:00
Nikita Bykov
c8892db080 Add the job to check build for failures in get-go-versions.yml 2021-08-19 16:16:05 +03:00
Nikita Bykov
dc914fd71a Move get-go-versions from Azure DevOps 2021-08-17 17:12:11 +03:00
github-actions[bot]
293cbf311d Update versions-manifest (#35)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-08-17 14:12:33 +03:00
MaksimZhukov
090a19ca59 Merge pull request #34 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 08/06/2021
2021-08-06 10:02:30 +03:00
Service account
00a50d6501 Update versions-manifest 2021-08-06 06:06:47 +00:00
github-actions[bot]
562bf9fcb9 Add 1.16.6 & 1.15.14 (#33) 2021-07-13 10:04:49 +03:00
Alena Sviridenko
8ad5091061 Merge pull request #32 from actions/update-versions-manifest-file 2021-06-04 09:25:30 +03:00
Service account
f18d1622a0 Update versions-manifest 2021-06-04 06:05:44 +00:00
Alena Sviridenko
e891add10b Merge pull request #31 from actions/update-versions-manifest-file 2021-05-07 18:28:18 +03:00
Service account
2021212951 Update versions-manifest 2021-05-07 15:14:29 +00:00
Alena Sviridenko
814ab7ec6d Merge pull request #30 from actions/update-versions-manifest-file 2021-04-02 09:04:28 +03:00
Service account
68009643bb Update versions-manifest 2021-04-02 05:52:37 +00:00
MaksimZhukov
9291170abe Merge pull request #29 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/12/2021
2021-03-12 12:02:52 +03:00
Service account
ed61881ea7 Update versions-manifest 2021-03-12 06:25:26 +00:00
Maxim Lobanov
15cbc5916e Merge pull request #28 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/11/2021
2021-03-11 10:24:36 +03:00
Service account
0e28055e56 Update versions-manifest 2021-03-11 07:12:08 +00:00
MaksimZhukov
d3edc80ad6 Merge pull request #27 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 02/17/2021
2021-02-17 10:55:28 +03:00
Service account
2689509c1b Update versions-manifest 2021-02-17 07:09:52 +00:00
MaksimZhukov
aa3776fc05 Merge pull request #25 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 02/05/2021
2021-02-05 10:54:53 +03:00
Service account
f1bfe9ec2a Update versions-manifest 2021-02-05 07:21:10 +00:00
MaksimZhukov
426f431301 Merge pull request #24 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 01/20/2021
2021-01-21 10:43:53 +03:00
Maxim Lobanov
cf20b665a4 Merge pull request #23 from actions/add-codeowners
Create CODEOWNERS
2021-01-20 21:37:56 +03:00
Service account
0783ef2ad9 Update versions-manifest 2021-01-20 06:58:37 +00:00
Maxim Lobanov
7b21874c08 Update CODEOWNERS 2021-01-11 19:47:52 +03:00
Maxim Lobanov
98429fb586 Create CODEOWNERS 2021-01-08 12:31:49 +03:00
Maxim Lobanov
ce802984c0 Merge pull request #22 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 12/04/2020
2020-12-04 09:46:37 +03:00
Service account
abba187441 Update versions-manifest 2020-12-04 05:53:01 +00:00
MaksimZhukov
eab7225c23 Merge pull request #21 from MaksimZhukov/v-mazhuk/fix-powerhell-issue-with-paths
Fix PowerShell issue with relative paths
2020-11-17 20:54:55 +03:00
MaksimZhukov
ba4d1dead0 Fix PowerShell issue with relative paths 2020-11-17 20:16:35 +03:00
MaksimZhukov
bbbdbbf479 Merge pull request #20 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/13/2020
2020-11-13 10:52:10 +03:00
Service account
078e4a8546 Update versions-manifest 2020-11-13 06:42:14 +00:00
MaksimZhukov
690124df27 Merge pull request #19 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 11/06/2020
2020-11-06 11:15:55 +03:00
Service account
5d20670749 Update versions-manifest 2020-11-06 08:13:48 +00:00
MaksimZhukov
e89bc70e56 Merge pull request #18 from MaksimZhukov/v-mazhuk/add-pull-request-event-trigger
Add ability to trigger packages generation on PRs
2020-11-03 15:16:25 +03:00
MaksimZhukov
889792e4fa Add ability to trigger packages generation on PRs 2020-11-02 19:52:43 +03:00
Maxim Lobanov
eba638186e Merge pull request #17 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 10/15/2020
2020-10-15 10:20:55 +03:00
Service account
808755602f Update versions-manifest 2020-10-15 07:04:24 +00:00
MaksimZhukov
72a65bfa06 Merge pull request #16 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/10/2020
2020-09-10 11:37:48 +03:00
MaksimZhukov
37c1fbd5d5 Merge pull request #15 from actions/v-mazhuk/fix-tests
Update git modules and fix tests
2020-09-10 11:33:52 +03:00
Service account
f7ed56c974 Update versions-manifest 2020-09-10 07:03:35 +00:00
MaksimZhukov
19f60e7cf5 Fix coments 2020-09-10 01:57:10 +03:00
MaksimZhukov
333033608c Update helpers and fix tests 2020-09-09 20:35:55 +03:00
MaksimZhukov
7cea0f8549 Merge pull request #14 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/02/2020
2020-09-02 14:50:58 +03:00
Service account
817f326783 Update versions-manifest 2020-09-02 11:34:48 +00:00
MaksimZhukov
5b3b061dd1 Merge pull request #13 from actions/v-nibyko/move-go-ci
Migrate go-versions CI to GitHub Actions
2020-08-27 16:28:13 +03:00
Nikita Bykov
e33ef4429e resolved comments 2020-08-26 15:58:05 +03:00
Nikita Bykov
c455148af9 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 <v-nibyko@microsoft.com>
2020-08-26 13:18:15 +03:00
Maxim Lobanov
2873528ad9 Add Go 1.15.0
[versions-manifest] Update for release from 08/12/2020
2020-08-12 10:27:45 +03:00
Service account
772e7814a5 Update versions-manifest based on build from 20200812.1 2020-08-12 06:54:58 +00:00
Maxim Lobanov
12335a5b75 Merge pull request #8 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 08/06/2020
2020-08-06 22:17:05 +03:00
Service account
a4d6b93b68 Update versions-manifest based on build from 20200806.3 2020-08-06 19:15:32 +00:00
Maxim Lobanov
41e5fabc82 Merge pull request #7 from actions/v-mazhuk/update-module
Update Git submodule
2020-07-30 14:21:41 +03:00
MaksimZhukov
af49bddae7 Update Git submodule 2020-07-30 13:05:20 +03:00
Maxim Lobanov
dffccd4e4d Merge pull request #6 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 07/17/2020
2020-07-17 10:14:15 +03:00
Service account
02bb9f8abe Update versions-manifest based on build from 20200717.1 2020-07-17 06:53:25 +00:00
Maxim Lobanov
83c2976bd0 Update README.md 2020-07-15 13:31:09 +03:00
Maxim Lobanov
2d148b3dfc Upload 1.13.13, 1.14.5
[versions-manifest] Update for release from 07/15/2020
2020-07-15 07:39:12 +03:00
Service account
773e210944 Update versions-manifest based on build from 20200715.2 2020-07-15 04:36:17 +00:00
Maxim Lobanov
149df221c7 Merge pull request #4 from actions/master
Integrate master changes to main branch
2020-07-14 16:56:40 +03:00
Maxim Lobanov
b34c795b2c Merge pull request #3 from actions/v-malob/switch-default-branch
Switch default branch from "master" to "main"
2020-07-14 16:41:02 +03:00
Maxim Lobanov
3234ea0ee4 switch default branch, update submodule 2020-07-14 16:34:48 +03:00
MaksimZhukov
35de4ce5f5 Merge pull request #1 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/16/2020
2020-06-17 10:26:21 +03:00
Service account
4de67f5470 Update versions-manifest based on build from 20200616.39 2020-06-16 23:06:01 +00:00
18 changed files with 2779 additions and 200 deletions

1
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1 @@
* @actions/virtual-environments-owners

170
.github/workflows/build-go-packages.yml vendored Normal file
View File

@@ -0,0 +1,170 @@
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'
pull_request:
paths-ignore:
- 'versions-manifest.json'
- 'LICENSE'
- '**.md'
branches:
- 'main'
env:
VERSION: ${{ github.event.inputs.VERSION || '1.15.3' }}
defaults:
run:
shell: pwsh
jobs:
build_go:
name: Build Go ${{ github.event.inputs.VERSION || '1.15.3' }} [${{ matrix.platform }}]
runs-on: ubuntu-latest
env:
ARTIFACT_NAME: go-${{ github.event.inputs.VERSION || '1.15.3' }}-${{ 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 }}
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 || '1.15.3' }} [${{ matrix.platform }}]
needs: build_go
runs-on: ${{ matrix.os }}
env:
ARTIFACT_NAME: go-${{ github.event.inputs.VERSION || '1.15.3' }}-${{ 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/setup-go@v2.1.3
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"
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_name == 'workflow_dispatch' && github.event.inputs.PUBLISH_RELEASES == 'true'
needs: test_go
runs-on: ubuntu-latest
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: |
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@v3
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'
});

33
.github/workflows/create-pr.yml vendored Normal file
View File

@@ -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}"

97
.github/workflows/get-go-versions.yml vendored Normal file
View File

@@ -0,0 +1,97 @@
name: Get Go versions
on:
schedule:
- cron: '0 3,15 * * *'
workflow_dispatch:
env:
TOOL_NAME: "Go"
defaults:
run:
shell: pwsh
jobs:
find_new_versions:
name: Find new versions
runs-on: ubuntu-latest
outputs:
versions_output: ${{ steps.Get_new_versions.outputs.TOOL_VERSIONS }}
steps:
- uses: actions/checkout@v2
with:
submodules: true
- id: Get_new_versions
name: Get new versions
run: ./helpers/get-new-tool-versions/get-new-tool-versions.ps1 -ToolName ${{ env.TOOL_NAME }}
check_new_versions:
name: Check new versions
runs-on: ubuntu-latest
needs: find_new_versions
env:
TOOL_VERSIONS: ${{needs.find_new_versions.outputs.versions_output}}
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Check Versions
if: env.TOOL_VERSIONS == ''
run: |
Write-Host "No new versions were found"
Import-Module "./helpers/github/github-api.psm1"
$gitHubApi = Get-GitHubApi -RepositoryFullName "$env:GITHUB_REPOSITORY" `
-AccessToken "${{ secrets.PERSONAL_TOKEN }}"
$gitHubApi.CancelWorkflow("$env:GITHUB_RUN_ID")
Start-Sleep -Seconds 60
- name: Send Slack notification
run: |
$pipelineUrl = "$env:GITHUB_SERVER_URL/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID"
$message = "The following versions of '${{ env.TOOL_NAME }}' are available to upload: ${{ env.TOOL_VERSIONS }}\nLink to the pipeline: $pipelineUrl"
./helpers/get-new-tool-versions/send-slack-notification.ps1 -Url "${{ secrets.SLACK_CHANNEL_URL }}" `
-ToolName "${{ env.TOOL_NAME }}" `
-ImageUrl "https://golang.org/lib/godoc/images/footer-gopher.jpg" `
-Text "$message"
trigger_builds:
name: Trigger builds
runs-on: ubuntu-latest
needs: [find_new_versions, check_new_versions]
env:
TOOL_VERSIONS: ${{needs.find_new_versions.outputs.versions_output}}
environment: Get Available Tools Versions - Publishing Approval
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Trigger "Build go packages" workflow
run:
./helpers/github/run-ci-builds.ps1 -RepositoryFullName "$env:GITHUB_REPOSITORY" `
-AccessToken "${{ secrets.PERSONAL_TOKEN }}" `
-WorkflowFileName "build-go-packages.yml" `
-WorkflowDispatchRef "main" `
-ToolVersions "${{ env.TOOL_VERSIONS }}" `
-PublishReleases "true"
check_build:
name: Check build for failures
runs-on: ubuntu-latest
needs: [find_new_versions, check_new_versions, trigger_builds]
if: failure()
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Send Slack notification if build fails
run: |
$pipelineUrl = "$env:GITHUB_SERVER_URL/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID"
$message = "The build of the '${{ env.TOOL_NAME }}' detection pipeline failed :progress-error:\nLink to the pipeline: $pipelineUrl"
./helpers/get-new-tool-versions/send-slack-notification.ps1 -Url "${{ secrets.SLACK_CHANNEL_URL }}" `
-ToolName "${{ env.TOOL_NAME }}" `
-Text "$message" `
-ImageUrl "https://golang.org/lib/godoc/images/footer-gopher.jpg"

48
.github/workflows/validate-manifest.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: Validate manifest
on:
schedule:
- cron: '0 8,20 * * *'
pull_request:
branches:
- main
paths:
- 'versions-manifest.json'
env:
TOOL_NAME: "Go"
defaults:
run:
shell: pwsh
jobs:
validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Validate python-versions manifest
run: .\helpers\packages-generation\manifest-validator.ps1 -ManifestPath '.\versions-manifest.json'
check_build:
name: Check validation for failures
runs-on: ubuntu-latest
needs: [validation]
if: failure()
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Send Slack notification if validation fails
run: |
$pipelineUrl = "$env:GITHUB_SERVER_URL/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID"
$message = "The validation of go-versions manifest failed. \nLink to the pipeline: $pipelineUrl"
.\helpers\get-new-tool-versions\send-slack-notification.ps1 -Url "${{ secrets.SLACK_CHANNEL_URL }}" `
-ToolName "${{ env.TOOL_NAME }}" `
-Text "$message" `
-ImageUrl "https://golang.org/lib/godoc/images/footer-gopher.jpg"

2
.gitmodules vendored
View File

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

View File

@@ -29,22 +29,20 @@ Here are a few things you can do that will increase the likelihood of your pull
### Directory structure
```
├── azure-pipelines/
| └──templates/
├── .github/
| └──workflows/
├── builders/
├── helpers/
├── installers/
└── tests/
└──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.
- `helpers` - contains global helper functions and functions.
- `helpers` - contains global helper classes and functions.
- `installers` - contains installation script templates.
- `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
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)

View File

@@ -9,7 +9,7 @@ The file [versions-manifest.json](./versions-manifest.json) contains the list of
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.
## 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/virtual-environments](https://github.com/actions/virtual-environments) if any versions are missing.
## Contribution
Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure

View File

@@ -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

View File

@@ -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)'

View File

@@ -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()

View File

@@ -1,5 +1,5 @@
using module "./builders/win-go-builder.psm1"
using module "./builders/nix-go-builder.psm1"
using module "./win-go-builder.psm1"
using module "./nix-go-builder.psm1"
<#
.SYNOPSIS

View File

@@ -16,10 +16,13 @@ class GoBuilder {
The architecture with which Go 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 Go package generation.
.PARAMETER ArtifactLocation
The location of generated Go artifact. Using system environment BUILD_BINARIESDIRECTORY variable value.
.PARAMETER WorkFolderLocation
The location of installation files.
.PARAMETER ArtifactFolderLocation
The location of generated Go artifact.
.PARAMETER InstallationTemplatesLocation
The location of installation script template. Using "installers" folder from current repository.
@@ -40,9 +43,8 @@ class GoBuilder {
$this.Architecture = $architecture
$this.TempFolderLocation = [IO.Path]::GetTempPath()
$this.WorkFolderLocation = $env:BUILD_BINARIESDIRECTORY
$this.ArtifactFolderLocation = $env:BUILD_STAGINGDIRECTORY
$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 +97,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()

View File

@@ -1,4 +1,4 @@
using module "./builders/go-builder.psm1"
using module "./go-builder.psm1"
class NixGoBuilder : GoBuilder {
<#

View File

@@ -1,4 +1,4 @@
using module "./builders/go-builder.psm1"
using module "./go-builder.psm1"
class WinGoBuilder : GoBuilder {
<#

Submodule helpers updated: 350e2888aa...6f1aa3ce73

View File

@@ -1,19 +1,21 @@
param (
[version] [Parameter (Mandatory = $true)] [ValidateNotNullOrEmpty()]
$Version
)
Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
Import-Module (Join-Path $PSScriptRoot "../helpers/common-helpers.psm1")
function Get-UseGoLogs {
$logsFolderPath = Join-Path -Path $env:AGENT_HOMEDIRECTORY -ChildPath "_diag" | Join-Path -ChildPath "pages"
BeforeAll {
Set-Location -Path "source"
$sourceLocation = Get-Location
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 "GoTool"
return $logContent -match "setup-go@v"
} | Select-Object -First 1
return $useGoLogFile.Fullname
}
}
Describe "Go" {
@@ -22,6 +24,7 @@ Describe "Go" {
}
It "version is correct" {
[version]$Version = $env:VERSION
$versionOutput = Invoke-Expression -Command "go version"
$finalVersion = $Version.ToString(3)
If ($Version.Build -eq "0"){
@@ -33,7 +36,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'"
}
@@ -42,18 +48,18 @@ 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"
$sourceLocation = Get-Location
It "Run simple code" {
$simpleLocation = Join-Path -Path $sourceLocation -ChildPath "simple"
Set-Location -Path $simpleLocation
"go run 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" {
@@ -61,7 +67,9 @@ Describe "Go" {
Set-Location -Path $mapsLocation
"go run 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" {
@@ -69,6 +77,8 @@ Describe "Go" {
Set-Location -Path $methodsLocation
"go run 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
}
}

2377
versions-manifest.json Normal file

File diff suppressed because it is too large Load Diff