Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: actions/go-versions
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.19.4-3636993500
Choose a base ref
...
head repository: actions/go-versions
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 1.19.5-3890632565
Choose a head ref
  • 6 commits
  • 7 files changed
  • 6 contributors

Commits on Dec 6, 2022

  1. Verified

    This commit was signed with the committer’s verified signature.
    etrepum Bob Ippolito
    Copy the full SHA
    e997e9e View commit details

Commits on Dec 7, 2022

  1. Update versions-manifest (#65)

    Co-authored-by: Service account <no-reply@microsoft.com>
    github-actions[bot] and 459680 authored Dec 7, 2022
    Copy the full SHA
    c9ed2f9 View commit details

Commits on Dec 9, 2022

  1. Copy the full SHA
    1e50d2d View commit details

Commits on Dec 14, 2022

  1. Merge pull request #64 from MaksimZhukov/introduce-reusable-workflows

    Update workflows to use reusable ones
    marko-zivic-93 authored Dec 14, 2022
    Copy the full SHA
    1a111f3 View commit details

Commits on Dec 26, 2022

  1. Update CODEOWNERS

    e-korolevskii authored Dec 26, 2022
    1
    Copy the full SHA
    9ea2b98 View commit details

Commits on Dec 27, 2022

  1. Merge pull request #66 from actions/update-codeowners

    Update CODEOWNERS
    marko-zivic-93 authored Dec 27, 2022
    Copy the full SHA
    8666f92 View commit details
Showing with 88 additions and 311 deletions.
  1. +1 −1 .github/CODEOWNERS
  2. +12 −151 .github/workflows/build-go-packages.yml
  3. +5 −28 .github/workflows/create-pr.yml
  4. +6 −90 .github/workflows/get-go-versions.yml
  5. +10 −37 .github/workflows/validate-manifest.yml
  6. +4 −4 README.md
  7. +50 −0 versions-manifest.json
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
* @actions/virtual-environments-owners
* @actions/setup-actions-team
163 changes: 12 additions & 151 deletions .github/workflows/build-go-packages.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
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.15.0'
default: '1.19.0'
PUBLISH_RELEASES:
description: 'Whether to publish releases'
type: boolean
required: true
default: 'false'
default: false
pull_request:
paths-ignore:
- 'versions-manifest.json'
@@ -18,153 +20,12 @@ on:
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'
});
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
33 changes: 5 additions & 28 deletions .github/workflows/create-pr.yml
Original file line number Diff line number Diff line change
@@ -2,32 +2,9 @@ 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}"
create-pr:
uses: actions/versions-package-tools/.github/workflows/create-pr-to-update-manifest.yml@main
with:
tool-name: "go"
secrets: inherit
96 changes: 6 additions & 90 deletions .github/workflows/get-go-versions.yml
Original file line number Diff line number Diff line change
@@ -4,94 +4,10 @@ on:
- 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"
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
47 changes: 10 additions & 37 deletions .github/workflows/validate-manifest.yml
Original file line number Diff line number Diff line change
@@ -1,48 +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'

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"
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
Loading