Update specs #7
Workflow file for this run
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
name: Release Engine | |
on: | |
push: | |
tags: | |
- 'engine.*' | |
env: | |
# GCS_BUCKET is the name of the Google Cloud Storage bucket to which all artifacts are deployed. | |
GCS_BUCKET: mitbattlecode-releases | |
# RELEASE_ARTIFACT_ID is the name of the Maven artifact produced by the buildsystem. | |
# Important: you must make sure no ID is a prefix of a different ID. Otherwise, you could | |
# inadvertently cause unintended episodes to become public. | |
RELEASE_ARTIFACT_ID: battlecode25 | |
# IS_PUBLIC is whether to release deployments publicly. Set to exactly the text "YES" to do so. | |
IS_PUBLIC: NO | |
jobs: | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
steps: | |
- name: Checkout branch | |
uses: actions/checkout@v3 | |
- name: Inject release version | |
run: | | |
release_version=${GITHUB_REF#refs/*/} | |
release_version=${release_version#engine.} | |
echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV | |
echo "The release version is $release_version" | |
- name: Authenticate to Google Cloud Platform | |
uses: google-github-actions/auth@v1 | |
with: | |
create_credentials_file: true | |
workload_identity_provider: projects/830784087321/locations/global/workloadIdentityPools/releases/providers/github-workflow | |
service_account: [email protected] | |
- name: Set up Google Cloud SDK | |
uses: 'google-github-actions/setup-gcloud@v1' | |
- name: Clone private maps | |
if: ${{ env.IS_PUBLIC != 'YES' }} | |
uses: actions/checkout@v3 | |
with: | |
repository: battlecode/private-maps | |
token: ${{ secrets.CI_REPOSITORY_CLONE_PAT }} | |
path: private-maps | |
- name: Inject private maps | |
if: ${{ env.IS_PUBLIC != 'YES' }} | |
run: | | |
source="private-maps/$RELEASE_ARTIFACT_ID" | |
dest="engine/src/main/battlecode/world/resources" | |
if [ -d "$source" ]; then | |
cp -r -i "$source/." "$dest/" < /dev/null &> private-maps-copy-log | |
if [ -s "private-maps-copy-log" ]; then | |
echo "FAILED! Public and private maps should not intersect." | |
cat private-maps-copy-log | |
exit 1 | |
fi | |
fi | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 21 | |
distribution: adopt | |
- name: Publish to local repository | |
run: ./gradlew publishServerPublicationToMavenLocal -Prelease_version=$RELEASE_VERSION -Partifact_id=${RELEASE_ARTIFACT_ID}-java | |
- name: Determine access control | |
run: | | |
[[ "$IS_PUBLIC" = "YES" ]] && acl="public-read" || acl="project-private" | |
echo "OBJECT_ACL=$acl" >> $GITHUB_ENV | |
echo "Objects will be uploaded with ACL $acl" | |
- name: Upload maven artifacts to remote repository | |
run: gsutil -m rsync -a $OBJECT_ACL -r $HOME/.m2/repository/org/battlecode gs://$GCS_BUCKET/maven/org/battlecode | |
- name: Upload javadocs | |
run: | | |
unzip -d ${{ runner.temp }}/javadoc $HOME/.m2/repository/org/battlecode/${RELEASE_ARTIFACT_ID}-java/${RELEASE_VERSION}/*-javadoc.jar | |
gsutil -m rsync -a $OBJECT_ACL -r ${{ runner.temp }}/javadoc gs://$GCS_BUCKET/javadoc/${RELEASE_ARTIFACT_ID}/${RELEASE_VERSION} | |
- name: Upload specs | |
run: gsutil -m rsync -a $OBJECT_ACL -r ./specs gs://$GCS_BUCKET/specs/${RELEASE_ARTIFACT_ID}/$RELEASE_VERSION |