diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 27b538aa..7b52d8a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,6 +23,56 @@ jobs: python3 delete_old_bintray_versions.py -g loot/libloot -b loot/snapshots/libloot -u wrinklyninja -k ${{ secrets.BINTRAY_API_KEY }} -t ${{ secrets.GITHUB_TOKEN }} -n 30 if: github.event_name == 'push' + # Publish to Artifactory as a separate job that runs after the build jobs + # because we must first clean out any existing artifacts for this Git ref, + # and we don't want to do that as a pre-build step in case the build fails + # and we're left with no artifacts published. + publish-to-artifactory: + runs-on: ubuntu-18.04 + needs: [linux, windows] + if: github.event_name == 'push' + + steps: + - name: Clean up artifacts on Artifactory + run: | + curl -sfSLO 'https://raw.githubusercontent.com/Ortham/ci-scripts/2.2.0/remove_old_artifactory_files.py' + + python3 remove_old_artifactory_files.py \ + --artifactory-host loot.jfrog.io \ + --artifactory-api-key ${{ secrets.ARTIFACTORY_API_KEY }} \ + --artifactory-repository libloot \ + --current-branch "${GITHUB_REF#refs/*/}" \ + --github-repository loot/libloot \ + --github-token ${{ secrets.GITHUB_TOKEN }} + + - name: Create empty directory for artifacts + run: | + rm -rf downloaded_artifacts + mkdir downloaded_artifacts + + - name: Download all artifacts for this workflow from GitHub Actions + uses: actions/download-artifact@v2 + with: + path: downloaded_artifacts + + - name: Publish artifacts to Artifactory + shell: bash + run: | + curl -sfSLO 'https://raw.githubusercontent.com/Ortham/ci-scripts/2.2.0/percent_encode.py' + + PERCENT_ENCODED_GIT_REF_NAME=$(python3 percent_encode.py "${GITHUB_REF#refs/*/}") + + for ARTIFACT_DIRECTORY in downloaded_artifacts/* + do + ARTIFACT_NAME="${ARTIFACT_DIRECTORY#downloaded_artifacts/}" + PERCENT_ENCODED_ARTIFACT_NAME=$(python3 percent_encode.py "$ARTIFACT_NAME") + curl -sSfL \ + -X PUT \ + -T "$ARTIFACT_DIRECTORY/$ARTIFACT_NAME" \ + -H "X-JFrog-Art-Api: ${{ secrets.ARTIFACTORY_API_KEY }}" \ + "https://loot.jfrog.io/artifactory/libloot/${PERCENT_ENCODED_GIT_REF_NAME}/$PERCENT_ENCODED_ARTIFACT_NAME" + done + linux: runs-on: ubuntu-18.04