Merge pull request #1563 from actions/robherley/artifact-v4/sha256 #38
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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@v3 | |
- name: Set Node.js 20.x | |
uses: actions/setup-node@v3 | |
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@v6 | |
uses: actions/github-script@v6 | |
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 success = uploadResult.success | |
const size = uploadResult.size | |
const id = uploadResult.id | |
if (!success) { | |
throw new Error('Failed to upload artifact') | |
} else { | |
console.log(`Successfully uploaded artifact ${id}`) | |
} | |
verify: | |
runs-on: ubuntu-latest | |
needs: [build] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set Node.js 20.x | |
uses: actions/setup-node@v3 | |
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@v6 | |
uses: actions/github-script@v6 | |
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') |