Fix comments

This commit is contained in:
MaksimZhukov 2020-08-24 11:10:43 +03:00
parent 414a9c4d19
commit 1a9656d766
5 changed files with 85 additions and 110 deletions

View File

@ -1,10 +1,9 @@
name: Generate Node.js name: Generate Node.js package
on: on:
# TODO: currently workflow dispatch endpoint does not work. I will investigate
workflow_dispatch: workflow_dispatch:
inputs: inputs:
VERSION: VERSION:
description: 'Node version to build and upload' description: 'Node.js version to build and upload'
required: true required: true
default: '14.2.0' default: '14.2.0'
PUBLISH_RELEASES: PUBLISH_RELEASES:
@ -14,12 +13,13 @@ on:
env: env:
VERSION: ${{ github.event.inputs.VERSION }} VERSION: ${{ github.event.inputs.VERSION }}
ARCHITECTURE: x64
jobs: jobs:
build_node: build_node:
name: Build Node ${{ github.event.inputs.VERSION }} ${{ matrix.platform }} name: Build Node.js ${{ github.event.inputs.VERSION }} [${{ matrix.platform }}]
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
ARTIFACT_NAME: node-${{ github.event.inputs.VERSION }}-${{ matrix.platform }}-x64
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@ -29,59 +29,44 @@ jobs:
with: with:
submodules: true submodules: true
- name: Create artifact directories - name: Build Node.js ${{ env.VERSION }}
run: | shell: pwsh
binariesDirectory=$RUNNER_WORKSPACE/binaries
echo ::set-env name=BINARIES_DIRECTORY::$binariesDirectory
mkdir $binariesDirectory
artifactDirectory=$RUNNER_WORKSPACE/artifact
echo ::set-env name=ARTIFACT_DIRECTORY::$artifactDirectory
mkdir $artifactDirectory
- name: Build Node ${{ env.VERSION }}
run: | run: |
./builders/build-node.ps1 -Version $env:VERSION ` ./builders/build-node.ps1 -Version $env:VERSION `
-Platform ${{ matrix.platform }} ` -Platform ${{ matrix.platform }}
-Architecture $env:ARCHITECTURE
shell: pwsh
- name: Publish artifact - name: Publish artifact
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
name: node-${{ env.VERSION }}-${{ matrix.platform }} name: ${{ env.ARTIFACT_NAME }}
path: /home/runner/work/node-versions/artifact path: ${{ runner.temp }}/artifact
test_node: test_node:
name: Test Node ${{ github.event.inputs.VERSION }} ${{ matrix.platform }} name: Test Node.js ${{ github.event.inputs.VERSION }} [${{ matrix.platform }}]
needs: build_node needs: build_node
runs-on: ${{ matrix.os }}-latest runs-on: ${{ matrix.os }}
defaults:
run:
shell: pwsh
env:
ARTIFACT_NAME: node-${{ github.event.inputs.VERSION }}-${{ matrix.platform }}-x64
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- os: ubuntu - os: ubuntu-latest
platform: linux platform: linux
- os: macos - os: macos-latest
platform: darwin platform: darwin
- os: windows - os: windows-latest
platform: win32 platform: win32
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
submodules: true submodules: true
- name: Set AGENT_TOOLSDIRECTORY variable
if: matrix.platform == 'win32'
run: |
# GitHub Windows images don't have `AGENT_TOOLSDIRECTORY` variable
echo ::set-env name=AGENT_TOOLSDIRECTORY::$RUNNER_TOOL_CACHE
shell: bash
- name: Fully cleanup the toolcache directory before testing - name: Fully cleanup the toolcache directory before testing
run: | run: ./helpers/clean-toolcache.ps1 -ToolName "node"
./helpers/clean-toolcache.ps1 -ToolName "node"
shell: pwsh
- name: Download artifact - name: Download artifact
uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
@ -91,22 +76,20 @@ jobs:
- name: Extract files - name: Extract files
run: | run: |
if ('${{ matrix.platform }}' -eq 'win32') { if ('${{ matrix.platform }}' -eq 'win32') {
$artifactName = "node-${{ env.VERSION }}-${{ matrix.platform }}-${{ env.ARCHITECTURE }}.7z" $artifactName = "${{ env.ARTIFACT_NAME }}.7z"
7z.exe x "$artifactName" -y | Out-Null 7z.exe x "$artifactName" -y | Out-Null
} else { } else {
$artifactName = "node-${{ env.VERSION }}-${{ matrix.platform }}-${{ env.ARCHITECTURE }}.tar.gz" $artifactName = "${{ env.ARTIFACT_NAME }}.tar.gz"
tar -xzf $artifactName tar -xzf $artifactName
} }
working-directory: ${{ runner.temp }}/node-${{ env.VERSION }}-${{ matrix.platform }} working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
shell: pwsh
- name: Apply build artifact to the local machine - name: Apply build artifact to the local machine
run: | run: |
if ('${{ matrix.platform }}' -eq 'win32') { powershell ./setup.ps1 } else { sh ./setup.sh } if ('${{ matrix.platform }}' -eq 'win32') { powershell ./setup.ps1 } else { sh ./setup.sh }
working-directory: ${{ runner.temp }}/node-${{ env.VERSION }}-${{ matrix.platform }} working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
shell: pwsh
- name: Setup node ${{ env.VERSION }} - name: Setup Node.js ${{ env.VERSION }}
uses: actions/setup-node@v2.1.1 uses: actions/setup-node@v2.1.1
with: with:
node-version: ${{ env.VERSION }} node-version: ${{ env.VERSION }}
@ -117,7 +100,7 @@ jobs:
Write-Host "We need it because log of previous step 'Setup Node' is not available here yet." 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 "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" Write-Host "to determine if Node.js version was consumed from cache and was downloaded"
shell: pwsh for ($i = 0; $i -lt 200; $i++) { Get-Random }
- name: Run tests - name: Run tests
run: | run: |
@ -129,18 +112,17 @@ jobs:
Version="$env:VERSION"; Version="$env:VERSION";
} }
} }
Invoke-Pester -Script $pesterParams -EnableExit -OutputFile "test_results.xml" -OutputFormat NUnitXml Invoke-Pester -Script $pesterParams -EnableExit
working-directory: ./tests working-directory: ./tests
shell: pwsh
publish_release: publish_release:
name: Publish release name: Publish release
if: github.event.inputs.PUBLISH_RELEASES == 'true' if: github.event.inputs.PUBLISH_RELEASES == 'true'
needs: test_node needs: test_node
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps: steps:
- uses: actions/download-artifact@v2
- name: Publish Release ${{ env.VERSION }} - name: Publish Release ${{ env.VERSION }}
id: create_release id: create_release
uses: actions/create-release@v1 uses: actions/create-release@v1
@ -150,53 +132,41 @@ jobs:
tag_name: ${{ env.VERSION }}-${{ github.run_id }} tag_name: ${{ env.VERSION }}-${{ github.run_id }}
release_name: ${{ env.VERSION }} release_name: ${{ env.VERSION }}
body: | body: |
Upload Node.js ${{ env.VERSION }} Node.js ${{ env.VERSION }}
upload_assets: - name: Upload release assets
name: Upload assets for ${{ matrix.platform }} 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 needs: publish_release
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
UPLOAD_URL: ${{ needs.publish_release.outputs.upload_url }}
strategy:
matrix:
extension: ['tar.gz']
platform: [linux, darwin]
include:
- platform: win32
extension: 7z
steps: steps:
- uses: actions/download-artifact@v2
with:
name: node-${{ env.VERSION }}-${{ matrix.platform }}
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ./node-${{ env.VERSION }}-${{ matrix.platform }}-${{ env.ARCHITECTURE }}.${{ matrix.extension }}
asset_name: node-${{ env.VERSION }}-${{ matrix.platform }}-${{ env.ARCHITECTURE }}.${{ matrix.extension }}
asset_content_type: application/zip
create_pr:
name: Create Pull Request
needs: upload_assets
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Trigger "Create Pull Request" workflow - name: Trigger "Create Pull Request" workflow
uses: actions/github-script@v2 uses: actions/github-script@v3
with: with:
github-token: ${{ secrets.PERSONAL_TOKEN }} github-token: ${{ secrets.PERSONAL_TOKEN }}
script: | script: |
# TODO: currently 'actions.createWorkflowDispatch' function does not work. I will investigate github.actions.createWorkflowDispatch({
github.repos.createDispatchEvent({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
event_type: 'create-pr' workflow_id: 'create-pr.yml',
ref: 'main'
}); });

View File

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

View File

@ -28,6 +28,14 @@ param(
Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "nix-helpers.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "nix-helpers.psm1") -DisableNameChecking
Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "win-helpers.psm1") -DisableNameChecking Import-Module (Join-Path $PSScriptRoot "../helpers" | Join-Path -ChildPath "win-helpers.psm1") -DisableNameChecking
function Create-ArtifactDirectories {
$env:BINARIES_DIRECTORY = Join-Path $env:RUNNER_TEMP "binaries"
New-Item -Path $env:BINARIES_DIRECTORY -ItemType "directory"
$env:ARTIFACT_DIRECTORY = Join-Path $env:RUNNER_TEMP "artifact"
New-Item -Path $env:ARTIFACT_DIRECTORY -ItemType "directory"
}
function Get-NodeBuilder { function Get-NodeBuilder {
<# <#
.SYNOPSIS .SYNOPSIS
@ -66,6 +74,8 @@ function Get-NodeBuilder {
return $builder return $builder
} }
Create-ArtifactDirectories
### Create Node.js builder instance, and build artifact ### Create Node.js builder instance, and build artifact
$Builder = Get-NodeBuilder -Version $Version -Platform $Platform -Architecture $Architecture $Builder = Get-NodeBuilder -Version $Version -Platform $Platform -Architecture $Architecture
$Builder.Build() $Builder.Build()

View File

@ -16,10 +16,13 @@ class NodeBuilder {
The architecture with which Node.js should be built. The architecture with which Node.js should be built.
.PARAMETER TempFolderLocation .PARAMETER TempFolderLocation
The location of temporary files that will be used during Node.js package generation. Using system BUILD_STAGINGDIRECTORY variable value. The location of temporary files that will be used during Node.js package generation.
.PARAMETER ArtifactLocation .PARAMETER WorkFolderLocation
The location of generated Node.js artifact. Using system environment BUILD_BINARIESDIRECTORY variable value. The location of installation files. Using environment BINARIES_DIRECTORY variable value.
.PARAMETER ArtifactFolderLocation
The location of generated Node.js artifact. Using environment ARTIFACT_DIRECTORY variable value.
.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.

View File

@ -6,12 +6,8 @@ param (
Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1") Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
function Get-UseNodeLogs { function Get-UseNodeLogs {
$homeDir = $env:HOME
if ([string]::IsNullOrEmpty($homeDir)) {
# GitHub Windows images don't have `HOME` variable # GitHub Windows images don't have `HOME` variable
$homeDir = $env:HOMEDRIVE $homeDir = $env:HOME ?? $env:HOMEDRIVE
}
$logsFolderPath = Join-Path -Path $homeDir -ChildPath "runners/*/_diag/pages" -Resolve $logsFolderPath = Join-Path -Path $homeDir -ChildPath "runners/*/_diag/pages" -Resolve
$useNodeLogFile = Get-ChildItem -Path $logsFolderPath | Where-Object { $useNodeLogFile = Get-ChildItem -Path $logsFolderPath | Where-Object {
@ -34,7 +30,10 @@ Describe "Node.js" {
It "is used from tool-cache" { It "is used from tool-cache" {
$nodePath = (Get-Command "node").Path $nodePath = (Get-Command "node").Path
$nodePath | Should -Not -BeNullOrEmpty $nodePath | Should -Not -BeNullOrEmpty
$expectedPath = Join-Path -Path $env:AGENT_TOOLSDIRECTORY -ChildPath "node"
# GitHub Windows images don't have `AGENT_TOOLSDIRECTORY` variable
$toolcacheDir = $env:AGENT_TOOLSDIRECTORY ?? $env:RUNNER_TOOL_CACHE
$expectedPath = Join-Path -Path $toolcacheDir -ChildPath "node"
$nodePath.startsWith($expectedPath) | Should -BeTrue -Because "'$nodePath' is not started with '$expectedPath'" $nodePath.startsWith($expectedPath) | Should -BeTrue -Because "'$nodePath' is not started with '$expectedPath'"
} }