mirror of https://github.com/actions/toolkit
131 lines
4.1 KiB
YAML
131 lines
4.1 KiB
YAML
# Temporarily disabled while v2.0.0 of @actions/artifact is under development
|
|
|
|
name: artifact-unit-tests
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- '**.md'
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**.md'
|
|
|
|
jobs:
|
|
build:
|
|
name: Build
|
|
|
|
strategy:
|
|
matrix:
|
|
runs-on: [ubuntu-latest, windows-latest, macos-latest]
|
|
fail-fast: false
|
|
|
|
runs-on: ${{ matrix.runs-on }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set Node.js 20.x
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20.x
|
|
|
|
# Need root node_modules because certain npm packages like jest are configured for the entire repository and it won't be possible
|
|
# without these to just compile the artifacts package
|
|
- name: Install root npm packages
|
|
run: npm ci
|
|
|
|
- name: Compile artifact package
|
|
run: |
|
|
npm ci
|
|
npm run tsc
|
|
working-directory: packages/artifact
|
|
|
|
- name: Set artifact file contents
|
|
shell: bash
|
|
run: |
|
|
echo "file1=hello from file 1" >> $GITHUB_ENV
|
|
echo "file2=hello from file 2" >> $GITHUB_ENV
|
|
|
|
- name: Create files that will be uploaded
|
|
run: |
|
|
mkdir artifact-path
|
|
echo '${{ env.file1 }}' > artifact-path/first.txt
|
|
echo '${{ env.file2 }}' > artifact-path/second.txt
|
|
|
|
- name: Upload Artifacts using actions/github-script@v7
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const artifact = require('./packages/artifact/lib/artifact')
|
|
|
|
const artifactName = 'my-artifact-${{ matrix.runs-on }}'
|
|
console.log('artifactName: ' + artifactName)
|
|
|
|
const fileContents = ['artifact-path/first.txt','artifact-path/second.txt']
|
|
|
|
const uploadResult = await artifact.create().uploadArtifact(artifactName, fileContents, './')
|
|
console.log(uploadResult)
|
|
|
|
const size = uploadResult.size
|
|
const id = uploadResult.id
|
|
|
|
console.log(`Successfully uploaded artifact ${id}`)
|
|
|
|
verify:
|
|
runs-on: ubuntu-latest
|
|
needs: [build]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set Node.js 20.x
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20.x
|
|
|
|
# Need root node_modules because certain npm packages like jest are configured for the entire repository and it won't be possible
|
|
# without these to just compile the artifacts package
|
|
- name: Install root npm packages
|
|
run: npm ci
|
|
|
|
- name: Compile artifact package
|
|
run: |
|
|
npm ci
|
|
npm run tsc
|
|
working-directory: packages/artifact
|
|
|
|
- name: List artifacts using actions/github-script@v7
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const artifact = require('./packages/artifact/lib/artifact')
|
|
|
|
const workflowRunId = process.env.GITHUB_RUN_ID
|
|
const repository = process.env.GITHUB_REPOSITORY
|
|
const repositoryOwner = repository.split('/')[0]
|
|
const repositoryName = repository.split('/')[1]
|
|
|
|
const listResult = await artifact.create().listArtifacts(workflowRunId, repositoryOwner, repositoryName, '${{ secrets.GITHUB_TOKEN }}')
|
|
console.log(listResult)
|
|
|
|
const artifacts = listResult.artifacts
|
|
|
|
if (artifacts.length !== 3) {
|
|
throw new Error('Expected 3 artifacts but only found ' + artifacts.length + ' artifacts')
|
|
}
|
|
|
|
const artifactNames = artifacts.map(artifact => artifact.name)
|
|
if (!artifactNames.includes('my-artifact-ubuntu-latest')){
|
|
throw new Error("Expected artifact list to contain an artifact named my-artifact-ubuntu-latest but it's missing")
|
|
}
|
|
if (!artifactNames.includes('my-artifact-windows-latest')){
|
|
throw new Error("Expected artifact list to contain an artifact named my-artifact-windows-latest but it's missing")
|
|
}
|
|
if (!artifactNames.includes('my-artifact-macos-latest')){
|
|
throw new Error("Expected artifact list to contain an artifact named my-artifact-macos-latest but it's missing")
|
|
}
|
|
|
|
console.log('Successfully listed artifacts that were uploaded')
|