Compare commits

...

57 Commits

Author SHA1 Message Date
Evgenii Korolevskii
a938f96cba Update CODEOWNERS 2022-12-26 09:50:10 +01:00
github-actions[bot]
3e6fdaa9dd Update versions-manifest (#121)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-12-15 10:51:33 +01:00
Marko Zivic
c8117e2a6f Merge pull request #120 from MaksimZhukov/introduce-reusable-workflows
Update workflows to use reusable ones
2022-12-14 09:43:45 +01:00
MaksimZhukov
a3474c6453 Replaced the virtual-environments with the runner-images 2022-12-09 09:24:50 +01:00
MaksimZhukov
70b3a61620 Update workflows to use reusable ones 2022-12-06 18:37:54 +01:00
github-actions[bot]
5d308e3118 Update versions-manifest (#119) 2022-11-17 12:13:17 +01:00
github-actions[bot]
5ae9e2a880 Update versions-manifest (#117)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-10-26 13:57:28 +02:00
Alejandro Oviedo Cruz
85ccf2dd9b Create codeql-analysis.yml (#100) 2022-10-19 11:13:52 +02:00
Mikhail Timofeev
1563799473 Merge pull request #116 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/29/2022
2022-09-29 09:08:34 +03:00
Service account
32e71c3c3b Update versions-manifest 2022-09-29 06:07:04 +00:00
Mikhail Timofeev
edcf67ef40 Merge pull request #115 from actions/update-versions-manifest-file 2022-09-24 11:36:18 +03:00
Service account
72d306dec2 Update versions-manifest 2022-09-24 06:44:51 +00:00
Mikhail Timofeev
7e8f83364e Merge pull request #114 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 09/08/2022
2022-09-08 18:10:01 +03:00
Service account
d065c37c10 Update versions-manifest 2022-09-08 15:08:38 +00:00
Mikhail Timofeev
6f4ddf8c2c Merge pull request #113 from actions/update-versions-manifest-file 2022-08-25 10:05:40 +03:00
Service account
deab417b89 Update versions-manifest 2022-08-25 05:35:18 +00:00
Mikhail Timofeev
46c45cb2bb Merge pull request #112 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 08/22/2022
2022-08-22 12:17:09 +03:00
Service account
80d54cdc81 Update versions-manifest 2022-08-22 05:58:27 +00:00
Mikhail Timofeev
bcd6df9184 Merge pull request #111 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 07/27/2022
2022-07-27 13:42:51 +04:00
Service account
6751014c63 Update versions-manifest 2022-07-27 06:18:18 +00:00
Mikhail Timofeev
fe2adddc4d Merge pull request #110 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 07/14/2022
2022-07-14 10:45:32 +04:00
Service account
4431f5baf6 Update versions-manifest 2022-07-14 06:43:23 +00:00
Mikhail Timofeev
4414c50507 Merge pull request #109 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 07/08/2022
2022-07-08 13:27:19 +04:00
Service account
5dd67ed7f9 Update versions-manifest 2022-07-08 04:05:56 +00:00
Mikhail Timofeev
ec00a6e346 Merge pull request #108 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/16/2022
2022-06-16 19:13:47 +04:00
Service account
6c2489748b Update versions-manifest 2022-06-16 15:11:37 +00:00
Mikhail Timofeev
7ee585b554 Merge pull request #107 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 06/02/2022
2022-06-02 10:30:46 +04:00
Service account
86a16e3fbc Update versions-manifest 2022-06-02 06:28:42 +00:00
Mikhail Timofeev
618e16944c Merge pull request #106 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 05/18/2022
2022-05-18 14:53:19 +04:00
Service account
cc0c4db785 Update versions-manifest 2022-05-18 06:16:30 +00:00
Mikhail Timofeev
dd82515163 Merge pull request #105 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 05/05/2022
2022-05-05 08:20:35 +04:00
Service account
3f418bfd29 Update versions-manifest 2022-05-05 03:36:15 +00:00
Mikhail Timofeev
fd15ad763a Merge pull request #104 from actions/update-versions-manifest-file 2022-05-03 20:39:02 +04:00
Service account
02a74240bb Update versions-manifest 2022-05-03 15:21:52 +00:00
Mikhail Timofeev
9b9e1bad68 Merge pull request #103 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 04/27/2022
2022-04-27 19:12:19 +04:00
Service account
e379f2ee0d Update versions-manifest 2022-04-27 15:11:31 +00:00
Mikhail Timofeev
e6e7799d67 Merge pull request #102 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 04/20/2022
2022-04-20 19:16:22 +04:00
Service account
11f6d8a2de Update versions-manifest 2022-04-20 06:39:56 +00:00
Mikhail Timofeev
b03ec2b334 Merge pull request #101 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 04/06/2022
2022-04-07 00:50:55 +04:00
Service account
41fdef674f Update versions-manifest 2022-04-06 15:53:44 +00:00
Mikhail Timofeev
bb5faa8461 Merge pull request #99 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/19/2022
2022-03-23 18:25:05 +04:00
Service account
914307fdad Update versions-manifest 2022-03-19 03:45:06 +00:00
Ethan Chiu
7a042473f1 Merge pull request #98 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 03/18/2022
2022-03-18 20:37:14 -07:00
Service account
46aed5d195 Update versions-manifest 2022-03-18 15:11:50 +00:00
Mikhail Timofeev
595b4b690a Merge pull request #96 from actions/update-versions-manifest-file 2022-02-09 10:09:39 +03:00
Service account
29a273c108 Update versions-manifest 2022-02-09 07:04:15 +00:00
github-actions[bot]
bb9f13b224 Update versions-manifest (#95)
Co-authored-by: Service account <no-reply@microsoft.com>
2022-02-02 10:45:06 +03:00
Mikhail Timofeev
453a014457 Merge pull request #94 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 02/01/2022
2022-02-01 18:15:22 +03:00
Service account
cf85dc514f Update versions-manifest 2022-02-01 15:07:09 +00:00
Mikhail Timofeev
8acc56fc1b Merge pull request #93 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 01/11/2022
2022-01-11 12:01:20 +03:00
Service account
a034d4c79d Update versions-manifest 2022-01-11 07:26:45 +00:00
github-actions[bot]
7ce0e62855 Update versions-manifest (#92) 2021-12-17 13:38:11 +03:00
github-actions[bot]
ad4c15127c Update versions-manifest (#91)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-12-02 10:49:53 +03:00
github-actions[bot]
e60aab1337 Update versions-manifest (#90) 2021-12-01 12:41:44 +03:00
github-actions[bot]
fff8e8d2e7 Update versions-manifest (#89)
Co-authored-by: Service account <no-reply@microsoft.com>
2021-11-08 14:52:13 +03:00
Mikhail Timofeev
9439938c24 Merge pull request #88 from actions/update-versions-manifest-file
[versions-manifest] Update for release from 10/26/2021
2021-10-26 19:39:32 +03:00
Service account
7efd2b6d9c Update versions-manifest 2021-10-26 16:38:38 +00:00
8 changed files with 1298 additions and 314 deletions

2
.github/CODEOWNERS vendored
View File

@@ -1 +1 @@
* @actions/virtual-environments-owners
* @actions/setup-actions-team

View File

@@ -1,15 +1,17 @@
name: Generate Node.js package
name: Generate Node.js packages
run-name: Generate Node.js ${{ inputs.VERSION || '18.12.0' }}
on:
workflow_dispatch:
inputs:
VERSION:
description: 'Node.js version to build and upload'
required: true
default: '14.2.0'
default: '18.12.0'
PUBLISH_RELEASES:
description: 'Whether to publish releases'
required: true
default: 'false'
type: boolean
default: false
pull_request:
paths-ignore:
- 'versions-manifest.json'
@@ -18,155 +20,12 @@ on:
branches:
- 'main'
env:
VERSION: ${{ github.event.inputs.VERSION || '14.0.0' }}
defaults:
run:
shell: pwsh
jobs:
build_node:
name: Build Node.js ${{ github.event.inputs.VERSION || '14.0.0' }} [${{ matrix.platform }}]
runs-on: ubuntu-latest
env:
ARTIFACT_NAME: node-${{ github.event.inputs.VERSION || '14.0.0' }}-${{ matrix.platform }}-x64
strategy:
fail-fast: false
matrix:
platform: [linux, darwin, win32]
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Build Node.js ${{ env.VERSION }}
run: |
./builders/build-node.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_node:
name: Test Node.js ${{ github.event.inputs.VERSION || '14.0.0' }} [${{ matrix.platform }}]
needs: build_node
runs-on: ${{ matrix.os }}
env:
ARTIFACT_NAME: node-${{ github.event.inputs.VERSION || '14.0.0' }}-${{ 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 "node"
- 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 }}.7z"
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 Node.js ${{ env.VERSION }}
uses: actions/setup-node@v2.1.2
with:
node-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 Node' is not available here yet."
Write-Host "In testing step (Node.Tests.ps1) we analyze build log of 'Setup Node' task"
Write-Host "to determine if Node.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 ./Node.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_node
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: |
Node.js ${{ 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'
});
node:
name: Node
uses: actions/versions-package-tools/.github/workflows/build-tool-packages.yml@main
with:
tool-name: "node"
tool-version: ${{ inputs.VERSION || '18.12.0' }}
publish-release: ${{ inputs.PUBLISH_RELEASES || false }}
secrets: inherit

70
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,70 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ main, master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '31 9 * * 0'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View File

@@ -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/node-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: "node"
secrets: inherit

View File

@@ -4,94 +4,10 @@ on:
- cron: '0 3,15 * * *'
workflow_dispatch:
env:
TOOL_NAME: "Node"
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: success() && 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://nodejs.org/static/images/logo-hexagon-card.png" `
-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 Node packages" workflow
run:
./helpers/github/run-ci-builds.ps1 -RepositoryFullName "$env:GITHUB_REPOSITORY" `
-AccessToken "${{ secrets.PERSONAL_TOKEN }}" `
-WorkflowFileName "build-node-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://nodejs.org/static/images/logo-hexagon-card.png"
get-new-node-versions:
uses: actions/versions-package-tools/.github/workflows/get-new-tool-versions.yml@main
with:
tool-name: "Node"
image-url: "https://nodejs.org/static/images/logo-hexagon-card.png"
secrets: inherit

View File

@@ -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: "Node"
defaults:
run:
shell: pwsh
jobs:
validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Validate node-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 node-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://nodejs.org/static/images/logo-hexagon-card.png"
manifest:
uses: actions/versions-package-tools/.github/workflows/validate-manifest.yml@main
with:
tool-name: "Node"
image-url: "https://nodejs.org/static/images/logo-hexagon-card.png"
secrets: inherit

View File

@@ -1,15 +1,15 @@
# Node.js for Actions
This repository contains the code and scripts that we use to prepare Node.js packages used in [virtual-environments](https://github.com/actions/virtual-environments) and accessible through the [setup-node](https://github.com/actions/setup-node) Action.
This repository contains the code and scripts that we use to prepare Node.js packages used in [runner-images](https://github.com/actions/runner-images) and accessible through the [setup-node](https://github.com/actions/setup-node) Action.
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-node` action.
> Caution: this is prepared for and only permitted for use by actions `runner-images` and `setup-node` action.
**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-node`](https://github.com/actions/setup-node) 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-node`](https://github.com/actions/setup-node) action.
## Adding new versions
We are trying to prepare packages for new versions of Node.js 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.
We are trying to prepare packages for new versions of Node.js 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.
## Contribution
Contributions are welcome! See [Contributor's Guide](./CONTRIBUTING.md) for more details about contribution process and code structure

File diff suppressed because it is too large Load Diff