# 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 16.x uses: actions/setup-node@v3 with: node-version: 16.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 16.x uses: actions/setup-node@v3 with: node-version: 16.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')